Odtwarzacze osadzone obrazów umożliwiają umieszczanie obrazów w wysokowymiarowym wektorze cech reprezentujące semantyczne znaczenie obrazu, które można następnie porównać z wektora cech innych obrazów, aby ocenić ich podobieństwo semantyczne.
W przeciwieństwie do wyszukiwanie grafiki, Narzędzie do umieszczania obrazów pozwala na bieżąco obliczać podobieństwo obrazów zamiast przeszukiwać wstępnie zdefiniowany indeks utworzony na podstawie korpusu obrazów.
Użyj interfejsu Task Library API ImageEmbedder
, aby wdrożyć komponent do umieszczania niestandardowych obrazów
do aplikacji mobilnych.
Najważniejsze funkcje interfejsu ImageEmbedder API
Przetwarzanie obrazu, w tym obrót, zmiana rozmiaru i przestrzeń kolorów konwersji.
Obszar zainteresowań obrazu wejściowego.
Wbudowaną funkcję użytkową do obliczania podobieństwo cosinusowe między wektory cech.
Obsługiwane modele umieszczania obrazów
Te modele gwarantują zgodność z modelem ImageEmbedder
API.
Modele wektorowe cech z Kolekcja modułów obrazu Google w modelach Kaggle.
Modele niestandardowe, które spełniają wymaganiami dotyczącymi zgodności z modelem.
Uruchom wnioskowanie w 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());
Zobacz
kod źródłowy
, aby uzyskać więcej opcji konfigurowania ImageEmbedder
.
Uruchom wnioskowanie w Pythonie
Krok 1. Zainstaluj pakiet Pypi Support TensorFlow Lite.
Możesz zainstalować pakiet Pypi Support Pypi na TensorFlow Lite za pomocą: polecenie:
pip install tflite-support
Krok 2. Korzystanie z modelu
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)
Zobacz
kod źródłowy
, aby uzyskać więcej opcji konfigurowania ImageEmbedder
.
Przykładowe wyniki
Podobieństwo cosinusowe między znormalizowanymi wektorami cech zwraca wynik od -1 oraz 1. Im większe, tym lepsze, czyli podobieństwo cosinusowe rzędu 1 oznacza, że 2 wektory są identyczna.
Cosine similarity: 0.954312
Wypróbuj prostą Narzędzie interfejsu wiersza poleceń dla ImageEmbedder z własnym modelem i danymi testowymi.
Wymagania dotyczące zgodności z modelem
Interfejs ImageEmbedder
API wymaga modelu TFLite z opcjonalnym, ale znacznie silniejszym
zalecane
Metadane modelu TFLite.
Zgodne modele umieszczania obrazów powinny spełniać te wymagania:
Tensor obrazu wejściowego (kTfLiteUInt8/kTfLiteFloat32)
- plik do wprowadzania obrazu o rozmiarze
[batch x height x width x channels]
. - wnioskowanie wsadowe nie jest obsługiwane (wartość
batch
musi wynosić 1). - obsługiwane są tylko wejścia RGB (
channels
musi mieć wartość 3). - jeśli typ to kTfLiteFloat32, element NormalizationOptions musi mieć wartość do metadanych w celu normalizacji danych wejściowych.
- plik do wprowadzania obrazu o rozmiarze
Co najmniej jeden tensor wyjściowy (kTfLiteUInt8/kTfLiteFloat32)
- z komponentami
N
odpowiadającymi wymiaromN
zwróconych danych wektor cech dla tej warstwy wyjściowej. - Dostępne są 2 lub 4 wymiary, np.
[1 x N]
lub[1 x 1 x 1 x N]
.
- z komponentami