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

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

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

استخدِم واجهة برمجة تطبيقات ImageSearcher لمكتبة المهام لتفعيل أداة البحث عن الصور المخصّصة. إلى تطبيقات الهاتف المحمول لديك.

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

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

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

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

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

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

لتنفيذ ذلك، سوف تحتاج إلى ما يلي:

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

تنفيذ الاستنتاج باستخدام Java

الخطوة 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
    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: تثبيت حزمة Pypi لدعم TensorFlow Lite

يمكنك تثبيت حزمة 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 باستخدام نموذجك الخاص وبيانات الاختبار.