جستجوی تصویر امکان جستجوی تصاویر مشابه در پایگاه داده تصاویر را فراهم میکند. این کار با جاسازی عبارت جستجو در یک بردار با ابعاد بالا که نمایانگر معنای معنایی عبارت جستجو است، انجام میشود و به دنبال آن جستجوی شباهت در یک شاخص از پیش تعریف شده و سفارشی با استفاده از ScaNN (نزدیکترین همسایههای مقیاسپذیر) انجام میشود.
برخلاف طبقهبندی تصویر ، افزایش تعداد مواردی که میتوان تشخیص داد نیازی به آموزش مجدد کل مدل ندارد. موارد جدید را میتوان به سادگی با بازسازی شاخص اضافه کرد. این امر همچنین امکان کار با پایگاههای داده بزرگتر (بیش از ۱۰۰ هزار مورد) از تصاویر را فراهم میکند.
از API مربوط به Task Library ImageSearcher برای پیادهسازی جستجوگر تصویر سفارشی خود در برنامههای تلفن همراه استفاده کنید.
ویژگیهای کلیدی رابط برنامهنویسی کاربردی جستجوی تصویر (ImageSearcher API)
یک تصویر واحد را به عنوان ورودی میگیرد، استخراج جاسازی و جستجوی نزدیکترین همسایه را در اندیس انجام میدهد.
پردازش تصویر ورودی، شامل چرخش، تغییر اندازه و تبدیل فضای رنگ.
ناحیه مورد نظر تصویر ورودی.
پیشنیازها
قبل از استفاده از رابط برنامهنویسی کاربردی ImageSearcher ، باید یک فهرست بر اساس مجموعه تصاویر سفارشی برای جستجو ساخته شود. این کار را میتوان با استفاده از رابط برنامهنویسی کاربردی Model Maker Searcher و با دنبال کردن و تطبیق با آموزش مربوطه انجام داد.
برای این کار به موارد زیر نیاز خواهید داشت:
- یک مدل جاسازی تصویر TFLite مانند mobilenet نسخه ۳. مدلهای جاسازی از پیش آموزشدیده بیشتر (معروف به مدلهای بردار ویژگی) را از مجموعه ماژولهای تصویر گوگل در Kaggle Models ببینید.
- مجموعه تصاویر شما.
پس از این مرحله، شما باید یک مدل جستجوگر TFLite مستقل (مثلاً mobilenet_v3_searcher.tflite ) داشته باشید که مدل جاسازی تصویر اصلی با اندیس متصل به متاداده مدل TFLite است.
اجرای استنتاج در جاوا
مرحله ۱: وارد کردن وابستگی Gradle و سایر تنظیمات
فایل مدل .tflite searcher را در دایرکتوری assets ماژول اندروید که مدل در آن اجرا خواهد شد، کپی کنید. مشخص کنید که فایل نباید فشرده شود و کتابخانه 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'
}
مرحله ۲: استفاده از مدل
// 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);
برای گزینههای بیشتر برای پیکربندی ImageSearcher به کد منبع و javadoc مراجعه کنید.
اجرای استنتاج در ++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
مرحله ۲: استفاده از مدل
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 را با مدل و دادههای آزمایشی خودتان امتحان کنید.