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

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:

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.