כלי הטמעה של תמונות מאפשרים הטמעת תמונות בווקטור מאפיין של ממדים גבוהים שמייצג את המשמעות הסמנטית של תמונה, ואז אפשר להשוות אותה את הווקטור המאפיין של תמונות אחרות כדי להעריך את הדמיון הסמנטי שלהן.
בניגוד ל- חיפוש תמונות, כלי הטמעת התמונות מאפשר לחשב את הדמיון בין תמונות בזמן אמת במקום לחפש באינדקס מוגדר מראש שנוצר מתוך אוסף של תמונות.
משתמשים ב-API של ספריית המשימות ImageEmbedder
כדי לפרוס את כלי ההטמעה של תמונות בהתאמה אישית
לאפליקציות שלכם לנייד.
תכונות מרכזיות של ImageEmbedder API
עיבוד תמונות קלט, כולל סיבוב, שינוי גודל ומרחב צבעים להמרה.
אזור העניין של תמונת הקלט.
פונקציית שירות מובנית לחישוב דמיון בין קוסינוס ויוצר וקטורים של מאפיינים.
מודלים נתמכים של כלי הטמעה של תמונות
מובטח שהמודלים הבאים יתאימו לImageEmbedder
API.
להציג מודלים של וקטורים אוסף מודולים של תמונות Google במודלים של Kaggle.
מודלים מותאמים אישית שעומדים בדרישות התאימות של המודלים.
הרצת ההסקה ב-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
.
הרצת ההסקה ב-Python
שלב 1: מתקינים את חבילת התמיכה TensorFlow Lite מסוג Pypi.
אפשר להתקין את חבילת Pypi לתמיכה של TensorFlow Lite באמצעות הפקודה:
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 את המודל ונתוני הבדיקה שלכם.
דרישות התאימות של המודלים
ה-API ImageEmbedder
מצפה למודל TFLite עם אפשרות, אבל חזקה מאוד
מומלץ
מטא-נתונים של מודל TFLite.
הדגמים התואמים של הטמעות התמונות צריכים לעמוד בדרישות הבאות:
טנזור תמונה של קלט (kTfLiteUInt8/kTfLiteFloat32)
- קלט תמונה בגודל
[batch x height x width x channels]
. - אין תמיכה בהֶקֵּשׁ מנתונים מרובים (הפונקציה
batch
חייבת להיות 1). - יש תמיכה רק בקלט RGB (הערך
channels
חייב להיות 3). - אם הסוג הוא kTfLiteFloat32, יש צורך ב-regularizationOptions מצורפים למטא-נתונים לצורך נירמול הקלט.
- קלט תמונה בגודל
לפחות טינזור אחד של פלט (kTfLiteUInt8/kTfLiteFloat32)
- עם
N
רכיבים שתואמים למידותN
של המוחזר לשכבת הפלט הזו. - 2 או 4 מאפיינים, כלומר
[1 x N]
או[1 x 1 x 1 x N]
.
- עם