Tính năng tìm kiếm hình ảnh cho phép tìm kiếm những hình ảnh tương tự trong một 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ơ cao chiều biểu thị ý nghĩa ngữ nghĩa của truy vấn, theo 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 (Vị trí lân cận có thể mở rộng).
Trái ngược với phân loại hình ảnh, để tăng số lượng mục có thể được công nhận không cần phải đà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ỉ cần tạo lại chỉ mục. Việc 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 tuỳ chỉnh
vào ứng dụng dành cho thiết bị di động của bạn.
Các tính năng chính của ImageSearcher API
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, đổi kích thước và hệ màu chuyển đổi.
Khu vực quan tâm của hình ảnh nhập vào.
Điều kiện tiên quyết
Trước khi sử dụng API ImageSearcher
, bạn cần tạo một chỉ mục dựa trên
tập hợp hình ảnh tuỳ chỉnh để tìm kiếm. Có thể thực hiện điều này bằng cách sử dụng
API Trình tìm kiếm mô hình Maker
bằng cách làm theo và điều chỉnh
hướng dẫn.
Để làm được điều này, bạn sẽ cần:
- mô hình nhúng hình ảnh TFLite như mobilenet phiên bản 3. Xem thêm các mô hình nhúng đã được huấn luyện 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 các Mô hình Kaggle.
- tập hợp hình ảnh của bạn.
Sau bước này, bạn sẽ có một mô hình người tìm kiếm TFLite độc lập (ví dụ:
mobilenet_v3_searcher.tflite
), đây là mô hình nhúng ảnh gốc với
chỉ mục được đính kèm vào
Siêu dữ liệu mô hình TFLite.
Chạy dự đoán trong Java
Bước 1: Nhập phần phụ thuộc Gradle và các chế độ cài đặt khác
Sao chép tệp mô hình người tìm kiếm .tflite
vào thư mục tài sản của Android
mô-đun mà mô hình sẽ chạy. Chỉ định rằng tệp không được
nén và thêm thư viện TensorFlow Lite vào build.gradle
của mô-đun
tệp:
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
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 lựa chọn để định cấu hình ImageSearcher
.
Chạy dự đoá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
để có thêm lựa chọn để định cấu hình ImageSearcher
.
Chạy suy luận trong Python
Bước 1: Cài đặt gói TensorFlow Lite Support Pypi.
Bạn có thể cài đặt gói TensorFlow Lite Support Pypi bằng cách dùng 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
để có thêm lựa chọn để định cấu hình ImageSearcher
.
Kết quả mẫu
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
Thử mẹo đơn giản Công cụ minh hoạ CLI cho ImageSearcher thông qua mô hình và dữ liệu thử nghiệm của riêng bạn.