يتيح البحث عن الصور البحث عن صور مماثلة في قاعدة بيانات الصور. وهو يعمل عن طريق تضمين استعلام البحث في متجه عالي الأبعاد يمثل المعنى الدلالي للاستعلام، متبوعًا بالبحث عن التشابه في فهرس مخصص محدد مسبقًا باستخدام ScaNN (أقرب جيران قابلين للتحجيم).
على عكس تصنيف الصور ، فإن زيادة عدد العناصر التي يمكن التعرف عليها لا يتطلب إعادة تدريب النموذج بأكمله. يمكن إضافة عناصر جديدة بمجرد إعادة بناء الفهرس. يتيح ذلك أيضًا العمل مع قواعد بيانات أكبر للصور (أكثر من 100 ألف عنصر).
استخدم واجهة برمجة التطبيقات الخاصة بمكتبة المهام ImageSearcher
لنشر باحث الصور المخصص في تطبيقات الهاتف المحمول الخاصة بك.
الميزات الرئيسية لواجهة برمجة تطبيقات ImageSearcher
يأخذ صورة واحدة كمدخل، ويقوم باستخراج التضمين والبحث عن أقرب جار في الفهرس.
معالجة الصور المدخلة، بما في ذلك التدوير وتغيير الحجم وتحويل مساحة اللون.
منطقة الاهتمام لصورة الإدخال.
المتطلبات الأساسية
قبل استخدام ImageSearcher
API، يجب إنشاء فهرس استنادًا إلى مجموعة الصور المخصصة للبحث فيها. ويمكن تحقيق ذلك باستخدام Model Maker Searcher API باتباع البرنامج التعليمي وتكييفه.
لهذا سوف تحتاج:
- نموذج تضمين الصور TFLite مثل mobilenet v3 . شاهد المزيد من نماذج التضمين المُدربة مسبقًا (المعروفة أيضًا باسم نماذج المتجهات المميزة) من مجموعة Google Image Modules على TensorFlow Hub .
- مجموعة الصور الخاصة بك.
بعد هذه الخطوة، يجب أن يكون لديك نموذج بحث 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 باستخدام النموذج الخاص بك وبيانات الاختبار.