इमेज एम्बेडर इंटिग्रेट करें

इमेज एम्बेडर की मदद से, हाई-डाइमेंशन वाले फ़ीचर वेक्टर में इमेज एम्बेड की जा सकती हैं यह किसी इमेज के सिमैंटिक मतलब को दिखाता है, जिसकी तुलना इससे की जा सकती है सुविधा वेक्टर का इस्तेमाल किया जा सकता है, ताकि अन्य इमेज की सिमैंटिक समानता पता चल सके.

इसके उलट इमेज सर्च, इमेज एम्बेडर, तुरंत इमेज की समानता का पता लगाने में मदद करता है करने के लिए, उन्हें कई इमेज के कलेक्शन से पहले से तैयार इंडेक्स में खोजा जा सकता है.

अपनी पसंद के मुताबिक इमेज एम्बेडर को डिप्लॉय करने के लिए, टास्क लाइब्रेरी ImageEmbedder API का इस्तेमाल करें आपके मोबाइल ऐप्लिकेशन में.

ImageEmbedder API की मुख्य सुविधाएं

  • इनपुट इमेज प्रोसेसिंग, जिसमें रोटेशन, साइज़ बदलना, और कलर स्पेस शामिल हैं कन्वर्ज़न होता है.

  • इनपुट इमेज के लिए दिलचस्पी का क्षेत्र.

  • यह कैलकुलेट करने के लिए, पहले से मौजूद यूटिलिटी फ़ंक्शन इनके बीच कोसाइन (cosine) फ़ीचर वेक्टर.

इस्तेमाल किए जा सकने वाले इमेज एम्बेडर मॉडल

ये मॉडल, ImageEmbedder के साथ काम करते हैं एपीआई.

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 में इन्फ़रेंस चलाना

पहला चरण: TensorFlow Lite का Pypi पैकेज इंस्टॉल करें.

TensorFlow Lite का सहायता Pypi पैकेज इंस्टॉल करने के लिए, इनका इस्तेमाल करें: आदेश:

pip install tflite-support

दूसरा चरण: मॉडल का इस्तेमाल करना

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. ज़्यादा वैल्यू बेहतर होती है. इसका मतलब है कि कोसाइन (cosine) के बीच 1 का मतलब है कि दोनों वेक्टर एक जैसा.

Cosine similarity: 0.954312

आसान तरीके आज़माएं ImageEmbedder के लिए सीएलआई डेमो टूल की मदद से कैसे डिज़ाइन किया गया है.

मॉडल के साथ काम करने से जुड़ी ज़रूरी शर्तें

ImageEmbedder एपीआई के लिए, TFLite मॉडल ज़रूरी है. हालांकि, यह ज़रूरी नहीं है. हालांकि, यह ज़रूरी है अनुमोदित TFLite मॉडल का मेटाडेटा.

साथ काम करने वाले इमेज एम्बेडर मॉडल को ये ज़रूरी शर्तें पूरी करनी होंगी:

  • इनपुट इमेज टेंसर (kTfLiteUInt8/kTfLiteFloat32)

    • [batch x height x width x channels] साइज़ का इमेज इनपुट.
    • बैच का अनुमान काम नहीं करता (batch को 1 होना ज़रूरी है).
    • सिर्फ़ आरजीबी इनपुट इस्तेमाल किए जा सकते हैं (channels का नंबर 3 होना ज़रूरी है).
    • अगर टाइप kTfLiteFloat32 है, तो NormalizationOptions को इनपुट नॉर्मलाइज़ेशन के लिए मेटाडेटा से जोड़ा गया है.
  • कम से कम एक आउटपुट टेंसर (kTfLiteUInt8/kTfLiteFloat32)

    • लौटाए गए प्रॉडक्ट के N डाइमेंशन से जुड़े N कॉम्पोनेंट के साथ इस आउटपुट लेयर के लिए फ़ीचर वेक्टर.
    • दो या चार डाइमेंशन, जैसे कि [1 x N] या [1 x 1 x 1 x N].