Tích hợp trình tìm kiếm hình ảnh

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:

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.