「圖片搜尋」功能可在圖片資料庫中搜尋類似的圖片。這項服務 做法是將搜尋查詢嵌入 也就是查詢的語意含義,後面接著在 預先定義、自訂的索引 ScaNN (可大規模擴充的最近鄰點)。
相對於 是圖片分類 擴大可辨識的辨識項目數量,不需要重新訓練 整個模型如要加入新的項目,只需重新建構索引即可。這也 可讓您處理更大型 (超過 10 萬項目) 的圖片資料庫。
使用 Task Library ImageSearcher
API 部署自訂圖片搜尋工具
整合到您的行動應用程式中
ImageSearcher API 的主要功能
使用單一圖片做為輸入內容、執行嵌入擷取, 索引中最鄰近搜尋的項目。
輸入圖片處理作業,包括旋轉、調整大小和色域 轉換率
輸入圖片的搜尋目標區域。
必要條件
使用 ImageSearcher
API 前,必須先根據
自訂圖片語料庫此功能可以使用
Model Maker Searcher API
遵循並調整
教學課程)
為此,您需要符合以下條件:
- 和 TFLite 圖片嵌入模型 mobilenet v3。 查看更多預先訓練的嵌入器模型 (也就是特徵向量模型), Kaggle 模型上的 Google Image Modules 集合。
- 圖片語料庫
完成這個步驟後,您應該擁有獨立的 TFLite 搜尋工具模型 (例如
mobilenet_v3_searcher.tflite
),這是原始圖片嵌入器的模型
附加至
TFLite 模型中繼資料。
在 Java 中執行推論
步驟 1:匯入 Gradle 依附元件和其他設定
將 .tflite
搜尋工具模型檔案複製到 Android 的素材資源目錄
也就是要用來執行模型的模組指定
並將 TensorFlow Lite 程式庫新增至模組的 build.gradle
檔案:
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 Support Pypi 套件。
您可以使用下列指令安裝 TensorFlow Lite Support Pypi 套件 指令:
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 示範工具 使用自己的模型與測試資料