Görsel arama, görsel veritabanında benzer görselleri aramanıza olanak tanır. Bu işlem, arama sorgusunu sorgunun semantik anlamını temsil eden yüksek boyutlu bir vektöre yerleştirerek çalışır. Ardından, ScaNN (Ölçeklenebilir En Yakın Komşular) kullanılarak önceden tanımlanmış özel bir dizinde benzerlik araması yapılır.
Resim sınıflandırmanın aksine, tanınabilecek öğe sayısını artırmak için modelin tamamının yeniden eğitilmesi gerekmez. Yeni öğeler, dizin yeniden oluşturularak kolayca eklenebilir. Bu sayede, daha büyük (100.000'den fazla öğe) görüntü veritabanlarıyla da çalışabilirsiniz.
Özel resim arama aracınızı mobil uygulamalarınıza dağıtmak için Görev Kitaplığı ImageSearcher API'sini kullanın.
ImageSearcher API'nin temel özellikleri
Giriş olarak tek bir resim alır, gömmeleri çıkarır ve dizinde en yakın komşu araması yapar.
Döndürme, yeniden boyutlandırma ve renk alanı dönüştürme dahil olmak üzere giriş görüntüsü işleme.
Giriş resminin ilgi alanı.
Ön koşullar
ImageSearcher API'yi kullanmadan önce, aranacak özel resim derlemesine dayalı bir dizin oluşturulması gerekir. Bu, Model Maker
Searcher
API kullanılarak ve eğiticiyi takip edip uyarlayarak yapılabilir.
Bunun için ihtiyacınız olanlar:
- mobilenet
v3 gibi bir TFLite resim yerleştirme modeli.
Kaggle'daki Google Image Modules koleksiyonunda daha fazla önceden eğitilmiş yerleştirme modeli (diğer adıyla özellik vektörü modeli) görün.
- görüntü derlemeniz.
Bu adımdan sonra, dizinin TFLite Model Meta Verileri'ne eklenmiş olduğu orijinal resim yerleştirme modeli olan bağımsız bir TFLite arama modeli (ör.
mobilenet_v3_searcher.tflite) elde etmeniz gerekir.
Java'da çıkarım çalıştırma
1. adım: Gradle bağımlılığını ve diğer ayarları içe aktarın
.tflite arama modeli dosyasını, modelin çalıştırılacağı Android modülünün öğeler dizinine kopyalayın. Dosyanın sıkıştırılmaması gerektiğini belirtin ve TensorFlow Lite kitaplığını modülün build.gradle dosyasına ekleyin:
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'
}
2. adım: Modeli kullanma
// 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);
ImageSearcher yapılandırmayla ilgili daha fazla seçenek için kaynak kodu ve javadoc'a bakın.
C++'ta çıkarım çalıştırma
// 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();
ImageSearcher yapılandırmayla ilgili diğer seçenekler için kaynak koduna bakın.
Python'da çıkarım çalıştırma
1. adım: TensorFlow Lite Support Pypi paketini yükleyin.
Aşağıdaki komutu kullanarak TensorFlow Lite Support Pypi paketini yükleyebilirsiniz:
pip install tflite-support
2. adım: Modeli kullanma
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)
ImageSearcher yapılandırmayla ilgili diğer seçenekler için kaynak koduna bakın.
Örnek sonuçlar
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
ImageSearcher için basit KSA demo aracını kendi modeliniz ve test verilerinizle deneyin.