MediaPipe 이미지 세분화 도구를 사용하면 사전 정의된 카테고리에 따라 이미지를 영역으로 나눌 수 있습니다. 이 기능을 사용하여 특정 객체나 텍스처를 식별하고 배경 블러와 같은 시각 효과를 적용할 수 있습니다. 이 작업에는 이미지 데이터에서 사람과 특징을 분류하도록 특별히 학습된 몇 가지 모델이 포함됩니다. 예를 들면 다음과 같습니다.
- 인물 및 배경
- 사람의 머리카락만
- 사람의 머리카락, 얼굴, 피부, 옷, 액세서리
이 작업은 단일 이미지 또는 연속 동영상 스트림이 있는 머신러닝 (ML) 모델을 사용하여 이미지 데이터에서 작동합니다. 선택한 model에 따라 이미지의 객체나 영역을 나타내는 분할된 영역의 목록을 출력합니다.
시작하기
이 작업의 사용을 시작하려면 대상 플랫폼별 구현 가이드 중 하나를 따르세요. 다음의 플랫폼별 가이드에서는 권장 모델, 권장 구성 옵션이 있는 코드 예를 포함하여 이 작업의 기본 구현을 설명합니다.
태스크 세부정보
이 섹션에서는 이 태스크의 기능, 입력, 출력 및 구성 옵션을 설명합니다.
기능
- 입력 이미지 처리 - 처리에는 이미지 회전, 크기 조절, 정규화, 색 공간 변환이 포함됩니다.
작업 입력 | 작업 출력 |
---|---|
입력은 다음 데이터 유형 중 하나일 수 있습니다.
|
이미지 분할기는 분할된 이미지 데이터를 출력합니다. 이 데이터는 설정한 구성 옵션에 따라 다음 중 하나 또는 둘 다를 포함할 수 있습니다.
|
구성 옵션
이 태스크에는 다음과 같은 구성 옵션이 있습니다.
옵션 이름 | 설명 | 값 범위 | 기본값 |
---|---|---|---|
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밀리초 |