Görsel arama, bir görsel veritabanında benzer görsellerin aranmasına olanak tanır. Arama sorgusunu, sorgunun anlamsal anlamını temsil eden yüksek boyutlu bir vektöre gömerek ve ardından ScaNN (Ölçeklenebilir En Yakın Komşular) kullanarak önceden tanımlanmış, özel bir dizinde benzerlik araması yaparak çalışır.
Görüntü sınıflandırmasının aksine, tanınabilecek öğelerin sayısını artırmak tüm modelin yeniden eğitilmesini gerektirmez. Dizini yeniden oluşturarak yeni öğeler eklenebilir. Bu aynı zamanda daha büyük (100 binden fazla öğe) görüntü veritabanlarıyla çalışmayı da mümkün kılar.
Özel görsel arama aracınızı mobil uygulamalarınıza dağıtmak için Görev Kitaplığı ImageSearcher
API'sini kullanın.
ImageSearcher API'sinin temel özellikleri
Giriş olarak tek bir görüntüyü alır, dizine gömme çıkarma ve en yakın komşu araması gerçekleştirir.
Döndürme, yeniden boyutlandırma ve renk alanı dönüştürme dahil olmak üzere giriş görüntüsü işleme.
Giriş görüntüsünün ilgi alanı.
Önkoşullar
ImageSearcher
API'sini kullanmadan önce, aranacak özel görseller topluluğuna dayalı bir dizin oluşturulması gerekir. Bu, öğreticiyi takip edip uyarlayarak Model Maker Searcher API kullanılarak gerçekleştirilebilir.
Bunun için ihtiyacınız olacak:
- mobilenet v3 gibi bir TFLite görüntü yerleştirme modeli. TensorFlow Hub'daki Google Görsel Modülleri koleksiyonundan daha fazla önceden eğitilmiş yerleştirme modeline (diğer adıyla özellik vektör modelleri) bakın.
- resim koleksiyonunuz.
Bu adımdan sonra, TFLite Model Meta Verilerine eklenen indeksle birlikte orijinal görüntü yerleştirme modeli olan bağımsız bir TFLite arama modeline (örn. mobilenet_v3_searcher.tflite
) sahip olmalısınız.
Java'da çıkarımı çalıştırma
Adım 1: 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 asset 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 (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'
}
Adım 2: Modelin kullanılması
// 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ırmaya yönelik daha fazla seçenek için kaynak koduna ve javadoc'a bakın.
Çıkarımı C++'da ç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ırmaya yönelik daha fazla seçenek için kaynak koduna bakın.
Python'da çıkarımı çalıştırma
Adım 1: TensorFlow Lite Support Pypi paketini yükleyin.
TensorFlow Lite Support Pypi paketini aşağıdaki komutu kullanarak yükleyebilirsiniz:
pip install tflite-support
Adım 2: Modelin kullanılması
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ırmaya yönelik daha fazla seçenek 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
Kendi modeliniz ve test verilerinizle ImageSearcher için basit CLI demo aracını deneyin.