Hướng dẫn về tác vụ phát hiện đối tượng

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.

Hãy dùng thử!

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ý:

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:
  • Hình ảnh tĩnh
  • Khung video đã được giải mã
  • Trang video trực tiếp
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:
  • Danh mục của đối tượng
  • Điểm xác suất
  • Giới hạn toạ độ hộp

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 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