Görsel arayanları entegre edin

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:

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.