포즈 추정 데이터 세트 개요
지원되는 데이터 세트 형식
Ultralytics YOLO 형식
YOLO 포즈 모델 학습에 사용되는 데이터 세트 레이블 형식은 다음과 같습니다:
- 이미지당 하나의 텍스트 파일: 데이터 세트의 각 이미지에는 이미지 파일과 이름이 같고 확장자가 ".txt"인 해당 텍스트 파일이 있습니다.
- 객체당 하나의 행: 텍스트 파일의 각 행은 이미지의 객체 인스턴스 하나에 해당합니다.
- 행별 객체 정보: 각 행에는 객체 인스턴스에 대한 다음 정보가 포함됩니다:
- 객체 클래스 인덱스: 객체의 클래스를 나타내는 정수(예: 사람의 경우 0, 자동차의 경우 1 등)입니다.
- 객체 중심 좌표입니다: 객체 중심의 x 및 y 좌표로, 0과 1 사이로 정규화된 좌표입니다.
- 객체의 너비와 높이입니다: 개체의 너비와 높이로, 0과 1 사이로 정규화된 값입니다.
- 객체 키포인트 좌표입니다: 0에서 1 사이로 정규화된 객체의 키포인트 좌표입니다.
다음은 포즈 추정 작업을 위한 라벨 형식의 예시입니다:
어둡게 = 2로 포맷
어둡게 = 3으로 포맷
<class-index> <x> <y> <width> <height> <px1> <py1> <p1-visibility> <px2> <py2> <p2-visibility> <pxn> <pyn> <pn-visibility>
이 형식입니다, <class-index>
는 객체에 대한 클래스의 인덱스입니다,<x> <y> <width> <height>
의 좌표입니다. 바운딩 박스및 <px1> <py1> <px2> <py2> ... <pxn> <pyn>
는 키포인트의 픽셀 좌표입니다. 좌표는 공백으로 구분됩니다.
데이터 세트 YAML 형식
Ultralytics 프레임워크는 포즈 추정 모델 학습을 위한 데이터 세트 및 모델 구성을 정의하기 위해 YAML 파일 형식을 사용합니다. 다음은 포즈 데이터 집합을 정의하는 데 사용되는 YAML 형식의 예입니다:
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: ../datasets/coco8-pose # dataset root dir (absolute or relative; if relative, it's relative to default datasets_dir)
train: images/train # train images (relative to 'path') 4 images
val: images/val # val images (relative to 'path') 4 images
test: # test images (optional)
# Keypoints
kpt_shape: [17, 3] # number of keypoints, number of dims (2 for x,y or 3 for x,y,visible)
flip_idx: [0, 2, 1, 4, 3, 6, 5, 8, 7, 10, 9, 12, 11, 14, 13, 16, 15]
# Classes dictionary
names:
0: person
그리고 train
그리고 val
필드는 각각 트레이닝 이미지와 유효성 검사 이미지가 포함된 디렉터리의 경로를 지정합니다.
names
는 클래스 이름의 사전입니다. 이름의 순서는 YOLO 데이터 세트 파일의 객체 클래스 인덱스 순서와 일치해야 합니다.
(선택 사항) 포인트가 대칭인 경우 사람이나 얼굴의 왼쪽/오른쪽과 같이 flip_idx가 필요합니다. 예를 들어 얼굴 랜드마크의 키포인트가 5개라고 가정합니다: [왼쪽 눈, 오른쪽 눈, 코, 왼쪽 입, 오른쪽 입]이고 원래 인덱스가 [0, 1, 2, 3, 4]인 경우 flip_idx는 [1, 0, 2, 4, 3]입니다(이 예에서는 0-1과 3-4처럼 좌우 인덱스만 바꾸고 코 같은 다른 인덱스는 수정하지 마세요).
사용법
예
지원되는 데이터 세트
이 섹션에서는 Ultralytics YOLO 형식과 호환되며 포즈 추정 모델 훈련에 사용할 수 있는 데이터 세트에 대해 간략하게 설명합니다:
코코 포즈
- 설명: COCO-Pose는 대규모 물체 감지, 세분화 및 포즈 추정 데이터 세트입니다. 널리 사용되는 COCO 데이터 세트의 하위 집합으로, 사람의 포즈 추정에 중점을 두고 있습니다. COCO-Pose에는 각 사람 인스턴스에 대한 여러 키포인트가 포함되어 있습니다.
- 라벨 형식: 위에서 설명한 Ultralytics YOLO 형식과 동일하며, 사람 포즈에 대한 키포인트가 있습니다.
- 클래스 수: 1 (인간).
- 키포인트: 코, 눈, 귀, 어깨, 팔꿈치, 손목, 엉덩이, 무릎, 발목 등 17개의 키포인트.
- 사용법: 사용법: 사람 자세 추정 모델 훈련에 적합합니다.
- 추가 참고 사항: 데이터 세트는 풍부하고 다양하며, 라벨이 지정된 이미지가 200만 개 이상 포함되어 있습니다.
- COCO-Pose에 대해 자세히 알아보기
COCO8-Pose
- 설명: Ultralytics COCO8-Pose는 작지만 다용도로 활용 가능한 포즈 감지 데이터 세트로, COCO 트레인 2017 세트의 첫 8개 이미지 중 훈련용 4개와 검증용 4개로 구성되어 있습니다.
- 라벨 형식: 위에서 설명한 Ultralytics YOLO 형식과 동일하며, 사람 포즈에 대한 키포인트가 있습니다.
- 클래스 수: 1 (인간).
- 키포인트: 코, 눈, 귀, 어깨, 팔꿈치, 손목, 엉덩이, 무릎, 발목 등 17개의 키포인트.
- 사용법: 사용 방법: 객체 감지 모델을 테스트 및 디버깅하거나 새로운 감지 접근 방식을 실험하는 데 적합합니다.
- 추가 참고사항: COCO8-Pose는 정신 상태 확인 및 CI 확인에 이상적입니다.
- COCO8-Pose에 대해 자세히 알아보기
호랑이 포즈
- 설명: Ultralytics 타이거 포즈 데이터 세트는 YouTube 동영상에서 가져온 263개의 이미지로 구성되어 있으며, 210개의 이미지는 학습용으로, 53개는 검증용으로 할당되어 있습니다.
- 라벨 형식: 위에서 설명한 Ultralytics YOLO 형식과 동일하며, 동물 포즈를 위한 12개의 키포인트가 있고 치수가 표시되지 않습니다.
- 클래스 수: 1 (호랑이).
- 키포인트: 키포인트: 12개.
- 사용법: 사용법: 동물 포즈나 사람이 아닌 다른 포즈에 적합합니다.
- 호랑이 포즈에 대해 자세히 알아보기
손 키포인트
- 설명: 손 키포인트 포즈 데이터 세트는 약 26K개의 이미지로 구성되어 있으며, 학습용으로 18776개, 검증용으로 7992개의 이미지가 할당되어 있습니다.
- 레이블 형식: 위에서 설명한 Ultralytics YOLO 형식과 동일하지만 사람의 손과 눈에 보이는 치수를 위한 21개의 키포인트가 있습니다.
- 수업 수: 1(핸드).
- 키포인트: 키포인트: 21개.
- 사용법: 사람의 손 포즈 추정 및 제스처 인식에 적합합니다.
- 핸드 키포인트에 대해 자세히 알아보기
개 포즈
- 설명: 개 자세 데이터 세트에는 약 6,000개의 이미지가 포함되어 있으며, 개 자세 추정 모델의 훈련 및 검증을 위한 다양하고 광범위한 리소스를 제공합니다.
- 라벨 형식: Ultralytics YOLO 형식을 따르며, 개의 해부학적 구조와 관련된 여러 키포인트에 대한 주석이 포함되어 있습니다.
- 수업 수: 1(개).
- 키포인트: 팔다리, 관절, 머리 위치 등 반려견의 포즈에 맞춘 24개의 키포인트가 포함되어 있습니다.
- 사용법: 사용 방법: 연구부터 실제 적용까지 다양한 시나리오에서 개의 포즈를 추정하기 위한 모델 훈련에 이상적입니다.
- 도그 포즈에 대해 자세히 알아보기
나만의 데이터 집합 추가하기
자체 데이터 세트가 있고 이를 Ultralytics YOLO 형식으로 포즈 추정 모델 학습에 사용하려면 위의 "Ultralytics YOLO 형식"에 지정된 형식을 따르는지 확인하세요. 어노테이션을 필요한 형식으로 변환하고 YAML 구성 파일에 경로, 클래스 수, 클래스 이름을 지정합니다.
전환 도구
Ultralytics 널리 사용되는 COCO 데이터 세트 형식에서 YOLO 형식으로 라벨을 변환할 수 있는 편리한 변환 도구를 제공합니다:
예
이 변환 도구는 COCO 데이터 세트 또는 COCO 형식의 데이터 세트를 Ultralytics YOLO 형식으로 변환하는 데 사용할 수 있습니다. 그리고 use_keypoints
매개변수는 변환된 레이블에 키포인트(포즈 추정용)를 포함할지 여부를 지정합니다.
자주 묻는 질문
포즈 추정을 위한 Ultralytics YOLO 형식이란 무엇인가요?
포즈 추정 데이터 세트의 Ultralytics YOLO 형식은 각 이미지에 해당 텍스트 파일로 레이블을 지정하는 것을 포함합니다. 텍스트 파일의 각 행에는 객체 인스턴스에 대한 정보가 저장됩니다:
- 객체 클래스 색인
- 객체 중심 좌표(정규화된 x 및 y)
- 개체 너비 및 높이(정규화)
- 객체 키포인트 좌표(정규화된 pxn 및 pyn)
2D 포즈의 경우 키포인트에는 픽셀 좌표가 포함됩니다. 3D의 경우 각 키포인트에는 가시성 플래그도 있습니다. 자세한 내용은 Ultralytics YOLO 형식을 참조하세요.
COCO-Pose 데이터 세트는 Ultralytics YOLO 에서 어떻게 사용하나요?
COCO-Pose 데이터 세트를 Ultralytics YOLO 함께 사용하려면:
- 데이터 세트를 다운로드하고 YOLO 형식으로 라벨 파일을 준비합니다.
- 트레이닝 및 유효성 검사 이미지의 경로, 키포인트 모양, 클래스 이름을 지정하는 YAML 구성 파일을 만듭니다.
-
교육에 구성 파일을 사용합니다:
Ultralytics YOLO 에서 포즈 추정을 위한 나만의 데이터 세트를 추가하려면 어떻게 해야 하나요?
데이터 집합을 추가하려면:
- 주석을 Ultralytics YOLO 형식으로 변환합니다.
- 데이터 세트 경로, 클래스 수, 클래스 이름을 지정하는 YAML 구성 파일을 만듭니다.
-
구성 파일을 사용하여 모델을 학습시킵니다:
from ultralytics import YOLO model = YOLO("yolo11n-pose.pt") results = model.train(data="your-dataset.yaml", epochs=100, imgsz=640)
전체 단계는 나만의 데이터 세트 추가하기 섹션을 참조하세요.
Ultralytics YOLO 에 있는 데이터 세트 YAML 파일의 목적은 무엇인가요?
Ultralytics YOLO 데이터 세트 YAML 파일은 학습을 위한 데이터 세트 및 모델 구성을 정의합니다. 여기에는 학습, 유효성 검사 및 테스트 이미지의 경로, 키포인트 모양, 클래스 이름 및 기타 구성 옵션이 지정되어 있습니다. 이 구조화된 형식은 데이터 세트 관리와 모델 학습을 간소화하는 데 도움이 됩니다. 다음은 YAML 형식의 예시입니다:
데이터 집합 YAML 형식의 YAML 구성 파일 생성에 대해 자세히 알아보세요.
포즈 추정을 위해 COCO 데이터 세트 레이블을 Ultralytics YOLO 형식으로 변환하려면 어떻게 해야 하나요?
Ultralytics 는 키포인트 정보를 포함하여 COCO 데이터 세트 라벨을 YOLO 형식으로 변환하는 변환 도구를 제공합니다:
from ultralytics.data.converter import convert_coco
convert_coco(labels_dir="path/to/coco/annotations/", use_keypoints=True)
이 도구는 COCO 데이터세트를 YOLO 프로젝트에 원활하게 통합하는 데 도움이 됩니다. 자세한 내용은 변환 도구 섹션과 데이터 전처리 가이드를 참조하세요.