Phân loại hình ảnh

Nhiệm vụ xác định hình ảnh đại diện cho cái gì được gọi là phân loại hình ảnh . Một mô hình phân loại hình ảnh được đào tạo để nhận dạng các lớp hình ảnh khác nhau. Ví dụ: bạn có thể đào tạo một mô hình để nhận biết các bức ảnh đại diện cho ba loại động vật khác nhau: thỏ, chuột đồng và chó. TensorFlow Lite cung cấp các mô hình được đào tạo trước được tối ưu hóa mà bạn có thể triển khai trong các ứng dụng di động của mình. Tìm hiểu thêm về phân loại hình ảnh bằng TensorFlow tại đây .

Hình ảnh sau đây cho thấy kết quả đầu ra của mô hình phân loại hình ảnh trên Android.

Ảnh chụp màn hình của ví dụ về Android

Bắt đầu

Nếu bạn mới sử dụng TensorFlow Lite và đang làm việc với Android hoặc iOS, bạn nên khám phá các ứng dụng mẫu sau để có thể giúp bạn bắt đầu.

Bạn có thể tận dụng API sẵn dùng từ Thư viện tác vụ TensorFlow Lite để tích hợp các mô hình phân loại hình ảnh chỉ trong một vài dòng mã. Bạn cũng có thể xây dựng quy trình suy luận tùy chỉnh của riêng mình bằng Thư viện hỗ trợ TensorFlow Lite .

Ví dụ về Android bên dưới minh họa cách triển khai cho cả hai phương thức lần lượt là lib_task_apilib_support .

Xem ví dụ về Android

Xem ví dụ về iOS

Nếu bạn đang sử dụng nền tảng không phải Android/iOS hoặc nếu bạn đã quen với API TensorFlow Lite , hãy tải xuống mô hình khởi động và các tệp hỗ trợ (nếu có).

Tải xuống mô hình khởi đầu

Mô tả về mô hình

Làm thế nào nó hoạt động

Trong quá trình đào tạo, mô hình phân loại hình ảnh sẽ được cung cấp hình ảnh và nhãn liên quan của chúng. Mỗi nhãn là tên của một khái niệm hoặc lớp riêng biệt mà mô hình sẽ học cách nhận biết.

Với đủ dữ liệu huấn luyện (thường là hàng trăm hoặc hàng nghìn hình ảnh trên mỗi nhãn), mô hình phân loại hình ảnh có thể học cách dự đoán xem hình ảnh mới có thuộc về bất kỳ lớp nào mà nó đã được huấn luyện hay không. Quá trình dự đoán này được gọi là suy luận . Lưu ý rằng bạn cũng có thể sử dụng phương pháp học chuyển giao để xác định các lớp hình ảnh mới bằng cách sử dụng mô hình có sẵn. Học chuyển giao không yêu cầu tập dữ liệu huấn luyện quá lớn.

Sau đó, khi bạn cung cấp một hình ảnh mới làm đầu vào cho mô hình, nó sẽ đưa ra xác suất của hình ảnh đại diện cho từng loại động vật mà nó được huấn luyện. Một đầu ra ví dụ có thể như sau:

Loại động vật Xác suất
Con thỏ 0,07
chuột đồng 0,02
Chó 0,91

Mỗi số ở đầu ra tương ứng với một nhãn trong dữ liệu huấn luyện. Liên kết kết quả đầu ra với ba nhãn mà mô hình đã được đào tạo, bạn có thể thấy rằng mô hình đã dự đoán khả năng cao rằng hình ảnh đại diện cho một con chó.

Bạn có thể nhận thấy rằng tổng của tất cả các xác suất (đối với thỏ, chuột đồng và chó) bằng 1. Đây là loại đầu ra phổ biến cho các mô hình có nhiều lớp (xem Softmax để biết thêm thông tin).

Kết quả mơ hồ

Vì xác suất đầu ra sẽ luôn có tổng bằng 1, nên nếu một hình ảnh không được nhận dạng chắc chắn là thuộc về bất kỳ lớp nào mà mô hình đã được đào tạo, bạn có thể thấy xác suất được phân bổ trên toàn bộ các nhãn mà không có bất kỳ giá trị nào lớn hơn đáng kể.

Ví dụ: những điều sau đây có thể chỉ ra một kết quả không rõ ràng:

Nhãn Xác suất
con thỏ 0,31
chuột đồng 0,35
chó 0,34
Nếu mô hình của bạn thường xuyên trả về kết quả mơ hồ, bạn có thể cần một mô hình khác, chính xác hơn.

Lựa chọn mô hình kiến ​​trúc

TensorFlow Lite cung cấp cho bạn nhiều mô hình phân loại hình ảnh, tất cả đều được đào tạo trên tập dữ liệu gốc. Các kiến ​​trúc mô hình như MobileNet, Inception và NASNet đều có sẵn trên TensorFlow Hub . Để chọn mô hình tốt nhất cho trường hợp sử dụng của mình, bạn cần xem xét các kiến ​​trúc riêng lẻ cũng như một số sự cân bằng giữa các mô hình khác nhau. Một số sự cân bằng của mô hình này dựa trên các số liệu như hiệu suất, độ chính xác và kích thước mô hình. Ví dụ: bạn có thể cần một mô hình nhanh hơn để xây dựng máy quét mã vạch trong khi bạn có thể thích một mô hình chậm hơn, chính xác hơn cho ứng dụng hình ảnh y tế. Lưu ý rằng các mô hình phân loại hình ảnh được cung cấp chấp nhận các kích cỡ đầu vào khác nhau. Đối với một số kiểu máy, điều này được chỉ định trong tên tệp. Ví dụ: mô hình Mobilenet_V1_1.0_224 chấp nhận đầu vào 224x224 pixel. Tất cả các mô hình đều yêu cầu ba kênh màu cho mỗi pixel (đỏ, lục và lam). Các mô hình lượng tử hóa yêu cầu 1 byte cho mỗi kênh và các mô hình float yêu cầu 4 byte cho mỗi kênh. Mẫu mã AndroidiOS minh họa cách xử lý hình ảnh máy ảnh có kích thước đầy đủ thành định dạng bắt buộc cho từng kiểu máy.

