جاسازیکنندههای تصویر اجازه میدهند تا تصاویر را در یک بردار ویژگی با ابعاد بالا تعبیه کنند که معنای معنایی یک تصویر را نشان میدهد، که سپس میتواند با بردار ویژگی سایر تصاویر مقایسه شود تا شباهت معنایی آنها ارزیابی شود.
برخلاف جستجوی تصویر ، جاسازیکننده تصویر به جای جستجو در فهرست از پیش تعریفشدهای که از مجموعهای از تصاویر ساخته شده است، امکان محاسبه شباهت بین تصاویر را در لحظه فراهم میکند.
از Task Library ImageEmbedder
API برای استقرار جاسازی کننده تصویر سفارشی خود در برنامه های تلفن همراه خود استفاده کنید.
ویژگی های کلیدی ImageEmbedder API
پردازش تصویر ورودی، از جمله چرخش، تغییر اندازه و تبدیل فضای رنگ.
منطقه مورد علاقه تصویر ورودی.
تابع ابزار داخلی برای محاسبه شباهت کسینوس بین بردارهای ویژگی.
مدل های جاسازی تصویر پشتیبانی شده
مدل های زیر تضمین شده است که با ImageEmbedder
API سازگار هستند.
مدلهای برداری از مجموعه ماژولهای تصویر Google در Kaggle Models را مشخص کنید.
مدل های سفارشی که الزامات سازگاری مدل را برآورده می کنند.
استنتاج را در C++ اجرا کنید
// Initialization
ImageEmbedderOptions options:
options.mutable_model_file_with_metadata()->set_file_name(model_path);
options.set_l2_normalize(true);
std::unique_ptr<ImageEmbedder> image_embedder = ImageEmbedder::CreateFromOptions(options).value();
// Create input frame_buffer_1 and frame_buffer_2 from your inputs `image_data1`, `image_data2`, `image_dimension1` and `image_dimension2`.
// See more information here: tensorflow_lite_support/cc/task/vision/utils/frame_buffer_common_utils.h
std::unique_ptr<FrameBuffer> frame_buffer_1 = CreateFromRgbRawBuffer(
image_data1, image_dimension1);
std::unique_ptr<FrameBuffer> frame_buffer_2 = CreateFromRgbRawBuffer(
image_data2, image_dimension2);
// Run inference on two images.
const EmbeddingResult result_1 = image_embedder->Embed(*frame_buffer_1);
const EmbeddingResult result_2 = image_embedder->Embed(*frame_buffer_2);
// Compute cosine similarity.
double similarity = ImageEmbedder::CosineSimilarity(
result_1.embeddings[0].feature_vector(),
result_2.embeddings[0].feature_vector());
برای گزینه های بیشتر برای پیکربندی ImageEmbedder
به کد منبع مراجعه کنید.
استنتاج را در پایتون اجرا کنید
مرحله 1: بسته TensorFlow Lite Support Pypi را نصب کنید.
با استفاده از دستور زیر می توانید بسته TensorFlow Lite Support Pypi را نصب کنید:
pip install tflite-support
مرحله 2: استفاده از مدل
from tflite_support.task import vision
# Initialization.
image_embedder = vision.ImageEmbedder.create_from_file(model_path)
# Run inference on two images.
image_1 = vision.TensorImage.create_from_file('/path/to/image1.jpg')
result_1 = image_embedder.embed(image_1)
image_2 = vision.TensorImage.create_from_file('/path/to/image2.jpg')
result_2 = image_embedder.embed(image_2)
# Compute cosine similarity.
feature_vector_1 = result_1.embeddings[0].feature_vector
feature_vector_2 = result_2.embeddings[0].feature_vector
similarity = image_embedder.cosine_similarity(
result_1.embeddings[0].feature_vector, result_2.embeddings[0].feature_vector)
برای گزینه های بیشتر برای پیکربندی ImageEmbedder
به کد منبع مراجعه کنید.
نتایج نمونه
شباهت کسینوس بین بردارهای ویژگی نرمال شده امتیازی بین -1 و 1 برمیگرداند. بالاتر بهتر است، یعنی شباهت کسینوس 1 به معنای یکسان بودن دو بردار است.
Cosine similarity: 0.954312
ابزار آزمایشی ساده CLI را برای ImageEmbedder با مدل و داده های آزمایشی خود امتحان کنید.
الزامات سازگاری مدل
ImageEmbedder
API انتظار دارد یک مدل TFLite با فراداده مدل TFLite اختیاری، اما به شدت توصیه شده باشد.
مدلهای جاسازی تصویر سازگار باید شرایط زیر را برآورده کنند:
یک تانسور تصویر ورودی (kTfLiteUInt8/kTfLiteFloat32)
- اندازه ورودی تصویر
[batch x height x width x channels]
. - استنتاج دسته ای پشتیبانی نمی شود (
batch
باید 1 باشد). - فقط ورودی های RGB پشتیبانی می شوند (
channels
باید 3 باشند). - اگر نوع kTfLiteFloat32 باشد، برای عادی سازی ورودی، باید NormalizationOptions به ابرداده پیوست شود.
- اندازه ورودی تصویر
حداقل یک تانسور خروجی (kTfLiteUInt8/kTfLiteFloat32)
- با
N
مولفه مربوط به ابعادN
بردار ویژگی بازگشتی برای این لایه خروجی. - یا 2 یا 4 بعد، یعنی
[1 x N]
یا[1 x 1 x 1 x N]
.
- با