Tìm kiếm hình ảnh cho phép tìm kiếm các hình ảnh tương tự trong cơ sở dữ liệu hình ảnh. Nó hoạt động bằng cách nhúng truy vấn tìm kiếm vào một vectơ chiều cao biểu thị ý nghĩa ngữ nghĩa của truy vấn, sau đó là tìm kiếm tương tự trong chỉ mục tùy chỉnh được xác định trước bằng cách sử dụng ScaNN (Hàng xóm gần nhất có thể mở rộng).
Ngược lại với phân loại hình ảnh , việc mở rộng số lượng mục có thể được nhận dạng không yêu cầu đào tạo lại toàn bộ mô hình. Các mục mới có thể được thêm vào chỉ bằng cách xây dựng lại chỉ mục. Điều này cũng cho phép làm việc với cơ sở dữ liệu hình ảnh lớn hơn (hơn 100 nghìn mục).
Sử dụng API ImageSearcher
của Thư viện tác vụ để triển khai trình tìm kiếm hình ảnh tùy chỉnh vào ứng dụng di động của bạn.
Các tính năng chính của API ImageSearcher
Lấy một hình ảnh làm đầu vào, thực hiện trích xuất nhúng và tìm kiếm lân cận gần nhất trong chỉ mục.
Xử lý hình ảnh đầu vào, bao gồm xoay, thay đổi kích thước và chuyển đổi không gian màu.
Vùng quan tâm của hình ảnh đầu vào.
Điều kiện tiên quyết
Trước khi sử dụng API ImageSearcher
, cần xây dựng chỉ mục dựa trên kho hình ảnh tùy chỉnh để tìm kiếm. Bạn có thể đạt được điều này bằng cách sử dụng API Model Maker Searcher bằng cách làm theo và điều chỉnh hướng dẫn .
Đối với điều này, bạn sẽ cần:
- mô hình nhúng hình ảnh TFLite như Mobilenet v3 . Xem thêm các mô hình nhúng được đào tạo trước (còn gọi là mô hình vectơ đặc trưng) từ bộ sưu tập Mô-đun hình ảnh của Google trên TensorFlow Hub .
- kho hình ảnh của bạn.
Sau bước này, bạn sẽ có một mô hình tìm kiếm TFLite độc lập (ví dụ mobilenet_v3_searcher.tflite
), đây là mô hình nhúng hình ảnh gốc có chỉ mục được đính kèm vào Siêu dữ liệu mô hình TFLite .
Chạy suy luận trong Java
Bước 1: Nhập phần phụ thuộc Gradle và các cài đặt khác
Sao chép tệp mô hình trình tìm kiếm .tflite
vào thư mục nội dung của mô-đun Android nơi mô hình sẽ được chạy. Chỉ định rằng tệp sẽ không được nén và thêm thư viện TensorFlow Lite vào tệp build.gradle
của mô-đun:
android {
// Other settings
// Specify tflite index file should not be compressed for the app apk
aaptOptions {
noCompress "tflite"
}
}
dependencies {
// Other dependencies
// Import the Task Vision Library dependency (NNAPI is included)
implementation 'org.tensorflow:tensorflow-lite-task-vision:0.4.4'
// Import the GPU delegate plugin Library for GPU inference
implementation 'org.tensorflow:tensorflow-lite-gpu-delegate-plugin:0.4.4'
}
Bước 2: Sử dụng mô hình
// Initialization
ImageSearcherOptions options =
ImageSearcherOptions.builder()
.setBaseOptions(BaseOptions.builder().useGpu().build())
.setSearcherOptions(
SearcherOptions.builder().setL2Normalize(true).build())
.build();
ImageSearcher imageSearcher =
ImageSearcher.createFromFileAndOptions(context, modelFile, options);
// Run inference
List<NearestNeighbor> results = imageSearcher.search(image);
Xem mã nguồn và javadoc để có thêm tùy chọn cấu hình ImageSearcher
.
Chạy suy luận trong C++
// Initialization
ImageSearcherOptions options;
options.mutable_base_options()->mutable_model_file()->set_file_name(model_path);
options.mutable_embedding_options()->set_l2_normalize(true);
std::unique_ptr<ImageSearcher> image_searcher = ImageSearcher::CreateFromOptions(options).value();
// Create input frame_buffer from your inputs, `image_data` and `image_dimension`.
// See more information here: tensorflow_lite_support/cc/task/vision/utils/frame_buffer_common_utils.h
std::unique_ptr<FrameBuffer> frame_buffer = CreateFromRgbRawBuffer(
image_data, image_dimension);
// Run inference
const SearchResult result = image_searcher->Search(*frame_buffer).value();
Xem mã nguồn để biết thêm tùy chọn cấu hình ImageSearcher
.
Chạy suy luận trong Python
Bước 1: Cài đặt gói Pypi hỗ trợ TensorFlow Lite.
Bạn có thể cài đặt gói Pypi hỗ trợ TensorFlow Lite bằng lệnh sau:
pip install tflite-support
Bước 2: Sử dụng mô hình
from tflite_support.task import vision
# Initialization
image_searcher = vision.ImageSearcher.create_from_file(model_path)
# Run inference
image = vision.TensorImage.create_from_file(image_file)
result = image_searcher.search(image)
Xem mã nguồn để biết thêm tùy chọn cấu hình ImageSearcher
.
Kết quả ví dụ
Results:
Rank#0:
metadata: burger
distance: 0.13452
Rank#1:
metadata: car
distance: 1.81935
Rank#2:
metadata: bird
distance: 1.96617
Rank#3:
metadata: dog
distance: 2.05610
Rank#4:
metadata: cat
distance: 2.06347
Hãy dùng thử công cụ demo CLI đơn giản dành cho ImageSearcher với mô hình và dữ liệu thử nghiệm của riêng bạn.