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 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:

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.