Công dụng và hạn chế

Các mô hình phân loại hình ảnh TensorFlow Lite rất hữu ích cho việc phân loại nhãn đơn; nghĩa là dự đoán nhãn đơn nào mà hình ảnh có nhiều khả năng đại diện nhất. Họ được đào tạo để nhận biết 1000 lớp hình ảnh. Để biết danh sách đầy đủ các lớp, hãy xem tệp nhãn trong mô hình zip . Nếu bạn muốn huấn luyện một mô hình để nhận biết các lớp mới, hãy xem Tùy chỉnh mô hình . Đối với các trường hợp sử dụng sau, bạn nên sử dụng loại mô hình khác:
  • Dự đoán loại và vị trí của một hoặc nhiều đối tượng trong ảnh (xem Phát hiện đối tượng )
  • Dự đoán thành phần của hình ảnh, ví dụ như chủ thể so với nền (xem Phân đoạn )
Khi bạn có mô hình khởi động chạy trên thiết bị mục tiêu của mình, bạn có thể thử nghiệm với các mô hình khác nhau để tìm sự cân bằng tối ưu giữa hiệu suất, độ chính xác và kích thước mô hình.

Tùy chỉnh mô hình

Các mô hình được đào tạo trước được cung cấp được đào tạo để nhận dạng 1000 loại hình ảnh. Để biết danh sách đầy đủ các lớp, hãy xem tệp nhãn trong mô hình zip . Bạn cũng có thể sử dụng phương pháp học chuyển giao để đào tạo lại mô hình nhằm nhận ra các lớp không có trong tập hợp ban đầu. Ví dụ: bạn có thể đào tạo lại mô hình để phân biệt giữa các loài cây khác nhau, mặc dù không có cây nào trong dữ liệu huấn luyện ban đầu. Để làm điều này, bạn sẽ cần một bộ ảnh huấn luyện cho từng nhãn mới mà bạn muốn huấn luyện. Tìm hiểu cách thực hiện quá trình học chuyển giao bằng TFLite Model Maker hoặc trong lớp học lập trình Nhận dạng hoa bằng TensorFlow .

Điểm chuẩn hiệu suất

Hiệu suất của mô hình được đo bằng lượng thời gian cần thiết để mô hình chạy suy luận trên một phần cứng nhất định. Thời gian càng thấp, mô hình càng nhanh. Hiệu suất bạn yêu cầu phụ thuộc vào ứng dụng của bạn. Hiệu suất có thể quan trọng đối với các ứng dụng như video thời gian thực, trong đó việc phân tích từng khung hình trong thời gian trước khi khung hình tiếp theo được vẽ là rất quan trọng (ví dụ: suy luận phải nhanh hơn 33 mili giây để thực hiện suy luận thời gian thực trên luồng video 30 khung hình/giây) . Phạm vi hiệu suất của mô hình MobileNet được lượng tử hóa TensorFlow Lite từ 3,7 mili giây đến 80,3 mili giây. Số điểm chuẩn hiệu suất được tạo bằng công cụ đo điểm chuẩn .
Tên mẫu Kích thước mô hình Thiết bị NNAPI CPU
Mobilenet_V1_1.0_224_quant 4,3 Mb Pixel 3 (Android 10) 6 mili giây 13 mili giây*
Pixel 4 (Android 10) 3,3 mili giây 5 mili giây*
iPhone XS (iOS 12.4.1) 11 mili giây**

* 4 chủ đề được sử dụng.

** 2 luồng được sử dụng trên iPhone để có kết quả hoạt động tốt nhất.

Độ chính xác của mô hình

Độ chính xác được đo bằng tần suất mô hình phân loại chính xác một hình ảnh. Ví dụ: một mô hình có độ chính xác đã nêu là 60% có thể dự kiến ​​sẽ phân loại hình ảnh chính xác trung bình là 60%.

Các số liệu chính xác phù hợp nhất là Top-1 và Top-5. Top-1 đề cập đến tần suất nhãn chính xác xuất hiện dưới dạng nhãn có xác suất cao nhất trong đầu ra của mô hình. Top-5 đề cập đến tần suất xuất hiện nhãn chính xác trong 5 xác suất cao nhất trong đầu ra của mô hình.

Độ chính xác Top 5 của mô hình MobileNet được lượng tử hóa TensorFlow Lite nằm trong khoảng từ 64,4 đến 89,9%.

Kích thước mô hình

Kích thước của mô hình trên đĩa thay đổi tùy theo hiệu suất và độ chính xác của nó. Kích thước có thể quan trọng đối với việc phát triển trên thiết bị di động (khi nó có thể ảnh hưởng đến kích thước tải xuống ứng dụng) hoặc khi làm việc với phần cứng (nơi dung lượng lưu trữ khả dụng có thể bị hạn chế).

Kích thước của các mô hình MobileNet được lượng tử hóa TensorFlow Lite nằm trong khoảng từ 0,5 đến 3,4 MB.

Đọc thêm và tài nguyên

Sử dụng các tài nguyên sau để tìm hiểu thêm về các khái niệm liên quan đến phân loại hình ảnh: