이미지 검색기 통합

이미지 검색을 사용하면 이미지 데이터베이스에서 유사한 이미지를 검색할 수 있습니다. 그것은 검색어를 단어의 의미를 나타내는 고차원 벡터에 검색어의 의미론적 의미에 이어 사전 정의된 커스텀 색인을 ScaNN (확장 가능한 최근접 이웃).

반면 이미지 분류 인식할 수 있는 항목 수를 늘리기 위해 다시 학습할 필요가 없습니다. 모델을 학습시킬 수 있습니다 색인을 다시 빌드하여 간단히 새 항목을 추가할 수 있습니다. 또한 를 사용하면 대용량 (10만 개 이상의 항목) 이미지 데이터베이스로 작업할 수 있습니다.

Task Library ImageSearcher API를 사용하여 커스텀 이미지 검색기를 배포합니다. 확인할 수 있습니다.

ImageSearcher API의 주요 기능

  • 단일 이미지를 입력으로 받아 임베딩 추출을 수행하고 최근접 이웃 검색을 수행합니다.

  • 회전, 크기 조절, 색상 공간을 포함한 입력 이미지 처리 알 수 있습니다.

  • 입력 이미지의 관심 영역입니다.

기본 요건

ImageSearcher API를 사용하기 전에 다음을 기반으로 색인을 빌드해야 합니다. 검색할 이미지의 커스텀 코퍼스를 생성합니다. 이렇게 하려면 Model Maker Searcher API 이를 기반으로 튜토리얼에서 확인하세요.

이를 위해 다음이 필요합니다.

이 단계를 마치면 독립형 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 데모 도구 모델을 학습시킬 수 있습니다