Nhiệm vụ xác định những gì một hình ảnh đại diện đượ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 ra các lớp hình ảnh khác nhau. Ví dụ: bạn có thể huấn luyện người mẫu nhận dạng ả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 đầu ra của mô hình phân loại hình ảnh trên Android.
Bắt đầu
Nếu bạn chưa quen với 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 ví dụ sau có thể giúp bạn bắt đầu.
Bạn có thể tận dụng API có sẵn 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 kênh suy luận tùy chỉnh của riêng mình bằng cách sử dụng Thư viện hỗ trợ TensorFlow Lite .
Ví dụ Android bên dưới minh họa cách triển khai cho cả hai phương thức là lib_task_api và lib_support , tương ứng.
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 thuộc với các 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ó).
Mô tả về mô hình
Làm thế nào nó hoạt động
Trong quá trình đào tạo, một mô hình phân loại hình ảnh được cung cấp các hình ảnh và các 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 ra.
Cung cấp đủ dữ liệu đào tạo (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 liệu hình ảnh mới có thuộc bất kỳ lớp nào mà nó đã được đào tạo 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 tính năng học chuyển để 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 từ trước. Học chuyển tiếp không yêu cầu một tập dữ liệu đào tạo 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ẽ xuất 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 ví dụ đầu ra có thể như sau:
Loại động vật | Xác suất |
---|---|
Thỏ | 0,07 |
Chuột đồng | 0,02 |
Chú chó | 0,91 |
Mỗi số trong đầu ra tương ứng với một nhãn trong dữ liệu huấn luyện. Liên kết đầ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 xác suất 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 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 tổng bằng 1, nếu một hình ảnh không được công nhận một cách chắc chắn là thuộc bất kỳ lớp nào mà mô hình được đào tạo trên đó, bạn có thể thấy xác suất được phân phối trên khắp các nhãn mà không có bất kỳ giá trị nào lớn hơn đáng kể.
Ví dụ: phần sau có thể cho biết một kết quả không rõ ràng:
Nhãn mác | Xác suất |
---|---|
Con thỏ | 0,31 |
chuột đồng | 0,35 |
chú chó | 0,34 |
Chọn một kiến trúc mô hình
TensorFlow Lite cung cấp cho bạn nhiều mô hình phân loại hình ảnh khác nhau, tất cả đều được đào tạo trên tập dữ liệu gốc. Kiến trúc mô hình như MobileNet, Inception và NASNet 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 chỉ số 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ột 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 thước đầu vào khác nhau. Đối với một số kiểu máy, điều này được chỉ ra trong tên tệp. Ví dụ: kiểu Mobilenet_V1_1.0_224 chấp nhận đầu vào là 224x224 pixel. Tất cả các mô hình yêu cầu ba kênh màu trên 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à mô hình float yêu cầu 4 byte cho mỗi kênh. Các mẫu mã Android và iOS trình bày 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.Sử dụng và hạn chế
Các mô hình phân loại hình ảnh TensorFlow Lite 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ó khả năng đại diện nhất. Họ được đào tạo để nhận ra 1000 lớp hình ảnh. Để có danh sách đầy đủ các lớp, hãy xem tệp nhãn trong zip mô hình . Nếu bạn muốn đào tạo một mô hình để nhận ra 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 một 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 hình ảnh (xem phần Phát hiện đối tượng )
- Dự đoán thành phần của hình ảnh, ví dụ chủ thể so với hậu cảnh (xem Phân đoạn )
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 lớp hình ảnh. Để có danh sách đầy đủ các lớp, hãy xem tệp nhãn trong zip mô hình . Bạn cũng có thể sử dụng tính năng học chuyển giao để đào tạo lại một 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 đào tạo ban đầu. Để làm điều này, bạn sẽ cần một bộ hình ảnh đào tạo cho mỗi nhãn mới mà bạn muốn đào tạo. Tìm hiểu cách thực hiện việc học chuyển giao với Trình tạo mô hình TFLite hoặc trong mã hóa Nhận dạng hoa với 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ộ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 đó điều quan trọng là phải phân tích từng khung hình trong thời gian trước khi khung hình tiếp theo được vẽ (ví dụ: suy luận phải nhanh hơn 33ms để 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 các mô hình MobileNet được lượng tử hóa củ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 Model | 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) | 6ms | 13ms * |
Pixel 4 (Android 10) | 3,3ms | 5ms * | ||
iPhone XS (iOS 12.4.1) | 11ms ** |
* 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 hình ảnh. Ví dụ: một mô hình có độ chính xác đã nêu là 60% có thể được mong đợi để phân loại một hình ảnh chính xác trung bình là 60% thời gian.
Các chỉ số về độ chính xác có liên quan 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 nhãn chính xác xuất hiện 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 củ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ột mô hình trên đĩa thay đổi 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 sự phát triển của thiết bị di động (nơi 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 bộ nhớ 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 củ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: