دمج الباحثين عن الصور

يتيح البحث عن الصور البحث عن صور مماثلة في قاعدة بيانات الصور. وهو يعمل عن طريق تضمين استعلام البحث في متجه عالي الأبعاد يمثل المعنى الدلالي للاستعلام، متبوعًا بالبحث عن التشابه في فهرس مخصص محدد مسبقًا باستخدام ScaNN (أقرب جيران قابلين للتحجيم).

على عكس تصنيف الصور ، فإن زيادة عدد العناصر التي يمكن التعرف عليها لا يتطلب إعادة تدريب النموذج بأكمله. يمكن إضافة عناصر جديدة بمجرد إعادة بناء الفهرس. يتيح ذلك أيضًا العمل مع قواعد بيانات أكبر للصور (أكثر من 100 ألف عنصر).

استخدم واجهة برمجة التطبيقات الخاصة بمكتبة المهام ImageSearcher لنشر باحث الصور المخصص في تطبيقات الهاتف المحمول الخاصة بك.

الميزات الرئيسية لواجهة برمجة تطبيقات ImageSearcher

  • يأخذ صورة واحدة كمدخل، ويقوم باستخراج التضمين والبحث عن أقرب جار في الفهرس.

  • معالجة الصور المدخلة، بما في ذلك التدوير وتغيير الحجم وتحويل مساحة اللون.

  • منطقة الاهتمام لصورة الإدخال.

المتطلبات الأساسية

قبل استخدام ImageSearcher API، يجب إنشاء فهرس استنادًا إلى مجموعة الصور المخصصة للبحث فيها. ويمكن تحقيق ذلك باستخدام Model Maker Searcher API باتباع البرنامج التعليمي وتكييفه.

لهذا سوف تحتاج:

بعد هذه الخطوة، يجب أن يكون لديك نموذج بحث TFLite مستقل (على سبيل المثال mobilenet_v3_searcher.tflite )، وهو نموذج تضمين الصور الأصلي مع الفهرس المرفق في البيانات التعريفية لنموذج TFLite .

تشغيل الاستدلال في جافا

الخطوة 1: استيراد تبعية Gradle والإعدادات الأخرى

انسخ ملف نموذج الباحث .tflite إلى دليل الأصول الخاص بوحدة Android حيث سيتم تشغيل النموذج. حدد أنه لا ينبغي ضغط الملف، وأضف مكتبة TensorFlow Lite إلى ملف build.gradle الخاص بالوحدة:

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'
}

الخطوة 2: استخدام النموذج

// 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);

راجع الكود المصدري وjavadoc لمزيد من الخيارات لتكوين ImageSearcher .

تشغيل الاستدلال في 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();

راجع الكود المصدري لمزيد من الخيارات لتكوين ImageSearcher .

تشغيل الاستدلال في بيثون

الخطوة 1: تثبيت حزمة TensorFlow Lite Support Pypi.

يمكنك تثبيت حزمة TensorFlow Lite Support Pypi باستخدام الأمر التالي:

pip install tflite-support

الخطوة 2: استخدام النموذج

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 .

نتائج المثال

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

جرب أداة CLI التجريبية البسيطة لـ ImageSearcher باستخدام النموذج الخاص بك وبيانات الاختبار.