تسمح ميزة "البحث بالصور" بالبحث عن صور مشابهة في قاعدة بيانات الصور. أُنشأها جون هنتر، الذي كان متخصصًا عن طريق تضمين طلب البحث في متجه عالي الأبعاد يمثل المعنى الدلالي لطلب البحث، متبوعًا ببحث التشابه في فهرس مخصص محدد مسبقًا باستخدام ScaNN (الجار الأقرب القابل للتوسع).
على عكس تصنيف الصور، لا يتطلب زيادة عدد العناصر التي يمكن التعرف عليها إعادة تدريب للنموذج بأكمله. يمكن إضافة عناصر جديدة ببساطة عند إعادة إنشاء الفهرس. هذا أيضًا تتيح العمل على قواعد بيانات أكبر (أكثر من 100 ألف عنصر) للصور.
استخدِم واجهة برمجة تطبيقات ImageSearcher
لمكتبة المهام لتفعيل أداة البحث عن الصور المخصّصة.
إلى تطبيقات الهاتف المحمول لديك.
الميزات الأساسية لواجهة برمجة التطبيقات ImageSearcher API
يتم أخذ صورة واحدة كإدخال وإجراء استخراج التضمين بحث الجار الأقرب في الفهرس.
معالجة الصور المدخلة، بما في ذلك التدوير وتغيير الحجم ومساحة اللون تحويل.
المنطقة محط الاهتمام للصورة التي تم إدخالها.
المتطلبات الأساسية
قبل استخدام واجهة برمجة التطبيقات ImageSearcher
، يجب إنشاء فهرس استنادًا إلى
مجموعة مخصصة من الصور للبحث فيها. يمكن تحقيق ذلك باستخدام
واجهة برمجة تطبيقات باحث "مصمم النماذج"
من خلال اتباع وتكييف
البرنامج التعليمي.
لتنفيذ ذلك، سوف تحتاج إلى ما يلي:
- نموذج أداة تضمين صور TFLite، مثل الإصدار 3 من Mobilenet. عرض المزيد من نماذج التضمين المدرّبة مسبقًا (المعروفة أيضًا باسم نماذج متجهات الميزات) من مجموعة وحدات صور 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
.
تنفيذ الاستنتاج في بايثون
الخطوة 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 باستخدام نموذجك الخاص وبيانات الاختبار.