Nhiệm vụ của Trình phát hiện đối tượng MediaPipe giúp bạn phát hiện sự hiện diện và vị trí của nhiều lớp đối tượng trong hình ảnh hoặc video. Ví dụ: trình phát hiện vật thể có thể xác định vị trí của các chú chó trong một hình ảnh. Tác vụ này hoạt động trên dữ liệu hình ảnh bằng mô hình học máy (ML), chấp nhận dữ liệu tĩnh hoặc luồng video liên tục làm dữ liệu đầu vào và xuất danh sách kết quả phát hiện. Mỗi kết quả phát hiện đại diện cho một đối tượng xuất hiện trong hình ảnh hoặc video.
Bắt đầu
Hãy 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 bạn đang xử lý:
- Android – Ví dụ về mã – Hướng dẫn
- Python – Ví dụ về mã – Hướng dẫn
- Web – Ví dụ về mã – Hướng dẫn
- iOS – Ví dụ về mã – Hướng dẫn
Các hướng dẫn dành riêng cho nền tảng này sẽ hướng dẫn bạn cách triển khai cơ bản của tác vụ này, bao gồm cả mô hình được đề xuất và mã ví dụ với các tuỳ chọn 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 và đầu ra của nhiệm vụ này.
Tính năng
- Xử lý hình ảnh đầu vào – Xử lý bao gồm việc xoay hình ảnh, đổi kích thước, chuẩn hoá và chuyển đổi không gian màu.
- Ngôn ngữ bản đồ nhãn – Đặt ngôn ngữ dùng cho tên hiển thị
- Ngưỡng điểm số – Lọc kết quả dựa trên điểm dự đoán.
- Phát hiện hàng đầu – Lọc kết quả phát hiện số.
- Gắn nhãn danh sách cho phép và danh sách từ chối – Chỉ định các danh mục được phát hiện.
Dữ liệu đầu vào của việc cần làm | Kết quả đầu ra của nhiệm vụ |
---|---|
Object Detector API chấp nhận dữ liệu đầu vào của một trong các loại dữ liệu sau:
|
API Trình phát hiện đối tượng sẽ đưa ra các kết quả sau cho các đối tượng được phát hiện:
|
Lựa chọn về cấu hình
Tác vụ này có các chế độ cấu hình sau:
Tên lựa chọn | Nội dung mô tả | Khoảng giá trị | Giá trị mặc định |
---|---|---|---|
running_mode |
Đặt chế độ chạy cho tác vụ. Có 3 chế độ: IMAGE: Chế độ nhập một hình ảnh. VIDEO: Chế độ 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ừ máy quay. Ở chế độ này, bạn phải gọi resultsListener để thiết lập trình nghe nhằm nhận kết quả không đồng bộ. |
{IMAGE, VIDEO, LIVE_STREAM } |
IMAGE |
display_names |
Đặt ngôn ngữ của nhãn để sử dụng cho tên hiển thị được cung cấp trong siêu dữ liệu của mô hình của tác vụ, nếu có. Giá trị mặc định là en đối với
tiếng Anh. Bạn có thể thêm nhãn đã bản địa hoá vào siêu dữ liệu của mô hình tuỳ chỉnh bằng cách sử dụng API Trình viết siêu dữ liệu TensorFlow Lite
|
Mã ngôn ngữ | vi |
max_results |
Đặt số lượng kết quả phát hiện có điểm cao nhất (không bắt buộc) để trả về. | Số dương bất kỳ | -1 (tất cả kết quả đều được trả về) |
score_threshold |
Đặt ngưỡng điểm dự đoán để ghi đè ngưỡng được cung cấp trong siêu dữ liệu mô hình (nếu có). Những kết quả bên dưới giá trị này sẽ bị từ chối. | Số thực bất kỳ | Không đặt |
category_allowlist |
Đặt danh sách các tên danh mục được phép (không bắt buộc). Nếu giá trị không trống, các kết quả phát hiện có tên danh mục không thuộc tập hợp này sẽ bị lọc ra. Tên danh mục trùng lặp hoặc không xác định sẽ bị bỏ qua.
Tuỳ chọn này loại trừ lẫn nhau với category_denylist và việc sử dụng cả hai sẽ dẫn đến lỗi. |
Chuỗi bất kỳ | Không đặt |
category_denylist |
Đặt danh sách các tên danh mục không được phép (không bắt buộc). Nếu không để trống, các kết quả phát hiện có tên danh mục nằm trong tập hợp này sẽ bị lọc ra. Tên danh mục trùng lặp hoặc không xác định sẽ bị bỏ qua. Tuỳ chọn này loại trừ lẫn nhau với category_allowlist và việc sử dụng cả hai sẽ gây ra lỗi. |
Chuỗi bất kỳ | Không đặt |
Mô hình
API Trình phát hiện đối tượng yêu cầu bạn tải mô hình phát hiện đối tượng xuống và lưu trữ trong thư mục dự án. Nếu bạn chưa có mô hình, hãy bắt đầu với mô hình mặc định và được đề xuất. Các mô hình khác được trình bày trong mục này sẽ đánh đổi giữa độ trễ và độ chính xác.
Mô hình Hiệu quảDet-Lite0 (Nên dùng)
Mô hình efficiencyDet-Lite0 sử dụng xương sống Hiệu quả-Lite0 với kích thước đầu vào là 320x320 và mạng tính năng BiFPN. Mô hình này được huấn luyện bằng tập dữ liệu COCO, một tập dữ liệu phát hiện đối tượng có quy mô lớn chứa 1,5 triệu thực thể đối tượng và 80 nhãn đối tượng. Xem danh sách đầy đủ các nhãn được hỗ trợ. Hiệu quảDet-Lite0 có sẵn dưới dạng int8, float16 hoặc float32. Mô hình này được đề xuất vì nó cân bằng giữa độ trễ và độ chính xác. Thiết bị này vừa chính xác vừa đủ nhẹ cho nhiều trường hợp sử dụng.
Tên mẫu thiết bị | Hình dạng dữ liệu đầu vào | Loại lượng tử hoá | Phiên bản |
---|---|---|---|
Hiệu quảDet-Lite0 (int8) | 320 x 320 | int8 | Mới nhất |
Hiệu quảDet-Lite0 (float 16) | 320 x 320 | số thực 16 | Mới nhất |
Hiệu quảDet-Lite0 (float 32) | 320 x 320 | Không có (float32) | Mới nhất |
Mô hình Hiệu quả-Lite2
Mô hình Hiệu quả-Lite2 sử dụng một đường trục Hiệu quả-Lite2 với kích thước đầu vào là 448x448 và mạng tính năng BiFPN. Mô hình này được huấn luyện bằng tập dữ liệu COCO, một tập dữ liệu phát hiện đối tượng có quy mô lớn chứa 1,5 triệu thực thể đối tượng và 80 nhãn đối tượng. Xem danh sách đầy đủ các nhãn được hỗ trợ. Hiệu quảDet-Lite2 có sẵn dưới dạng mô hình int8, float16 hoặc float32. Mô hình này thường chính xác hơn performanceDet-Lite0, nhưng cũng chậm hơn và cần nhiều bộ nhớ hơn. Mô hình này phù hợp với các trường hợp sử dụng trong đó độ chính xác được ưu tiên hơn so với tốc độ và kích thước.
Tên mẫu thiết bị | Hình dạng dữ liệu đầu vào | Loại lượng tử hoá | Phiên bản |
---|---|---|---|
Hiệu quảDet-Lite2 (int8) | 448 x 448 | int8 | Mới nhất |
Hiệu quảDet-Lite2 (float 16) | 448 x 448 | số thực 16 | Mới nhất |
Hiệu quảDet-Lite2 (nổi 32) | 448 x 448 | Không có (float32) | Mới nhất |
Kiểu SSD MobileNetV2
Mẫu SSD MobileNetV2 sử dụng xương sống MobileNetV2 với kích thước đầu vào là 256 x 256 và mạng tính năng SSD. Mô hình này được huấn luyện bằng tập dữ liệu COCO, một tập dữ liệu phát hiện đối tượng có quy mô lớn chứa 1,5 triệu thực thể đối tượng và 80 nhãn đối tượng. Xem danh sách đầy đủ các nhãn được hỗ trợ. SSD MobileNetV2 có sẵn dưới dạng mẫu int8 và float 32. Mô hình này nhanh và nhẹ hơn Hiệu quảDet-Lite0, nhưng cũng thường kém chính xác hơn. Mô hình này phù hợp với các trường hợp sử dụng yêu cầu mô hình nhanh, nhẹ nhưng hy sinh một số độ chính xác.
Tên mẫu thiết bị | Hình dạng dữ liệu đầu vào | Loại lượng tử hoá | Phiên bản |
---|---|---|---|
SSDMobileNet-V2 (int8) | 256 x 256 | int8 | Mới nhất |
SSDMobileNet-V2 (số thực 32) | 256 x 256 | Không có (float32) | Mới nhất |
Siêu dữ liệu và yêu cầu về mô hình
Phần này mô tả các yêu cầu đối với mô hình tuỳ chỉnh nếu bạn quyết định xây dựng một mô hình để sử dụng trong tác vụ này. Mô hình tuỳ chỉnh phải ở định dạng TensorFlow Lite và phải bao gồm siêu dữ liệu mô tả các tham số hoạt động của mô hình.
Yêu cầu về thiết kế
Đầu vào | Hình dạng | Nội dung mô tả |
---|---|---|
Hình ảnh đầu vào | Float32 tensor của hình dạng[1, chiều cao, chiều rộng, 3] | Hình ảnh đầu vào được chuẩn hoá. |
Đầu ra | Hình dạng | Nội dung mô tả |
---|---|---|
detection_boxes |
Float32 tensor của hình dạng [1, num_box, 4] | Vị trí hộp của từng đối tượng phát hiện được. |
detection_classes |
Float32 tensor của hình dạng [1, num_box] | Chỉ số của tên lớp cho từng đối tượng được phát hiện. |
detection_scores |
float32 tensor của hình dạng [1, num_box] | Điểm dự đoán cho từng đối tượng được phát hiện. |
num_boxes |
Tensor Float32 có kích thước 1 | Số hộp được phát hiện. |
Yêu cầu về siêu dữ liệu
Thông số | Nội dung mô tả | Nội dung mô tả |
---|---|---|
input_norm_mean |
Giá trị trung bình dùng trong quá trình chuẩn hoá tensor đầu vào. | Hình ảnh đầu vào được chuẩn hoá. |
input_norm_std |
Tiêu chuẩn trường dùng trong quá trình chuẩn hoá tensor đầu vào. | Vị trí hộp của từng đối tượng phát hiện được. |
label_file_paths |
Đường dẫn đến các tệp nhãn tensor của danh mục. Nếu mô hình không có tệp nhãn nào, hãy chuyển một danh sách trống. | Chỉ số của tên lớp cho từng đối tượng được phát hiện. |
score_calibration_md |
Thông tin về thao tác hiệu chỉnh điểm số trong tensor phân loại. Bạn không bắt buộc phải sử dụng tham số này nếu mô hình không sử dụng hiệu chuẩn điểm. |
Điểm dự đoán cho từng đối tượng được phát hiện. |
num_boxes |
Tensor Float32 có kích thước 1 | Số hộp được phát hiện. |
Điểm chuẩn nhiệm vụ
Sau đây là điểm chuẩn nhiệm vụ cho 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ễ của CPU | Độ trễ của GPU |
---|---|---|
Mô hình Hiệu quảDet-Lite0 float32 | 61,30 mili giây | 27,83 mili giây |
Mô hình Hiệu quảDet-Lite0 float16 | 53,97 mili giây | 27,97 mili giây |
Mô hình Hiệu quảDet-Lite0 int8 | 29,31 mili giây | - |
Mô hình Hiệu quảDet-Lite2 float32 | 197,98 mili giây | 41,15 mili giây |
Mô hình Hiệu quảDet-Lite2 float16 | 198,77 mili giây | 47,31 mili giây |
Mô hình efficiencyDet-Lite2 int8 | 70,91 mili giây | - |
Kiểu SSD MobileNetV2 float32 | 36,30 mili giây | 24,01 mili giây |
Kiểu SSD MobileNetV2 float16 | 37,35 mili giây | 28,16 mili giây |