이미지 검색을 사용하면 이미지 데이터베이스에서 유사한 이미지를 검색할 수 있습니다. 그것은 검색어를 단어의 의미를 나타내는 고차원 벡터에 검색어의 의미론적 의미에 이어 사전 정의된 커스텀 색인을 ScaNN (확장 가능한 최근접 이웃).
반면 이미지 분류 인식할 수 있는 항목 수를 늘리기 위해 다시 학습할 필요가 없습니다. 모델을 학습시킬 수 있습니다 색인을 다시 빌드하여 간단히 새 항목을 추가할 수 있습니다. 또한 를 사용하면 대용량 (10만 개 이상의 항목) 이미지 데이터베이스로 작업할 수 있습니다.
Task Library ImageSearcher
API를 사용하여 커스텀 이미지 검색기를 배포합니다.
확인할 수 있습니다.
ImageSearcher API의 주요 기능
단일 이미지를 입력으로 받아 임베딩 추출을 수행하고 최근접 이웃 검색을 수행합니다.
회전, 크기 조절, 색상 공간을 포함한 입력 이미지 처리 알 수 있습니다.
입력 이미지의 관심 영역입니다.
기본 요건
ImageSearcher
API를 사용하기 전에 다음을 기반으로 색인을 빌드해야 합니다.
검색할 이미지의 커스텀 코퍼스를 생성합니다. 이렇게 하려면
Model Maker Searcher API
이를 기반으로
튜토리얼에서 확인하세요.
이를 위해 다음이 필요합니다.
- TFLite 이미지 삽입 모델(예: mobilenet v3 선행 학습된 임베딩 모델 (특성 벡터 모델)에 대해 자세히 알아보려면 Kaggle 모델의 Google Image Modules 컬렉션
- 이미지 코퍼스를 생성합니다
이 단계를 마치면 독립형 TFLite searcher 모델 (예:
mobilenet_v3_searcher.tflite
)는
색인
TFLite 모델 메타데이터.
Java에서 추론 실행
1단계: Gradle 종속 항목 및 기타 설정 가져오기
.tflite
검색기 모델 파일을 Android의 assets 디렉터리에 복사합니다.
모듈을 정의합니다 파일이
모듈의 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 패키지를 설치할 수 있습니다. 명령어:
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 데모 도구 모델을 학습시킬 수 있습니다