Penelusuran gambar memungkinkan penelusuran gambar serupa dalam database gambar. Fitur ini berfungsi dengan menyematkan kueri penelusuran ke dalam vektor berdimensi tinggi yang merepresentasikan makna semantik kueri, diikuti dengan penelusuran kemiripan dalam indeks kustom yang telah ditentukan sebelumnya menggunakan ScaNN (Scalable Nearest Neighbors).
Berbeda dengan klasifikasi gambar, memperluas jumlah item yang dapat dikenali tidak memerlukan pelatihan ulang seluruh model. Item baru dapat ditambahkan hanya dengan membangun ulang indeks. Hal ini juga memungkinkan bekerja dengan database gambar yang lebih besar (lebih dari 100 ribu item).
Gunakan API ImageSearcher Task Library untuk men-deploy penelusur gambar kustom ke aplikasi seluler Anda.
Fitur utama ImageSearcher API
Mengambil satu gambar sebagai input, melakukan ekstraksi embedding dan penelusuran tetangga terdekat dalam indeks.
Pemrosesan gambar input, termasuk rotasi, pengubahan ukuran, dan konversi ruang warna.
Region yang diinginkan dari gambar input.
Prasyarat
Sebelum menggunakan ImageSearcher API, indeks perlu dibuat berdasarkan korpus gambar kustom yang akan ditelusuri. Hal ini dapat dilakukan menggunakan Model Maker
Searcher
API
dengan mengikuti dan menyesuaikan tutorial.
Untuk melakukannya, Anda akan memerlukan:
- model penyematan gambar TFLite seperti mobilenet
v3.
Lihat model embedder terlatih lainnya (alias model vektor fitur) dari
koleksi Modul Gambar Google di Kaggle
Models.
- korpus gambar Anda.
Setelah langkah ini, Anda akan memiliki model penelusuran TFLite mandiri (misalnya,
mobilenet_v3_searcher.tflite), yang merupakan model penyematan gambar asli dengan
indeks yang dilampirkan ke Metadata Model
TFLite.
Menjalankan inferensi di Java
Langkah 1: Impor dependensi Gradle dan setelan lainnya
Salin file model penelusur .tflite ke direktori aset modul Android tempat model akan dijalankan. Tentukan bahwa file tidak boleh dikompresi, dan tambahkan library TensorFlow Lite ke file build.gradle modul:
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'
}
Langkah 2: Menggunakan model
// 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);
Lihat kode sumber dan
javadoc
untuk opsi lainnya dalam mengonfigurasi ImageSearcher.
Menjalankan inferensi di 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();
Lihat kode
sumber
untuk opsi lainnya dalam mengonfigurasi ImageSearcher.
Menjalankan inferensi di Python
Langkah 1: Instal paket Pypi Dukungan TensorFlow Lite.
Anda dapat menginstal paket Pypi Dukungan TensorFlow Lite menggunakan perintah berikut:
pip install tflite-support
Langkah 2: Menggunakan model
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)
Lihat kode
sumber
untuk opsi lainnya dalam mengonfigurasi ImageSearcher.
Hasil contoh
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
Coba alat demo CLI sederhana untuk ImageSearcher dengan model dan data pengujian Anda sendiri.