Pencarian gambar memungkinkan pencarian gambar serupa dalam database gambar. Ia bekerja dengan menyematkan kueri penelusuran ke dalam vektor dimensi tinggi yang mewakili makna semantik kueri, diikuti dengan penelusuran kesamaan dalam indeks khusus 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 kembali indeks. Ini juga memungkinkan bekerja dengan database gambar yang lebih besar (100k+ item).
Gunakan API ImageSearcher
Pustaka Tugas untuk menerapkan pencari gambar khusus ke dalam aplikasi seluler Anda.
Fitur utama dari ImageSearcher API
Mengambil satu gambar sebagai masukan, melakukan ekstraksi penyematan dan pencarian tetangga terdekat dalam indeks.
Pemrosesan gambar input, termasuk rotasi, pengubahan ukuran, dan konversi ruang warna.
Wilayah yang diinginkan dari gambar masukan.
Prasyarat
Sebelum menggunakan ImageSearcher
API, indeks perlu dibuat berdasarkan kumpulan gambar khusus untuk ditelusuri. Hal ini dapat dicapai dengan menggunakan Model Maker Searcher API dengan mengikuti dan mengadaptasi tutorial .
Untuk ini, Anda akan membutuhkan:
- model penyemat gambar TFLite seperti mobilenet v3 . Lihat lebih banyak model penyemat yang telah dilatih sebelumnya (alias model vektor fitur) dari koleksi Modul Gambar Google di TensorFlow Hub .
- kumpulan gambar Anda.
Setelah langkah ini, Anda harus memiliki model pencari TFLite mandiri (misalnya mobilenet_v3_searcher.tflite
), yang merupakan model penyemat gambar asli dengan indeks yang dilampirkan ke Metadata Model TFLite .
Jalankan inferensi di Java
Langkah 1: Impor ketergantungan Gradle dan pengaturan lainnya
Salin file model pencari .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 (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'
}
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 lebih lanjut untuk mengonfigurasi ImageSearcher
.
Jalankan 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 lebih lanjut untuk mengonfigurasi ImageSearcher
.
Jalankan inferensi dengan Python
Langkah 1: Instal paket Pypi Dukungan TensorFlow Lite.
Anda dapat menginstal paket TensorFlow Lite Support Pypi 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 lebih lanjut untuk mengonfigurasi ImageSearcher
.
Contoh hasil
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
Cobalah alat demo CLI sederhana untuk ImageSearcher dengan model dan data uji Anda sendiri.