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 cơ sở dữ liệu hình ảnh. Thư viện này hoạt động bằng cách nhúng cụm từ tìm kiếm vào một vectơ nhiều chiều biểu thị ý nghĩa ngữ nghĩa của cụm từ tìm kiếm, sau đó tìm kiếm sự tương đồng trong một chỉ mục tuỳ chỉnh, được xác định trước bằng cách sử dụng ScaNN (Tìm kiếm lân cận có thể mở rộng).
Không giống như phân loại hình ảnh, việc mở rộng số lượng mặt hàng có thể nhận dạng không yêu cầu bạn phải huấn luyện lại toàn bộ mô hình. Bạn có thể thêm các mục mới bằng cách chỉ cần tạo 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 Thư viện tác vụ ImageSearcher để triển khai trình tìm kiếm hình ảnh tuỳ chỉnh vào các ứng dụng 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 dữ liệu đầu vào, thực hiện việc trích xuất thông tin nhúng và tìm kiếm lân cận trong chỉ mục.
Xử lý hình ảnh đầu vào, bao gồm xoay, đổi kích thước và chuyển đổi không gian màu.
Khu vực 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, 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. Bạn có thể thực hiện việc này bằng cách sử dụng API Công cụ tìm kiếm của Trình tạo mô hình bằng cách làm theo và điều chỉnh hướng dẫn.
Để làm được việc này, bạn sẽ cần:
- một mô hình trình nhúng hình ảnh TFLite, chẳng hạn như mobilenet v3.
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) trong Bộ sưu tập Mô hình mô-đun hình ảnh của Google trên 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 công cụ tìm kiếm TFLite độc lập (ví dụ: mobilenet_v3_searcher.tflite), đây là mô hình công cụ 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 bằng 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 công cụ tìm kiếm .tflite vào thư mục tài sản của mô-đun Android nơi 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 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
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);
Hãy xem mã nguồn và javadoc để biết thêm các lựa chọn định cấu hình ImageSearcher.
Chạy suy luận bằng 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();
Hãy xem mã nguồn để biết thêm các 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 Pypi hỗ trợ TensorFlow Lite.
Bạn có thể cài đặt gói TensorFlow Lite Support Pypi 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)
Hãy xem mã nguồn để biết thêm các 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
Dùng thử công cụ minh hoạ CLI đơn giản cho ImageSearcher bằng mô hình và dữ liệu kiểm thử của riêng bạn.