ML Kit 분석 도구

Google의 ML Kit는 얼굴 인식, 바코드 스캔, 이미지 라벨 지정 등을 위한 기기 내 머신러닝 Vision API를 제공합니다. ML Kit 분석 도구를 사용하면 ML Kit를 CameraX 앱과 더 쉽게 통합할 수 있습니다.

ML Kit 분석 도구는 ImageAnalysis.Analyzer 인터페이스의 구현입니다. 기본 타겟 해상도를 재정의하여(필요한 경우) ML Kit 사용을 최적화하고, 좌표 변환을 처리하고, 프레임을 ML Kit에 전달하여 집계된 분석 결과를 반환합니다.

ML Kit 분석 도구 구현

ML Kit 분석 도구를 구현하려면 PreviewView와 함께 작동하여 UI 요소를 표시하는 CameraController 클래스를 사용하는 것이 좋습니다. CameraController를 사용하여 구현하면 ML Kit 분석 도구에서 원래 ImageAnalysis 스트림과 PreviewView 간의 좌표 변환을 처리합니다. CameraX에서 타겟 좌표계를 수신하여 좌표 변환을 계산한 후 분석을 위해 ML Kit의 Detector 클래스로 전달합니다.

CameraController와 함께 ML Kit 분석 도구를 사용하려면 setImageAnalysisAnalyzer()를 호출하고 생성자에 다음이 포함된 새 ML Kit 분석 도구 객체를 전달합니다.

  • CameraX가 순차적으로 호출하는 ML Kit Detector 목록
  • ML Kit 출력의 좌표를 결정하는 타겟 좌표계:

  • Executor: 소비자 콜백을 호출하고 MlKitAnalyzer.Result 또는 카메라 프레임의 집계된 ML Kit 결과를 앱에 전달합니다.

  • Consumer: 새 ML Kit 출력이 있을 때 CameraX에서 호출합니다.

다음 코드는 QR 코드를 감지하는 BarcodeScanner를 설정하도록 CameraController를 사용하여 ML Kit 분석 도구를 구현합니다.

Kotlin

// create BarcodeScanner object
val options = BarcodeScannerOptions.Builder()
  .setBarcodeFormats(Barcode.FORMAT_QR_CODE)
  .build()
val barcodeScanner = BarcodeScanning.getClient(options)

cameraController.setImageAnalysisAnalyzer(
            ContextCompat.getMainExecutor(this),
            MlKitAnalyzer(
                listOf(barcodeScanner),
                COORDINATE_SYSTEM_VIEW_REFERENCED,
                ContextCompat.getMainExecutor(this)
            ) { result: MlKitAnalyzer.Result? ->
    // The value of result.getResult(barcodeScanner) can be used directly for drawing UI overlay.
    }
)

Java

// create BarcodeScanner object
BarcodeScannerOptions options = new BarcodeScannerOptions.Builder()
   .setBarcodeFormats(Barcode.FORMAT_QR_CODE)
   .build();
BarcodeScanner barcodeScanner = BarcodeScanning.getClient(options);

cameraController.setImageAnalysisAnalyzer(executor,
    new MlKitAnalyzer(List.of(barcodeScanner), COORDINATE_SYSTEM_VIEW_REFERENCED,
    executor, result -> {
   // The value of result.getResult(barcodeScanner) can be used directly for drawing UI overlay.
 });

위의 코드 샘플에서 ML Kit 분석 도구는 BarcodeScannerDetector 클래스에 다음을 전달합니다.

  • 타겟 좌표계를 나타내는 COORDINATE_SYSTEM_VIEW_REFERENCED에 기반한 변환 매트릭스
  • 카메라 프레임

BarcodeScanner에 문제가 발생하면 Detector에서 오류가 발생하고 ML Kit 분석 도구에서 이를 앱에 전파합니다. 성공하면 ML Kit 분석 도구는 MLKitAnalyzer.Result#getValue()를 반환합니다. 이 경우에는 Barcode 객체입니다.

camera-core의 일부인 ImageAnalysis 클래스를 사용하여 ML Kit 분석 도구를 구현할 수도 있습니다. 그러나 ImageAnalysisPreviewView와 통합되지 않으므로 좌표 변환을 수동으로 처리해야 합니다. 자세한 내용은 ML Kit 분석 도구 참조 문서를 확인하세요.

추가 리소스

ML Kit 분석 도구 기능이 있는 작동하는 카메라 앱은 CameraX-MLKit 샘플을 참고하세요.