Penelusuran gambar memungkinkan penelusuran gambar yang mirip dalam database gambar. Ini dengan menyematkan kueri penelusuran ke dalam vektor berdimensi tinggi yang merepresentasikan makna semantik kueri, diikuti dengan pencarian kesamaan dalam indeks kustom yang telah ditentukan menggunakan ScaNN (Tetangga Terdekat yang Skalabel).
Berbeda dengan klasifikasi gambar, menambah 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 {i>database<i} gambar yang lebih besar (lebih dari 100 ribu item).
Gunakan Task Library ImageSearcher
API untuk men-deploy penelusuran gambar kustom
ke dalam aplikasi seluler.
Fitur utama ImageSearcher API
Mengambil satu gambar sebagai input, melakukan ekstraksi penyematan, dan terdekat dari terdekat di indeks.
Input pemrosesan gambar, termasuk rotasi, perubahan ukuran, dan ruang warna konversi.
Wilayah yang diminati gambar input.
Prasyarat
Sebelum menggunakan ImageSearcher
API, indeks perlu dibangun berdasarkan
korpus gambar kustom untuk ditelusuri. Hal ini dapat dilakukan dengan menggunakan
API Searcher Pembuat Model
dengan mengikuti dan menyesuaikan
tutorial.
Untuk melakukannya, Anda membutuhkan:
- model sematan gambar TFLite seperti mobilenet v3. Lihat model sematan terlatih lainnya (alias model vektor fitur) dari Koleksi Modul Gambar Google tentang Model Kaggle.
- korpus gambar Anda.
Setelah langkah ini, Anda akan memiliki model penelusur TFLite mandiri (mis.
mobilenet_v3_searcher.tflite
), yang merupakan model sematan gambar asli dengan
indeks yang dilampirkan ke dalam
Metadata Model TFLite.
Menjalankan inferensi di Java
Langkah 1: Impor dependensi Gradle dan setelan lainnya
Salin file model penelusur .tflite
ke direktori aset Android
modul tempat model akan dijalankan. Tetapkan bahwa file tidak boleh
dikompresi, lalu menambahkan library TensorFlow Lite ke build.gradle
modul
file:
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
guna mendapatkan opsi selengkapnya untuk mengonfigurasi ImageSearcher
.
Menjalankan inferensi di Python
Langkah 1: Instal paket Pypi Dukungan TensorFlow Lite.
Anda dapat menginstal paket Pypi Dukungan TensorFlow Lite menggunakan kode berikut 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
guna mendapatkan opsi selengkapnya untuk 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
Cobalah yang Alat demo CLI untuk ImageSearcher dengan model dan data uji Anda sendiri.