画像検索では、画像のデータベースから類似の画像を検索できます。これは、 ベクトルに検索クエリを埋め込み、 クエリのセマンティックな意味を返してから、類似性検索を カスタム インデックスを作成し、 ScaNN (スケーラブルな最近傍探索)。
従来の 画像分類、 認識できるアイテムの数を増やしても再トレーニングは不要 モデル全体を表します。インデックスを再構築するだけで、新しいアイテムを追加できます。また、 を使用すると、大規模な(10 万以上のアイテム)画像のデータベースを操作できます。
タスク ライブラリ ImageSearcher
API を使用してカスタム画像検索ツールをデプロイする
モバイルアプリに統合します
ImageSearcher API の主な機能
単一の画像を入力として受け取り、エンべディング抽出を行い、 最近傍探索を実行します
入力画像処理(回転、サイズ変更、色空間など) なります。
入力画像の関心領域。
前提条件
ImageSearcher
API を使用する前に、
検索対象の画像のカスタム コーパスを指定します。これを行うには、
Model Maker Searcher API
それに適応することで、
チュートリアルをご覧ください。
以下のものが必要です。
- TFLite 画像埋め込みモデルを使用します。 mobilenet v3。 その他の事前トレーニング済み埋め込みモデル(特徴ベクトル モデル)については、 Kaggle モデルに関する Google 画像モジュール コレクション。
- 生成できます。
このステップを終えると、スタンドアロンの TFLite サーチャー モデル(
mobilenet_v3_searcher.tflite
)。これは、元の画像埋め込みモデルで、
アタッチされたインデックスを
TFLite モデル メタデータ。
Java で推論を実行する
ステップ 1: Gradle の依存関係とその他の設定をインポートする
.tflite
サーチャー モデルファイルを Android のアセット ディレクトリにコピーします。
モデルを実行するモジュールですこのファイルの内容が
モジュールの build.gradle
に TensorFlow Lite ライブラリを追加します。
ファイル:
android {
// Other settings
// Specify tflite index file should not be compressed for the app apk
aaptOptions {
noCompress "tflite"
}
}
dependencies {
// Other dependencies
// Import the Task Vision Library dependency
implementation 'org.tensorflow:tensorflow-lite-task-vision:0.4.4'
// Import the GPU delegate plugin Library for GPU inference
implementation 'org.tensorflow:tensorflow-lite-gpu-delegate-plugin:0.4.4'
}
ステップ 2: モデルを使用する
// Initialization
ImageSearcherOptions options =
ImageSearcherOptions.builder()
.setBaseOptions(BaseOptions.builder().useGpu().build())
.setSearcherOptions(
SearcherOptions.builder().setL2Normalize(true).build())
.build();
ImageSearcher imageSearcher =
ImageSearcher.createFromFileAndOptions(context, modelFile, options);
// Run inference
List<NearestNeighbor> results = imageSearcher.search(image);
詳しくは、
ソースコードと javadoc
ImageSearcher
を構成するその他のオプションをご覧ください。
C++ で推論を実行する
// Initialization
ImageSearcherOptions options;
options.mutable_base_options()->mutable_model_file()->set_file_name(model_path);
options.mutable_embedding_options()->set_l2_normalize(true);
std::unique_ptr<ImageSearcher> image_searcher = ImageSearcher::CreateFromOptions(options).value();
// Create input frame_buffer from your inputs, `image_data` and `image_dimension`.
// See more information here: tensorflow_lite_support/cc/task/vision/utils/frame_buffer_common_utils.h
std::unique_ptr<FrameBuffer> frame_buffer = CreateFromRgbRawBuffer(
image_data, image_dimension);
// Run inference
const SearchResult result = image_searcher->Search(*frame_buffer).value();
詳しくは、
ソースコード
ImageSearcher
を構成するその他のオプションをご覧ください。
Python で推論を実行する
ステップ 1: TensorFlow Lite サポート Pypi パッケージをインストールする
以下を使用して、TensorFlow Lite サポート Pypi パッケージをインストールできます。 command:
pip install tflite-support
ステップ 2: モデルを使用する
from tflite_support.task import vision
# Initialization
image_searcher = vision.ImageSearcher.create_from_file(model_path)
# Run inference
image = vision.TensorImage.create_from_file(image_file)
result = image_searcher.search(image)
詳しくは、
ソースコード
ImageSearcher
を構成するその他のオプションをご覧ください。
検索結果の例
Results:
Rank#0:
metadata: burger
distance: 0.13452
Rank#1:
metadata: car
distance: 1.81935
Rank#2:
metadata: bird
distance: 1.96617
Rank#3:
metadata: dog
distance: 2.05610
Rank#4:
metadata: cat
distance: 2.06347
シンプルな ImageSearcher 用の CLI デモツール 独自のモデルとテストデータで トレーニングできます