Hướng dẫn thao tác phân loại hình ảnh

Một con vật được gắn nhãn chính xác là chim hồng hạc với mức độ tin cậy là 95%

Tác vụ Trình phân loại hình ảnh MediaPipe cho phép bạn phân loại hình ảnh. Bạn có thể sử dụng nhiệm vụ này để xác định hình ảnh đại diện cho nội dung nào trong một tập hợp các danh mục được xác định tại thời điểm huấn luyện. 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) dưới dạng dữ liệu tĩnh hoặc luồng liên tục và xuất ra danh sách các danh mục tiềm năng được xếp hạng theo điểm xác suất giảm dần.

Hãy dùng 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 các hướng dẫn triển khai sau đây cho nền tảng mục tiêu của bạn. Những 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ô hình được đề xuất và cung cấp ví dụ về mã 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 tính năng, dữ liệu đầu vào, dữ liệu đầu ra và tuỳ 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 hình ảnh, đổi kích thước, chuẩn hoá và chuyển đổi không gian màu.
  • Khu vực quan tâm – Thực hiện phân loại trên một khu vực của hình ảnh thay vì toàn bộ hình ảnh.
  • Ngôn ngữ bản đồ nhãn – Đặt ngôn ngữ dùng cho tên hiển thị.
  • Ngưỡng điểm – Lọc kết quả dựa trên điểm dự đoán.
  • Phân loại top-k – Giới hạn số lượng kết quả phân loại.
  • Danh sách cho phép và danh sách từ chối gắn nhãn – Chỉ định các danh mục được phân loại.
Dữ liệu đầu vào của việc cần làm Kết quả của tác vụ
Dữ liệu đầu vào có thể là một trong các loại dữ liệu sau:
  • Hình ảnh tĩnh
  • Khung hình video đã giải mã
  • Nguồn cấp dữ liệu video trực tiếp
Trình phân loại hình ảnh sẽ xuất ra danh sách các danh mục chứa:
  • Chỉ mục danh mục: chỉ mục của danh mục trong đầu ra của mô hình
  • Điểm số: điểm số tin cậy cho danh mục này, thường là xác suất trong khoảng [0,1]
  • Tên danh mục (không bắt buộc): tên của danh mục như được chỉ định trong Siêu dữ liệu mô hình TFLite, nếu có
  • Tên hiển thị của danh mục (không bắt buộc): tên hiển thị của danh mục như được chỉ định trong Siêu dữ liệu mô hình TFLite, bằng ngôn ngữ được chỉ định thông qua các tuỳ chọn ngôn ngữ của tên hiển thị, nếu có

Tuỳ chọn cấu hình

Tác vụ này có các tuỳ 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ế độ 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ừ máy ảnh. Ở chế độ này, bạn phải gọi resultListener để 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
display_names_locale Đặ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 tác vụ, nếu có. 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 ghi siêu dữ liệu TensorFlow Lite Mã ngôn ngữ vi
max_results Đặt số lượng kết quả phân loại có điểm số cao nhất tối đa (không bắt buộc) để trả về. Nếu < 0, tất cả kết quả có sẵn sẽ được trả về. Bất kỳ số dương nào -1
score_threshold Đặt ngưỡng điểm số dự đoán sẽ ghi đè ngưỡng được cung cấp trong siêu dữ liệu mô hình (nếu có). Kết quả thấp hơn giá trị này sẽ bị từ chối. Bất kỳ float nào Chưa đặt
category_allowlist Đặt danh sách tên danh mục được phép (không bắt buộc). Nếu không trống, kết quả phân loại có tên danh mục không có trong tập hợp này sẽ bị lọc ra. Hệ thống sẽ bỏ qua tên danh mục trùng lặp hoặc không xác định. Tuỳ chọn này không thể dùng cùng với category_denylist và việc sử dụng cả hai sẽ dẫn đến lỗi. Chuỗi bất kỳ Chưa đặt
category_denylist Đặt danh sách tên danh mục không được phép (không bắt buộc). Nếu không trống, kết quả phân loại có tên danh mục nằm trong tập hợp này sẽ bị lọc ra. Hệ thống sẽ bỏ qua tên danh mục trùng lặp hoặc không xác định. Tuỳ chọn này tương đối độc lập với category_allowlist và việc sử dụng cả hai sẽ dẫn đến lỗi. Chuỗi bất kỳ Chưa đặt
result_callback Đặt trình nghe kết quả để nhận kết quả phân loại không đồng bộ khi Trình phân loại hình ảnh ở chế độ phát trực tiếp. Chỉ có thể sử dụng khi chế độ chạy được đặt thành LIVE_STREAM Không áp dụng Chưa đặt

