이미지 분할 가이드

MediaPipe 이미지 세분화 도구를 사용하면 사전 정의된 카테고리에 따라 이미지를 영역으로 나눌 수 있습니다. 이 기능을 사용하여 특정 객체나 텍스처를 식별하고 배경 블러와 같은 시각 효과를 적용할 수 있습니다. 이 작업에는 이미지 데이터에서 사람과 특징을 분류하도록 특별히 학습된 몇 가지 모델이 포함됩니다. 예를 들면 다음과 같습니다.

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

이 작업은 단일 이미지 또는 연속 동영상 스트림이 있는 머신러닝 (ML) 모델을 사용하여 이미지 데이터에서 작동합니다. 선택한 model에 따라 이미지의 객체나 영역을 나타내는 분할된 영역의 목록을 출력합니다.

사용해 보기

시작하기

이 작업의 사용을 시작하려면 대상 플랫폼별 구현 가이드 중 하나를 따르세요. 다음의 플랫폼별 가이드에서는 권장 모델, 권장 구성 옵션이 있는 코드 예를 포함하여 이 작업의 기본 구현을 설명합니다.

태스크 세부정보

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

기능

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

구성 옵션

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

옵션 이름 설명 값 범위 기본값
running_mode 작업의 실행 모드를 설정합니다. 모드는 세 가지가 있습니다.

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

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

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를 사용하여 커스텀 모델의 메타데이터에 현지화된 라벨을 추가할 수 있습니다. 언어 코드 한국어
result_callback 이미지 분할기가 라이브 스트림 모드일 때 세분화 결과를 비동기식으로 수신하도록 결과 리스너를 설정합니다. 달리기 모드가 LIVE_STREAM으로 설정된 경우에만 사용할 수 있습니다. 해당 사항 없음 해당 사항 없음

모델

이미지 분할기는 둘 이상의 ML 모델에 사용할 수 있습니다. 다음 세분화 모델 대부분은 사람 이미지를 사용한 세분화를 수행하도록 빌드되고 학습됩니다. 하지만 DeepLab-v3 모델은 범용 이미지 세그먼트화기로 빌드되었습니다. 애플리케이션에 가장 적합한 모델을 선택하세요.

셀카 세분화 모델

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

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

모발 세분화 모델

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

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

다중 클래스 셀카 세그먼테이션 모델

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

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

DeepLab-v3 모델

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

모델 이름 입력 형태 양자화 유형 버전
DeepLab-V3 257 x 257 없음 (float32) 최신

작업 벤치마크

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

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