画像埋め込みを使用すると、高次元の特徴ベクトルに画像を埋め込むことが可能 画像の意味的な意味を表すもので、画像とラベルの 他の画像の特徴ベクトルを使用して、意味的類似性を評価します。
従来の 画像検索 画像エンべディングを使用すると、画像間の類似度をその場で計算できます。 イメージのコーパスから構築された事前定義されたインデックスを使って検索する代わりに、
タスク ライブラリの ImageEmbedder
API を使用してカスタム画像埋め込みをデプロイする
モバイルアプリに統合します
ImageEmbedder API の主な機能
入力画像処理(回転、サイズ変更、色空間など) なります。
入力画像の関心領域。
指標を計算するための組み込みのユーティリティ関数 モデル間のコサイン類似度 特徴ベクトルが作成されます。
サポートされている画像埋め込みモデル
次のモデルは、ImageEmbedder
との互換性が保証されています
API
特徴量ベクトルモデルを Kaggle モデルに関する Google 画像モジュール コレクション。
要件を満たすカスタムモデルは、 モデル互換性の要件。
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 パッケージをインストールする
以下を使用して、TensorFlow Lite サポート Pypi パッケージをインストールできます。 command:
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 であれば、2 つのベクトルは あります。
Cosine similarity: 0.954312
シンプルな ImageEmbedder 用の CLI デモツール 独自のモデルとテストデータで トレーニングできます
モデルの互換性要件
ImageEmbedder
API は TFLite モデルを想定していますが、必須です。
推奨
TFLite モデル メタデータ。
互換性のある画像埋め込みモデルは、次の要件を満たす必要があります。
入力画像のテンソル(kTfLiteUInt8/kTfLiteFloat32)
- サイズ
[batch x height x width x channels]
の画像入力。 - バッチ推論はサポートされていません(
batch
は 1 にする必要があります)。 - RGB 入力のみがサポートされます(
channels
は 3 にする必要があります)。 - 型が kTfLiteFloat32 の場合、NormalizationOptions は必須です。 メタデータにアタッチされるデータです。
- サイズ
1 つ以上の出力テンソル(kTfLiteUInt8/kTfLiteFloat32)
- 返された
N
ディメンションに対応するN
コンポーネントを含む ベクトルを指定します。 - 2 つまたは 4 つのディメンション(例:
[1 x N]
、[1 x 1 x 1 x N]
)。
- 返された