Hướng dẫn về tác vụ nhận dạng cử chỉ

Với nhiệm vụ Trình nhận dạng cử chỉ MediaPipe, bạn có thể nhận dạng các cử chỉ của tay theo thời gian thực và cung cấp kết quả cử chỉ tay được nhận dạng cùng với các mốc đã phát hiện thấy bàn tay nào. Bạn có thể dùng nhiệm vụ này để nhận dạng một số cử chỉ tay trên người dùng và gọi các tính năng của ứng dụng tương ứng với các cử chỉ đó.

Nhiệm vụ này hoạt động dựa trên dữ liệu hình ảnh bằng mô hình học máy (ML) và chấp nhận dữ liệu tĩnh hoặc luồng liên tục. Tác vụ sẽ xuất ra các mốc kim trong toạ độ hình ảnh, địa danh hình bàn tay trên toạ độ thế giới, tay thuận (tay trái/phải) và các loại cử chỉ tay của nhiều tay.

Hãy trải nghiệm thử!

Bắt đầu

Bắt đầu sử dụng tác vụ này bằng cách làm theo một trong những hướng dẫn triển khai sau cho nền tảng mục tiêu. Những hướng dẫn dành riêng cho nền tảng này sẽ hướng dẫn bạn từng bước triển khai tác vụ này, bằng cách sử dụng mô hình được đề xuất và cung cấp mã ví dụ với các chế độ cấu hình được đề xuất:

Thông tin chi tiết về việc cần làm

Phần này mô tả các chức năng, dữ liệu đầu vào, đầu ra và cấu hình các tuỳ chọn của nhiệm vụ này.

Tính năng

  • Xử lý hình ảnh đầu vào – Quá trình xử lý bao gồm xoay, đổi kích thước hình ảnh, chuẩn hoá và chuyển đổi hệ màu.
  • Ngưỡng điểm số – Lọc kết quả dựa trên điểm số dự đoán.
  • Danh sách nhãn cho phép và danh sách từ chối – Chỉ định các danh mục cử chỉ được mô hình nhận dạng.
Dữ liệu đầu vào của việc cần làm Kết quả đầu ra của việc cần làm
Trình nhận dạng cử chỉ chấp nhận dữ liệu đầu vào của một trong các loại dữ liệu sau:
  • Hình ảnh tĩnh
  • Khung video đã được giải mã
  • Trang video trực tiếp
Trình nhận dạng cử chỉ sẽ cho ra các kết quả sau:
  • Danh mục cử chỉ tay
  • Tay của bàn tay phát hiện được
  • Địa danh có bàn tay được phát hiện trong toạ độ hình ảnh
  • Địa danh có bàn tay được phát hiện trên các toạ độ trên thế giới

Tuỳ chọn cấu hình

Tác vụ này có các lựa chọn cấu hình sau:

Tên lựa chọn Mô tả Khoảng giá trị Giá trị mặc định
running_mode Thiết lập chế độ chạy cho tác vụ. Có ba chế độ:

HÌNH ẢNH: Chế độ cho đầu vào một hình ảnh.

VIDEO: Chế độ cho các khung đã giải mã của video.

