이미지 분할 가이드

남성의 모습을 윤곽선으로 보여주는 이미지 마스크 옆에 남성의 클로즈업 사진을 나란히 배치한 예시

MediaPipe Image Segmenter 태스크를 사용하면 사전 정의된 카테고리를 기반으로 이미지를 영역으로 분할할 수 있습니다. 이 기능을 사용하여 특정 객체 또는 텍스처를 식별한 후 배경 흐리게 처리와 같은 시각적 효과를 적용할 수 있습니다. 이 태스크에는 이미지 데이터 내에서 사람과 사람의 특징을 분할하도록 특별히 학습된 여러 모델이 포함됩니다.

  • 사람 및 배경
  • 사람의 머리카락만
  • 사람의 머리카락, 얼굴, 피부, 의류, 액세서리

이 태스크는 단일 이미지 또는 연속 동영상 스트림이 포함된 머신러닝 (ML) 모델을 사용하여 이미지 데이터를 처리합니다. 선택한 모델에 따라 이미지의 객체 또는 영역을 나타내는 세분화된 영역 목록을 출력합니다.

사용해 보기

시작하기

대상 플랫폼에 관한 다음 구현 가이드 중 하나에 따라 이 작업을 시작합니다. 다음 플랫폼별 가이드에서는 권장 모델, 권장 구성 옵션이 포함된 코드 예시 등 이 작업의 기본 구현을 안내합니다.

태스크 세부정보

이 섹션에서는 이 태스크의 기능, 입력, 출력, 구성 옵션을 설명합니다.

기능

  • 입력 이미지 처리 - 처리에는 이미지 회전, 크기 조절, 정규화, 색상 공간 변환이 포함됩니다.
태스크 입력 태스크 출력
입력은 다음 데이터 유형 중 하나일 수 있습니다.
  • 정지 이미지
  • 디코딩된 동영상 프레임
  • 라이브 동영상 피드
이미지 세그먼터는 설정된 구성 옵션에 따라 다음 중 하나 또는 둘 다를 포함할 수 있는 분할된 이미지 데이터를 출력합니다.
  • CATEGORY_MASK: 세그먼트된 마스크가 uint8 형식 이미지로 포함된 목록입니다. 각 픽셀 값은 모델에서 지원하는 특정 세그먼트 카테고리의 일부인지 여부를 나타냅니다.
  • CONFIDENCE_MASK: float32 형식의 픽셀 값이 있는 세분화된 마스크가 포함된 채널 목록입니다. 각 픽셀 값은 모델에서 지원하는 특정 카테고리의 일부라는 신뢰도 수준을 나타냅니다.

구성 옵션

이 태스크에는 다음과 같은 구성 옵션이 있습니다.

옵션 이름 설명 값 범위 기본값
running_mode 태스크의 실행 모드를 설정합니다. 모드는 세 가지입니다.

IMAGE: 단일 이미지 입력의 모드입니다.

동영상: 동영상의 디코딩된 프레임 모드입니다.

LIVE_STREAM: 카메라와 같은 입력 데이터의 라이브 스트림 모드입니다. 이 모드에서는 결과를 비동기식으로 수신할 리스너를 설정하려면 resultListener를 호출해야 합니다.
{IMAGE, VIDEO, LIVE_STREAM} IMAGE
output_category_mask True로 설정하면 출력에 세분화 마스크가 uint8 이미지로 포함되며 여기서 각 픽셀 값은 낙찰된 카테고리 값을 나타냅니다. {True, False} False
output_confidence_masks True로 설정하면 출력에 세분화 마스크가 부동 소수점 값 이미지로 포함되며, 여기서 각 부동 소수점 값은 카테고리의 신뢰도 점수 맵을 나타냅니다. {True, False} True
display_names_locale 가능한 경우 태스크 모델의 메타데이터에 제공된 표시 이름에 사용할 라벨의 언어를 설정합니다. 기본값은 영어의 경우 en입니다. TensorFlow Lite Metadata Writer API를 사용하여 맞춤 모델의 메타데이터에 현지화된 라벨을 추가할 수 있습니다. 언어 코드 en
result_callback 이미지 세그먼터가 LIVE_STREAM 모드일 때 분할 결과를 비동기식으로 수신하도록 결과 리스너를 설정합니다. 실행 모드가 LIVE_STREAM로 설정된 경우에만 사용할 수 있습니다. 해당 사항 없음 해당 사항 없음

