Tác vụ Trình nhận dạng cử chỉ của MediaPipe cho phép bạn nhận dạng cử chỉ tay theo thời gian thực và cung cấp kết quả nhận dạng cử chỉ tay cùng với các điểm đánh dấu của bàn tay được phát hiện. Bạn có thể sử dụng tác vụ này để nhận dạng các cử chỉ tay cụ thể từ người dùng và gọi các tính năng ứng dụng tương ứng với những cử chỉ đó.
Tác vụ này hoạt động trên dữ liệu hình ảnh bằng một 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ụ này xuất các điểm đánh dấu bàn tay theo toạ độ hình ảnh, các điểm đánh dấu bàn tay theo toạ độ thế giới, tay thuận (tay trái/tay phải) và danh mục cử chỉ tay của nhiều bàn tay.
Bắt đầu
Bắt đầu sử dụng tác vụ này bằng cách làm theo một trong các hướng dẫn triển khai sau đây cho nền tảng nhắm mục tiêu của bạn. Các hướng dẫn dành riêng cho từng nền tảng này sẽ hướng dẫn bạn cách triển khai cơ bản nhiệm vụ này bằng cách sử dụng một mô hình được đề xuất, đồng thời cung cấp các ví dụ về mã với các lựa chọn cấu hình được đề xuất:
- Android – Ví dụ về mã
- Python – Ví dụ về mã
- Web – [Ví dụ về mã](https://github.com/google-ai-edge/mediapipe-samples-web/blob/main/src/tasks/gesture-recognizer.ts – Hướng dẫn
Chi tiết về việc cần làm
Phần này mô tả các chức năng, thông tin đầu vào, đầu ra và lựa chọn cấu hình của tác 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, chuẩn hoá hình ảnh và chuyển đổi không gian màu.
- Ngưỡng điểm – Lọc kết quả dựa trên điểm dự đoán.
- Danh sách cho phép và danh sách từ chối nhãn – Chỉ định các danh mục cử chỉ mà mô hình nhận dạng.
| Giá trị đầu vào của việc cần làm | Đầu ra của tác vụ |
|---|---|
Gesture Recognizer chấp nhận dữ liệu đầu vào thuộc một trong các loại dữ liệu sau:
|
Gesture Recognizer sẽ xuất ra các kết quả sau:
|
Các lựa chọn về cấu hình
Tác vụ này có các lựa chọn cấu hình sau:
| Tên tuỳ chọn | Mô tả | Phạm vi giá trị | Giá trị mặc định | |
|---|---|---|---|---|
running_mode |
Đặt chế độ chạy cho tác vụ. Có 3 chế độ: HÌNH ẢNH: Chế độ dành cho dữ liệu đầu vào là một hình ảnh. VIDEO: Chế độ cho các khung hình đã giải mã của video. LIVE_STREAM: Chế độ phát trực tiếp dữ liệu đầu vào, chẳng hạn như từ camera. Ở chế độ này, bạn phải gọi resultListener để thiết lập một trình nghe nhằm nhận kết quả một cách không đồng bộ. |
{IMAGE, VIDEO, LIVE_STREAM} |
IMAGE |
|
num_hands |
GestureRecognizer có thể phát hiện tối đa số lượng bàn tay.
|
Any integer > 0 |
1 |
|
min_hand_detection_confidence |
Điểm tin cậy tối thiểu để quá trình phát hiện bàn tay được coi là thành công trong mô hình phát hiện lòng bàn tay. | 0.0 - 1.0 |
0.5 |
|
min_hand_presence_confidence |
Điểm số tin cậy tối thiểu của điểm số hiện diện của bàn tay trong mô hình phát hiện điểm đánh dấu bàn tay. Ở chế độ Video và chế độ Phát trực tiếp của Gesture Recognizer, nếu điểm số độ tin cậy về sự hiện diện của bàn tay từ mô hình điểm đánh dấu bàn tay thấp hơn ngưỡng này, thì mô hình phát hiện lòng bàn tay sẽ được kích hoạt. Nếu không, một thuật toán theo dõi cử động của tay đơn giản sẽ được dùng để xác định vị trí của(các) bàn tay nhằm phát hiện các điểm 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ử động của tay được coi là thành công. Đây là ngưỡng IoU của khung giới hạn giữa các bàn tay trong khung hình hiện tại và khung hình cuối cùng. Ở chế độ Video và chế độ Phát trực tiếp của Trình nhận dạng cử chỉ, nếu quá trình theo dõi không thành công, Trình nhận dạng cử chỉ sẽ kích hoạt tính năng phát hiện bàn tay. Nếu không, quá trình phát hiện bàn tay sẽ bị bỏ qua. | 0.0 - 1.0 |
0.5 |
|
canned_gestures_classifier_options |
Các lựa chọn để định cấu hình hành vi của trình phân loại cử chỉ được tạo sẵn. Các cử chỉ soạn sẵn là ["None", "Closed_Fist", "Open_Palm", "Pointing_Up", "Thumb_Down", "Thumb_Up", "Victory", "ILoveYou"] |
|
|
|
custom_gestures_classifier_options |
Các lựa chọn để định cấu hình hành vi của trình phân loại cử chỉ tuỳ chỉnh. |
|
|
|
result_callback |
Đặt trình nghe kết quả để nhận kết quả phân loại một cách không đồng bộ khi trình nhận dạng cử chỉ ở chế độ phát trực tiếp.
Chỉ có thể dùng khi chế độ chạy được đặt thành LIVE_STREAM |
ResultListener |
Không áp dụng | Không áp dụng |
Mô hình
Gesture Recognizer sử dụng một gói mô hình với 2 gói mô hình được đóng gói sẵn: một gói mô hình điểm đánh dấu trên bàn tay và một gói mô hình phân loại cử chỉ. Mô hình điểm mốc phát hiện sự hiện diện của bàn tay và hình dạng bàn tay, còn mô hình nhận dạng cử chỉ nhận dạng cử chỉ dựa trên hình dạng bàn tay.
| Tên mô hình | Hình dạng đầu vào | Loại lượng tử hoá | Thẻ mô hình | Phiên bản |
|---|---|---|---|---|
| HandGestureClassifier | 192 x 192, 224 x 224 | float 16 | info | Mới nhất |
Tác vụ này cũng hỗ trợ việc sửa đổi gói mô hình bằng Model Maker. Để biết thêm thông tin về cách sử dụng Model Maker để tuỳ chỉnh các mô hình cho tác vụ này, hãy xem trang Tuỳ chỉnh các mô hình cho Gesture Recognizer.
Gói mô hình điểm đánh dấu trên bàn tay
Gói mô hình điểm mốc bàn tay phát hiện quá trình bản địa hoá điểm chính của 21 toạ độ khớp ngón tay trong các vùng bàn tay được phát hiện. Mô hình này được huấn luyện trên khoảng 30.000 hình ảnh thực tế, cũng như một số mô hình bàn tay nhân tạo được kết xuất đặt trên nhiều phông nền. Xem định nghĩa về 21 điểm mốc bên dưới:

Gói mô hình công cụ đánh dấu điểm trên bàn tay chứa mô hình phát hiện lòng bàn tay và mô hình phát hiện điểm đánh dấu trên bàn tay. Mô hình phát hiện lòng bàn tay sẽ bản địa hoá vùng bàn tay từ toàn bộ hình ảnh đầu vào, còn mô hình phát hiện điểm đánh dấu bàn tay sẽ tìm các điểm đánh dấu trên hình ảnh bàn tay đã cắt do mô hình phát hiện lòng bàn tay xác định.
Vì mô hình phát hiện lòng bàn tay tốn nhiều thời gian hơn, nên ở chế độ Video hoặc chế độ Phát trực tiếp, Gesture Recognizer sẽ dùng khung hình chữ nhật do các điểm đánh dấu bàn tay được phát hiện xác định trong khung hình hiện tại để bản địa hoá vùng bàn tay trong khung hình tiếp theo. Đ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 lòng bàn tay. Chỉ khi mô hình điểm đánh dấu bàn tay không thể xác định đủ số lượng bàn tay cần thiết hoặc tính năng theo dõi cử động của tay không hoạt động, mô hình phát hiện lòng bàn tay sẽ đượ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 cử chỉ có thể nhận dạng những 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 dạng được cử chỉ, thì trình nhận dạng cử chỉ sẽ trả về kết quả "None" (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ỉ sẽ trả về giá trị trống.
Gói mô hình phân loại cử chỉ chứa quy trình gồm 2 bước của mạng nơ-ron với một mô hình nhúng cử chỉ, sau đó là 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ơ đặc điểm và mô hình phân loại là một bộ phân loại cử chỉ đơn giản nhận vectơ đặc điểm 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 trình phân loại cử chỉ có sẵn, 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 dạng nhiều cử chỉ hơn bằng cách huấn luyện trình phân loại cử chỉ tuỳ chỉnh của riêng mình. Hãy xem thêm thông tin chi tiết trong phần Mô hình tuỳ chỉnh sau đây.
Gesture Recognizer (Trình nhận dạng cử chỉ) có cả trình phân loại cử chỉ được tạo sẵn và trình phân loại cử chỉ tuỳ chỉnh sẽ ưu tiên cử chỉ tuỳ chỉnh nếu cả hai trình phân loại đều nhận dạng cùng một cử chỉ trong danh mục của chúng. Nếu chỉ có một trình phân loại cử chỉ nhận dạng cử chỉ, thì Trình nhận dạng cử chỉ sẽ trực tiếp xuất cử chỉ đã nhận dạng.
Điểm chuẩn về tác vụ
Sau đây là điểm chuẩn cho nhiệm vụ của toàn bộ quy trình dựa trên các mô hình được huấn luyện trước ở trên. Kết quả về độ trễ là độ trễ trung bình trên Pixel 6 khi sử dụng CPU / GPU.
| Tên mô hình | Độ trễ CPU | Độ trễ của GPU |
|---|---|---|
| GestureRecognizer | 16,76 mili giây | 20,87 mili giây |
Mô hình tuỳ chỉnh
Nếu muốn cải thiện hoặc thay đổi các chức năng của những mô hình được cung cấp trong tác vụ này, bạn có thể dùng Model Maker để sửa đổi các mô hình hiện có. Các mô hình tuỳ chỉnh được dùng với MediaPipe phải ở định dạng .task, đây là một 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 tác vụ này trước khi tạo mô hình của riêng mình.
Để biết thêm thông tin về cách tuỳ chỉnh một mô hình cho tác vụ này, hãy xem phần Tuỳ chỉnh mô hình cho Trình nhận dạng cử chỉ.