LIVE_STREAM: Chế độ phát trực tiếp đầu vào chẳng hạn như từ máy ảnh. Trong chế độ này, ResultsListener phải là để thiết lập trình nghe để nhận kết quả một cách không đồng bộ.
{IMAGE, VIDEO, LIVE_STREAM} IMAGE
num_hands Số lượng tay tối đa có thể phát hiện bằng GestureRecognizer. Any integer > 0 1
min_hand_detection_confidence Điểm tin cậy tối thiểu để phát hiện tay được coi là thành công trong mô hình phát hiện tì tay. 0.0 - 1.0 0.5
min_hand_presence_confidence Điểm số tin cậy tối thiểu về điểm số có mặt trên tay mô hình phát hiện mốc. Ở chế độ Video và chế độ phát trực tiếp của Trình nhận dạng cử chỉ, nếu điểm số tự tin về sự hiện diện của bàn tay từ mô hình điểm mốc bàn tay ở bên dưới ngưỡng này, nó sẽ kích hoạt mô hình phát hiện tì tay. Nếu không, một thuật toán theo dõi cử chỉ tay nhẹ được dùng để xác định vị trí của tay để phát hiện mốc tiếp theo. 0.0 - 1.0 0.5
min_tracking_confidence Điểm tin cậy tối thiểu để tính năng theo dõi cử chỉ tay được xem xét thành công. Đây là ngưỡng IoU hộp giới hạn giữa các tay trong khung hiện tại và khung cuối cùng. Ở chế độ Video và chế độ Phát trực tuyến của Trình nhận dạng cử chỉ sẽ kích hoạt tay nếu theo dõi không thành công của bạn. Nếu không, tính năng phát hiện tay sẽ bị bỏ qua. 0.0 - 1.0 0.5
canned_gestures_classifier_options Các tuỳ chọn để định cấu hình hành vi của thuật toán phân loại cử chỉ soạn trước. Các cử chỉ soạn trước là ["None", "Closed_Fist", "Open_Palm", "Pointing_Up", "Thumb_Down", "Thumb_Up", "Victory", "ILoveYou"]
  • Ngôn ngữ của tên hiển thị: ngôn ngữ dùng cho tên hiển thị được chỉ định thông qua Siêu dữ liệu mô hình TFLite, nếu có.
  • Kết quả tối đa: số lượng kết quả phân loại có điểm số cao nhất tối đa cần trả về. Nếu < 0, tất cả kết quả có sẵn sẽ được trả về.
  • Ngưỡng điểm số: điểm số thấp hơn kết quả bị từ chối. Nếu bạn đặt thành 0, hệ thống sẽ trả về tất cả kết quả có sẵn.
  • Danh mục danh mục cho phép: danh sách cho phép chứa tên danh mục. Nếu không để trống, các kết quả phân loại có danh mục không nằm trong tập hợp này sẽ bị lọc ra. Loại trừ lẫn nhau với danh sách từ chối.
  • Danh sách từ chối danh mục: danh sách từ chối tên danh mục. Nếu không để trống, các kết quả phân loại có danh mục nằm trong tập hợp này sẽ bị lọc ra. Loại trừ lẫn nhau với danh sách cho phép.
    • Ngôn ngữ của tên hiển thị: any string
    • Số kết quả tối đa: any integer
    • Ngưỡng điểm số: 0.0-1.0
    • Danh mục cho phép: vector of strings
    • Danh sách từ chối danh mục: vector of strings
    • Ngôn ngữ của tên hiển thị: "en"
    • Số kết quả tối đa: -1
    • Ngưỡng điểm số: 0
    • Danh mục danh mục cho phép: trống
    • Danh sách từ chối danh mục: trống
    custom_gestures_classifier_options Các tuỳ chọn để định cấu hình hành vi của thuật toán phân loại cử chỉ tuỳ chỉnh.
  • Ngôn ngữ của tên hiển thị: ngôn ngữ dùng cho tên hiển thị được chỉ định thông qua Siêu dữ liệu mô hình TFLite, nếu có.
  • Kết quả tối đa: số lượng kết quả phân loại có điểm số cao nhất tối đa cần trả về. Nếu < 0, tất cả kết quả có sẵn sẽ được trả về.
  • Ngưỡng điểm số: điểm số thấp hơn kết quả bị từ chối. Nếu bạn đặt thành 0, hệ thống sẽ trả về tất cả kết quả có sẵn.
  • Danh mục danh mục cho phép: danh sách cho phép chứa tên danh mục. Nếu không để trống, các kết quả phân loại có danh mục không nằm trong tập hợp này sẽ bị lọc ra. Loại trừ lẫn nhau với danh sách từ chối.
  • Danh sách từ chối danh mục: danh sách từ chối tên danh mục. Nếu không để trống, các kết quả phân loại có danh mục nằm trong tập hợp này sẽ bị lọc ra. Loại trừ lẫn nhau với danh sách cho phép.
    • Ngôn ngữ của tên hiển thị: any string
    • Số kết quả tối đa: any integer
    • Ngưỡng điểm số: 0.0-1.0
    • Danh mục cho phép: vector of strings
    • Danh sách từ chối danh mục: vector of strings
    • Ngôn ngữ của tên hiển thị: "en"
    • Số kết quả tối đa: -1
    • Ngưỡng điểm số: 0
    • Danh mục danh mục cho phép: trống
    • Danh sách từ chối danh mục: trống
    result_callback Thiết lập trình nghe kết quả để nhận kết quả phân loại không đồng bộ khi trình nhận dạng cử chỉ đang ở chế độ phát trực tiếp. Chỉ sử dụng được khi bạn đặt chế độ chạy thành LIVE_STREAM ResultListener Không áp dụng Không áp dụng

    Mô hình

    Trình nhận dạng cử chỉ sử dụng một gói mô hình với hai gói mô hình được đóng gói sẵn: một gói mô hình điểm mốc bằng tay và gói mô hình phân loại cử chỉ. Chiến lược phát hành đĩa đơn mô hình điểm mốc phát hiện sự hiện diện của bàn tay và hình học bàn tay cũng như cử chỉ mô hình nhận dạng nhận dạng cử chỉ dựa trên hình học bàn tay.

    Tên mẫu thiết bị Hình dạng đầu vào Loại định lượng Thẻ mô hình Phiên bản
    HandGestureClassifier 192 x 192, 224 x 224 số thực dấu phẩy động 16 thông tin Mới nhất

    Tác vụ này cũng hỗ trợ sửa đổi gói mô hình bằng cách sử dụng Model Maker. Để biết thêm thông tin về cách sử dụng Model Maker nhằm tuỳ chỉnh mô hình cho nhiệm vụ này, xem trang Tùy chỉnh các mô hình cho Trình nhận dạng cử chỉ.

    Gói mô hình điểm mốc trên bàn tay

    Gói mô hình mốc tay phát hiện nội dung bản địa hoá điểm khoá của 21 cử chỉ tay toạ độ trong vùng tay được phát hiện. Mô hình này đã được huấn luyện bằng khoảng 30K hình ảnh thực tế, cũng như một số bàn tay tổng hợp được kết xuất mô hình đặt ra trên nhiều nền tảng. Xem định nghĩa về 21 địa danh dưới đây:

    Gói mô hình biểu tượng bằng tay chứa mô hình phát hiện tì tay và mô hình phát hiện dấu mốc trên tay. Mô hình phát hiện tì tay giúp bản địa hoá khu vực của bàn tay của bạn từ toàn bộ hình ảnh đầu vào và mô hình phát hiện dấu mốc bàn tay sẽ tìm ra các điểm mốc trên hình ảnh bàn tay bị cắt được xác định bằng mô hình phát hiện tì tay.

    Vì mô hình phát hiện tì tay mất nhiều thời gian hơn nhiều khi ở Chế độ video hoặc Trực tiếp chế độ phát trực tuyến, Trình nhận dạng cử chỉ sử dụng hộp giới hạn do bàn tay phát hiện xác định các địa danh trong khung hiện tại để bản địa hoá khu vực của bàn tay trong khung. Điều này giúp giảm số lần Trình nhận dạng cử chỉ kích hoạt mô hình phát hiện tì tay. Chỉ khi mô hình điểm mốc bằng tay không còn có thể xác định đủ cần thiết nữa số bàn tay có mặt hoặc không theo dõi được cử chỉ tay, mô hình phát hiện tì tay là được gọi để định vị lại bàn tay.

    Gói mô hình phân loại cử chỉ

    Gói mô hình Phân loại bằng cử chỉ có thể nhận ra các cử chỉ tay phổ biến sau:

    0 - Unrecognized gesture, label: Unknown
    1 - Closed fist, label: Closed_Fist
    2 - Open palm, label: Open_Palm
    3 - Pointing up, label: Pointing_Up
    4 - Thumbs down, label: Thumb_Down
    5 - Thumbs up, label: Thumb_Up
    6 - Victory, label: Victory
    7 - Love, label: ILoveYou
    

    Nếu mô hình phát hiện thấy bàn tay nhưng không nhận ra cử chỉ, thì cử chỉ đó trình nhận dạng trả về kết quả là "Không có". Nếu mô hình không phát hiện thấy bàn tay, thì trình nhận dạng cử chỉ trả về kết quả trống.

    Gói mô hình phân loại cử chỉ chứa quy trình mạng nơron 2 bước với một mô hình nhúng bằng cử chỉ, rồi đến một mô hình phân loại cử chỉ. Xem thêm thông tin chi tiết trong thẻ Mô hình phân loại cử chỉ.

    Mô hình nhúng cử chỉ mã hoá các đặc điểm hình ảnh thành một vectơ đối tượng, và thì mô hình phân loại là một thuật toán phân loại cử chỉ đơn giản, sử dụng tính năng làm dữ liệu đầu vào. Gói mô hình phân loại cử chỉ được cung cấp chứa thuật toán phân loại cử chỉ soạn trước, giúp phát hiện 7 cử chỉ tay phổ biến được giới thiệu ở trên. Bạn có thể mở rộng gói mô hình để nhận ra nhiều cử chỉ hơn bằng cách huấn luyện thuật toán phân loại cử chỉ tuỳ chỉnh của riêng bạn. Xem thêm thông tin chi tiết trong phần sau Mô hình tuỳ chỉnh.

    Trình nhận dạng cử chỉ với cả thuật toán phân loại cử chỉ soạn trước và thuật toán phân loại cử chỉ tuỳ chỉnh ưu tiên cử chỉ tuỳ chỉnh nếu cả hai thuật toán phân loại đều nhận ra cùng một cử chỉ trong danh mục của họ. Nếu chỉ có một thuật toán phân loại cử chỉ nhận ra cử chỉ, Trình nhận dạng cử chỉ sẽ trực tiếp xuất ra cử chỉ đã được nhận dạng.

    Điểm chuẩn của việc cần làm

    Sau đây là điểm chuẩn cho toàn bộ quy trình dựa trên những thông tin nêu trên các mô hình được huấn luyện trước. Kết quả về độ trễ là độ trễ trung bình trên Pixel 6 sử dụng CPU / GPU.

    Tên mô hình Độ trễ của CPU Độ trễ của GPU
    GestureRecognizer 16,76 mili giây 20,87 mili giây

    Mô hình tuỳ chỉnh

    Nếu bạn muốn cải thiện hoặc thay đổi khả năng của các mô hình được cung cấp trong công việc, bạn có thể sử dụng Model Maker để sửa đổi mô hình hiện có. Mô hình tuỳ chỉnh được sử dụng với MediaPipe phải ở định dạng .task, đây là tệp gói mô hình. Bạn nên cân nhắc sử dụng Model Maker để sửa đổi các mô hình được cung cấp cho nhiệm vụ này trước khi xây dựng trò chơi của riêng bạn.

    Để biết thêm thông tin về cách tuỳ chỉnh một mô hình cho nhiệm vụ này, hãy xem Tuỳ chỉnh các mô hình cho Trình nhận dạng cử chỉ.