모델

이미지 세그먼터는 두 개 이상의 ML 모델과 함께 사용할 수 있습니다. 다음 분할 모델의 대부분은 사람의 이미지로 분할을 실행하도록 빌드 및 학습됩니다. 하지만 DeepLab-v3 모델은 범용 이미지 세그먼터로 빌드됩니다. 애플리케이션에 가장 적합한 모델을 선택합니다.

셀카 세분화 모델

이 모델은 인물의 초상화를 세분화할 수 있으며 이미지의 배경을 교체하거나 수정하는 데 사용할 수 있습니다. 모델은 색인 0의 배경과 색인 1의 사람이라는 두 가지 카테고리를 출력합니다. 이 모델에는 정사각형 버전과 가로 버전 등 다양한 입력 도형이 있는 버전이 있습니다. 가로 버전은 동영상 통화와 같이 입력이 항상 같은 도형인 애플리케이션에 더 효율적일 수 있습니다.

모델 이름 입력 셰이프 양자화 유형 모델 카드 버전
SelfieSegmenter (정사각형) 256x256 부동 소수점 수 16 정보 최신
SelfieSegmenter (가로 모드) 144 x 256 부동 소수점 수 16 정보 최신

모발 세분화 모델

이 모델은 사람의 이미지를 가져와 머리카락을 찾고 머리카락의 이미지 세분화 맵을 출력합니다. 이 모델을 사용하여 머리카락 색상을 바꾸거나 다른 머리카락 효과를 적용할 수 있습니다. 모델은 다음과 같은 세분화 카테고리를 출력합니다.

0 - background
1 - hair
모델 이름 입력 셰이프 양자화 유형 모델 카드 버전
HairSegmenter 512 x 512 None (float32) 정보 최신

다중 클래스 셀카 세분화 모델

이 모델은 사람의 이미지를 가져와 머리카락, 피부, 의류와 같은 다양한 영역의 영역을 찾고 이러한 항목의 이미지 세분화 맵을 출력합니다. 이 모델을 사용하여 이미지 또는 동영상의 인물에 다양한 효과를 적용할 수 있습니다. 모델은 다음과 같은 세분화 카테고리를 출력합니다.

0 - background
1 - hair
2 - body-skin
3 - face-skin
4 - clothes
5 - others (accessories)
모델 이름 입력 셰이프 양자화 유형 모델 카드 버전
SelfieMulticlass (256 x 256) 256x256 None (float32) 정보 최신

DeepLab-v3 모델

이 모델은 배경, 사람, 고양이, 강아지, 화분에 든 식물 등 다양한 카테고리의 세그먼트를 식별합니다. 이 모델은 아트러스 공간 피라미드 풀링을 사용하여 더 긴 범위의 정보를 캡처합니다. 자세한 내용은 DeepLab-v3를 참고하세요.

모델 이름 입력 셰이프 양자화 유형 버전
DeepLab-V3 257 x 257 None (float32) 최신

작업 벤치마크

다음은 위의 사전 학습된 모델을 기반으로 한 전체 파이프라인의 태스크 벤치마크입니다. 지연 시간 결과는 CPU / GPU를 사용하는 Pixel 6의 평균 지연 시간입니다.

모델 이름 CPU 지연 시간 GPU 지연 시간
SelfieSegmenter (정사각형) 33.46ms 35.15ms
SelfieSegmenter (가로 모드) 34.19ms 33.55ms
HairSegmenter 57.90ms 52.14ms
SelfieMulticlass (256 x 256) 217.76ms 71.24ms
DeepLab-V3 123.93ms 103.30ms