MediaPipe 대화형 이미지 세그멘터 작업은 이미지에서 위치를 가져와 각 영역의 경계를 추정합니다. 객체를 만들고, 객체의 세분화를 이미지 데이터입니다. 이 안내는 양방향 이미지 세분화 도구를 사용하여 Android 앱 이 안내에서 설명하는 코드 예는 GitHub 기능, 모델, 구성 옵션에 대한 자세한 내용은 개요를 참조하세요.
코드 예
MediaPipe 태스크 코드 예시는 대화형 이미지 세그먼터를 간단하게 구현한 것입니다. Android용 앱인데요. 이 예는 기기 갤러리에서 선택한 이미지를 사용합니다.
이 앱을 자체 Android 앱의 시작점으로 사용하거나 참조할 수 있습니다. 기존 앱을 수정할 때 대화형 이미지 세분화기 예시 코드는 GitHub
코드 다운로드
다음 안내에서는 예시의 로컬 사본을 만드는 방법을 보여줍니다. git 명령줄 도구를 사용하여 코드를 실행합니다.
<ph type="x-smartling-placeholder">예시 코드를 다운로드하려면 다음 안내를 따르세요.
- 다음 명령어를 사용하여 git 저장소를 클론합니다.
git clone https://github.com/google-ai-edge/mediapipe-samples
- 원하는 경우 스파스 체크아웃을 사용하도록 git 인스턴스를 구성합니다.
따라서 대화형 이미지 세분화기 예시 앱의 파일만 있습니다.
cd mediapipe git sparse-checkout init --cone git sparse-checkout set examples/interactive_segmentation/android
예시 코드의 로컬 버전을 만든 후 프로젝트를 가져올 수 있습니다. Android 스튜디오로 이동하여 앱을 실행합니다. 지침은 다음을 확인하세요. Android 설정 가이드
주요 구성요소
다음 파일에는 이 이미지에 대한 중요한 코드가 포함되어 있습니다. 세분화 예제 애플리케이션:
- InteractiveSegmentationHelper.kt - 대화형 이미지 세분화 작업을 초기화하고 모델 및 위임을 처리합니다. 선택합니다.
- OverlayView.kt - 세분화 결과를 처리하고 형식을 지정합니다.
설정
이 섹션에서는 개발 환경을 설정하는 주요 단계를 설명하고 대화형 이미지 세그먼트 도구를 사용해 보겠습니다 일반적인 정보 다음과 같은 MediaPipe 작업을 사용하기 위한 개발 환경 설정 자세한 내용은 Android 설정 가이드
<ph type="x-smartling-placeholder">종속 항목
대화형 이미지 세분화 도구는 com.google.mediapipe:tasks-vision
라이브러리를 사용합니다. 추가
build.gradle
파일에 대한 종속 항목을
Android 앱 개발 프로젝트 다음을 사용하여 필요한 종속 항목을 가져옵니다.
다음 코드를 참조하세요.
dependencies {
...
implementation 'com.google.mediapipe:tasks-vision:latest.release'
}
모델
MediaPipe 대화형 이미지 세분화 작업에는 다음과 호환되는 학습된 모델이 필요합니다. 태스크에 맞추는 것입니다. 대화형 이미지 세분화 도구에 사용할 수 있는 학습된 모델에 대한 자세한 내용은 다음을 참조하세요. 작업 개요의 모델 섹션을 확인합니다.
모델을 선택하고 다운로드한 후 프로젝트 디렉터리에 저장합니다.
<dev-project-root>/src/main/assets
BaseOptions.Builder.setModelAssetPath()
메서드를 사용하여 경로를 지정합니다.
사용됩니다. 이 메서드는 다음 코드 예시에 나와 있습니다.
섹션으로 이동합니다.
양방향 이미지 세분화 도구에서
예시 코드
모델은 InteractiveSegmenterHelper.kt
에 정의되어 있습니다.
클래스에 대해 setupInteractiveSegmenter()
함수를 사용할 수 있습니다.
할 일 만들기
createFromOptions
함수를 사용하여 작업을 만들 수 있습니다. 이
createFromOptions
함수는 다음과 같은 구성 옵션을 허용합니다.
마스크 출력 유형을 보여줍니다 구성에 관한 자세한 내용은
옵션은 구성 개요를 참고하세요.
InteractiveSegmenterOptions options = InteractiveSegmenterOptions.builder() .setBaseOptions( BaseOptions.builder().setModelAssetPath("model.tflite").build()) .setOutputCategoryMask(true) .setOutputConfidenceMasks(false) .setResultListener((result, inputImage) -> { // Process the segmentation result here. }) .setErrorListener(exception -> { // Process the segmentation errors here. }) .build(); interactivesegmenter = InteractiveSegmenter.createFromOptions(context, options);
이 작업을 설정하는 자세한 예는
InteractiveSegmenterHelper
드림
클래스 setupInteractiveSegmenter()
함수.
구성 옵션
이 작업에는 Android 앱을 위한 다음과 같은 구성 옵션이 있습니다.
옵션 이름 | 설명 | 값 범위 | 기본값 |
---|---|---|---|
outputCategoryMask |
True 로 설정하면 세분화 마스크가 출력에 포함됩니다.
uint8 이미지로 표시되며 각 픽셀 값은 픽셀이
객체를 반환합니다. |
{True, False } |
False |
outputConfidenceMasks |
True 로 설정하면 세분화 마스크가 출력에 포함됩니다.
부동 소수점 값 이미지로, 각 부동 소수점 값은 신뢰도를 나타냅니다.
픽셀이 해당 영역에 있는 객체의 일부라는 것을 의미합니다. |
{True, False } |
True |
displayNamesLocale |
작업 모델의 메타데이터입니다(있는 경우). 기본값은 en 입니다.
영어입니다. 커스텀 모델의 메타데이터에 현지화된 라벨을 추가할 수 있습니다.
TensorFlow Lite Metadata Writer API 사용
| 언어 코드 | en |
errorListener |
선택적 오류 리스너를 설정합니다. | 해당 사항 없음 | 설정되지 않음 |
데이터 준비
대화형 이미지 세그먼트 도구가 이미지를 처리하며 작업에서 데이터 입력을 처리합니다.
크기 조정, 회전, 값 정규화를 비롯한 전처리 작업이 포함됩니다.
입력 이미지를
com.google.mediapipe.framework.image.MPImage
객체를
태스크에 맞추는 것입니다.
import com.google.mediapipe.framework.image.BitmapImageBuilder; import com.google.mediapipe.framework.image.MPImage; // Load an image on the user’s device as a Bitmap object using BitmapFactory. // Convert an Android’s Bitmap object to a MediaPipe’s Image object. MPImage mpImage = new BitmapImageBuilder(bitmap).build();
RegionOfInterest roi = RegionOfInterest.create( NormalizedKeypoint.create( normX * it.width, normY * it.height ) ); ImageSegmenterResult segmenterResult = interactivesegmenter.segment(image, roi);
대화형 이미지 세분화기 예시 코드에서 segment
함수는
InteractiveSegmenterHelper.kt
파일에서 참조됩니다.
결과 처리 및 표시
추론을 실행하면 대화형 이미지 분할기 작업이
ImageSegmenterResult
객체입니다.
세그먼테이션 태스크입니다. 출력의 콘텐츠에는 카테고리 마스크,
신뢰 마스크(또는 둘 다)에 따라
작업을 구성했습니다.
다음 섹션에서는 이 작업의 출력 데이터를 자세히 설명합니다.
카테고리 마스크
다음 이미지는 카테고리의 작업 출력을 시각화한 것입니다.
값 마스크를 반환합니다. 각 픽셀은 uint8
임
픽셀이
있습니다. 두 번째 이미지의 흑백 원은
제공합니다.
원본 이미지 및 카테고리 마스크 출력. 출처: 파스칼 VOC 2012 데이터 세트입니다.
신뢰도 마스크
신뢰도 마스크의 출력에는 다음에 대한 [0, 1]
사이의 부동 소수점 값이 포함됩니다.
각 이미지 입력 채널에 적용됩니다. 값이 클수록
이미지 픽셀은 관심 영역에 있는 객체의 일부입니다.