Mô hình

Trình phân loại hình ảnh yêu cầu tải mô hình phân loại hình ảnh xuống và lưu trữ trong thư mục dự án. Bắt đầu với mô hình mặc định, được đề xuất cho nền tảng mục tiêu của bạn khi bạn bắt đầu phát triển bằng tác vụ này. Các mô hình khác hiện có thường đánh đổi giữa hiệu suất, độ chính xác, độ phân giải và yêu cầu về tài nguyên, đồng thời trong một số trường hợp, bao gồm cả các tính năng bổ sung.

Mô hình EfficientNet-Lite0 sử dụng cấu trúc EfficientNet và được huấn luyện bằng ImageNet để nhận dạng 1.000 lớp,chẳng hạn như cây, động vật, thực phẩm, xe cộ, người, v.v. Hãy xem danh sách đầy đủ về các nhãn được hỗ trợ. EfficientNet-Lite0 có sẵn dưới dạng mô hình int8 và float 32. Bạn nên sử dụng mô hình này vì nó tạo ra sự cân bằng giữa độ trễ và độ chính xác. Phương thức 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 đầu vào Loại lượng tử hoá Phiên bản
EfficientNet-Lite0 (int8) 224 x 224 int8 Mới nhất
EfficientNet-Lite0 (float 32) 224 x 224 Không có (float32) Mới nhất

Mô hình EfficientNet-Lite2

Mô hình EfficientNet-Lite2 sử dụng cấu trúc EfficientNet và được huấn luyện bằng ImageNet để nhận dạng 1.000 lớp,chẳng hạn như cây, động vật, thực phẩm, xe cộ, người, v.v. Hãy xem danh sách đầy đủ về các nhãn được hỗ trợ. EfficientNet-Lite2 có sẵn dưới dạng mô hình int8 và float 32. Mô hình này thường chính xác hơn EfficientNet-Lite0, nhưng cũng chậm hơn và tố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 mà độ chính xác được ưu tiên cao hơn tốc độ hoặc kích thước.

Tên mẫu thiết bị Hình dạng đầu vào Loại lượng tử hoá Phiên bản
EfficientNet-Lite2 (int8) 224 x 224 int8 Mới nhất
EfficientNet-Lite2 (float 32) 224 x 224 Không có (float32) Mới nhất

Điểm chuẩn tác vụ

Dưới đây là điểm chuẩn tác vụ cho 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ễ GPU
EfficientNet-Lite0 (float 32) 23,52 mili giây 18,90 mili giây
EfficientNet-Lite0 (int8) 10,08 mili giây -
EfficientNet-Lite2 (float 32) 44,17 mili giây 22,20 mili giây
EfficientNet-Lite2 (int8) 19,43 mili giây -

Mô hình tuỳ chỉnh

Bạn có thể sử dụng mô hình máy học tuỳ chỉnh với tác vụ này nếu muốn cải thiện hoặc thay đổi các chức năng của các mô hình được cung cấp. Bạn có thể sử dụng Trình tạo mô hình để sửa đổi các mô hình hiện có hoặc tạo mô hình bằng các công cụ như TensorFlow. Các mô hình tuỳ chỉnh được sử dụng với MediaPipe phải ở định dạng TensorFlow Lite và phải bao gồm metadata cụ thể mô tả các thông số hoạt động của mô hình. Bạn nên cân nhắc sử dụng Trình tạo mô hình để sửa đổi các mô hình được cung cấp cho nhiệm vụ này trước khi tạo mô hình của riêng mình.

Nếu bạn muốn tạo một Trình phân loại hình ảnh tuỳ chỉnh bằng cách sử dụng tập dữ liệu của riêng mình, hãy bắt đầu với hướng dẫn Tuỳ chỉnh trình phân loại hình ảnh.