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