포즈 추정 데이터 세트 개요
지원되는 데이터 세트 형식
Ultralytics YOLO 형식
YOLO 포즈 모델 훈련에 사용되는 데이터 세트 레이블 형식은 다음과 같습니다.
- 이미지당 하나의 텍스트 파일: 데이터 세트의 각 이미지에는 이미지 파일과 이름이 같고 확장자가 ".txt"인 해당 텍스트 파일이 있습니다.
- 객체당 하나의 행: 텍스트 파일의 각 행은 이미지의 객체 인스턴스 하나에 해당합니다.
- 행당 객체 정보: 각 행에는 객체 인스턴스에 대한 다음 정보가 포함되어 있습니다.
- 객체 클래스 인덱스: 객체의 클래스를 나타내는 정수입니다 (예: 0은 사람, 1은 자동차 등).
- 객체 중심 좌표: 객체 중심의 x 및 y 좌표이며, 0과 1 사이로 정규화됩니다.
- 객체 너비 및 높이: 객체의 너비와 높이는 0과 1 사이로 정규화됩니다.
- 객체 키포인트 좌표: 객체의 키포인트는 0과 1 사이로 정규화됩니다.
다음은 포즈 추정 작업을 위한 라벨 형식의 예시입니다:
2D 키포인트로 포맷
<class-index> <x> <y> <width> <height> <px1> <py1> <px2> <py2> ... <pxn> <pyn>
3D 키포인트로 포맷(포인트별 가시성 포함)
<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 형식의 예입니다.
ultralyticsyaml
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
# COCO8-pose dataset (first 8 images from COCO train2017) by Ultralytics
# Documentation: https://docs.ultralytics.com/datasets/pose/coco8-pose/
# Example usage: yolo train data=coco8-pose.yaml
# parent
# ├── ultralytics
# └── datasets
# └── coco8-pose ← downloads here (1 MB)
# 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: coco8-pose # dataset root 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
names:
0: person
# Keypoint names per class
kpt_names:
0:
- nose
- left_eye
- right_eye
- left_ear
- right_ear
- left_shoulder
- right_shoulder
- left_elbow
- right_elbow
- left_wrist
- right_wrist
- left_hip
- right_hip
- left_knee
- right_knee
- left_ankle
- right_ankle
# Download script/URL (optional)
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/coco8-pose.zip
에 지정되어 있습니다. train 및 val 필드는 각각 학습 및 검증 이미지들이 포함된 디렉터리의 경로를 지정합니다.
names 클래스 이름의 사전입니다. 이름 순서는 YOLO 데이터 세트 파일의 객체 클래스 인덱스 순서와 일치해야 합니다.
점들이 대칭인 경우 (선택 사항) flip_idx가 필요합니다. 예를 들어 사람이나 얼굴의 좌우 측면과 같습니다. 예를 들어 얼굴 랜드마크의 5개 키포인트 [왼쪽 눈, 오른쪽 눈, 코, 왼쪽 입, 오른쪽 입]이 있고 원래 인덱스가 [0, 1, 2, 3, 4]인 경우 flip_idx는 [1, 0, 2, 4, 3]입니다(왼쪽-오른쪽 인덱스, 즉 0-1 및 3-4만 교환하고 이 예에서 코와 같이 다른 것은 수정하지 않음).
사용법
예시
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n-pose.pt") # load a pretrained model (recommended for training)
# Train the model
results = model.train(data="coco8-pose.yaml", epochs=100, imgsz=640)
# Start training from a pretrained *.pt model
yolo pose train data=coco8-pose.yaml model=yolo11n-pose.pt epochs=100 imgsz=640
지원되는 데이터 세트
이 섹션에서는 Ultralytics YOLO 형식과 호환되며 포즈 추정 모델을 훈련하는 데 사용할 수 있는 데이터 세트를 간략하게 설명합니다.
COCO
- 설명: COCO 대규모 물체 감지, 세분화 및 포즈 추정 데이터 세트입니다. 널리 사용되는 COCO 데이터 세트의 하위 집합으로, 사람의 포즈 추정에 중점을 두고 있습니다. COCO 각 사람 인스턴스에 대한 여러 키포인트가 포함되어 있습니다.
- 레이블 형식: 위에 설명된 Ultralytics YOLO 형식과 동일하며, 사람 자세에 대한 키포인트를 포함합니다.
- 클래스 수: 1 (사람).
- 키포인트: 코, 눈, 귀, 어깨, 팔꿈치, 손목, 엉덩이, 무릎 및 발목을 포함한 17개의 키포인트.
- 사용법: 사람 자세 추정 모델을 훈련하는 데 적합합니다.
- 추가 참고 사항: 이 데이터 세트는 20만 개 이상의 레이블이 지정된 이미지를 포함하여 풍부하고 다양합니다.
- COCO 대해 자세히 알아보기
COCO8
- 설명: Ultralytics COCO8 작지만 다용도로 사용할 수 있는 포즈 감지 데이터 세트로, COCO train 2017 세트의 첫 8개 이미지 중 훈련용 4개와 검증용 4개로 구성되어 있습니다.
- 레이블 형식: 위에 설명된 Ultralytics YOLO 형식과 동일하며, 사람 자세에 대한 키포인트를 포함합니다.
- 클래스 수: 1 (사람).
- 키포인트: 코, 눈, 귀, 어깨, 팔꿈치, 손목, 엉덩이, 무릎 및 발목을 포함한 17개의 키포인트.
- 사용법: 객체 감지 모델을 테스트하고 디버깅하거나 새로운 감지 접근 방식을 실험하는 데 적합합니다.
- Additional Notes: COCO8-Pose는 건전성 검사 및 CI 검사에 이상적입니다.
- COCO8 대해 자세히 알아보기
Dog-Pose
- 설명: 개 포즈 데이터 세트에는 6,773개의 훈련 이미지와 1,703개의 테스트 이미지가 포함되어 있어 개 키포인트 추정을 위한 다양하고 광범위한 리소스를 제공합니다.
- 레이블 형식: Ultralytics YOLO 형식을 따르며, 개의 해부학적 구조에 특화된 여러 키포인트에 대한 어노테이션을 포함합니다.
- 클래스 수: 1 (개).
- 키포인트: 사지, 관절 및 머리 위치와 같이 개 포즈에 맞게 조정된 24개의 키포인트를 포함합니다.
- 사용 사례: 연구에서 실제 응용 프로그램에 이르기까지 다양한 시나리오에서 개 자세를 추정하는 모델을 훈련하는 데 이상적입니다.
- Dog-Pose에 대해 자세히 알아보세요.
손 키포인트
- 설명: 손 키포인트 포즈 데이터 세트는 약 26,000개의 이미지로 구성되어 있으며, 18,776개의 이미지가 학습용으로, 7,992개의 이미지가 검증용으로 할당되어 있습니다.
- 레이블 형식: 위에서 설명한 Ultralytics YOLO 형식과 동일하지만 사람의 손과 가시성 차원을 위한 21개의 키포인트가 있습니다.
- 클래스 수: 1 (손).
- 키포인트: 21개의 키포인트.
- 사용 사례: 사람 손 자세 추정 및 제스처 인식에 적합합니다.
- Hand Keypoints에 대해 자세히 알아보세요.
Tiger-Pose
- 설명: 설명 Ultralytics 타이거 포즈 데이터 세트는 YouTube 동영상에서 가져온 263개의 이미지로 구성되어 있으며, 210개의 이미지는 학습용으로, 53개는 검증용으로 할당되어 있습니다.
- 레이블 형식: 위에 설명된 Ultralytics YOLO 형식과 동일하며, 동물 자세에 대한 12개의 키포인트를 포함하고 보이는 차원은 없습니다.
- 클래스 수: 1개 (호랑이).
- 키포인트: 12개의 키포인트.
- 사용법: 동물 자세 또는 인간 기반이 아닌 다른 자세에 적합합니다.
- Tiger-Pose에 대해 자세히 알아보세요.
자체 데이터 세트 추가
자체 데이터 세트가 있고 Ultralytics YOLO 형식으로 포즈 추정 모델을 학습하는 데 사용하려면 위에 명시된 "Ultralytics YOLO 형식"에 따라야 합니다. 어노테이션을 필요한 형식으로 변환하고 YAML 구성 파일에서 경로, 클래스 수 및 클래스 이름을 지정하십시오.
변환 도구
Ultralytics 널리 사용되는 COCO 데이터 세트 형식에서 YOLO 형식으로 라벨을 변환할 수 있는 편리한 변환 도구를 제공합니다:
예시
from ultralytics.data.converter import convert_coco
convert_coco(labels_dir="path/to/coco/annotations/", use_keypoints=True)
이 변환 도구는 COCO 데이터 세트 또는 COCO 형식의 모든 데이터 세트를 Ultralytics YOLO 형식으로 변환하는 데 사용할 수 있습니다. 그리고 use_keypoints parameter는 변환된 레이블에 키포인트(포즈 추정용)를 포함할지 여부를 지정합니다.
FAQ
포즈 추정을 위한 Ultralytics YOLO 형식은 무엇입니까?
포즈 추정 데이터 세트에 대한 Ultralytics YOLO 형식은 각 이미지를 해당 텍스트 파일로 레이블링하는 것을 포함합니다. 텍스트 파일의 각 행은 객체 인스턴스에 대한 정보를 저장합니다.
- 객체 클래스 인덱스
- 객체 중심 좌표 (정규화된 x 및 y)
- 객체 너비 및 높이 (정규화됨)
- 객체 키포인트 좌표 (정규화된 pxn 및 pyn)
2D 포즈의 경우 키포인트에는 픽셀 좌표가 포함됩니다. 3D의 경우 각 키포인트에는 가시성 플래그도 있습니다. 자세한 내용은 Ultralytics YOLO 형식을 참조하세요.
COCO 데이터 집합을 Ultralytics YOLO 함께 사용하려면 어떻게 해야 하나요?
COCO 데이터 세트를 Ultralytics YOLO 함께 사용하려면:
- 데이터 세트를 다운로드하고 YOLO 형식으로 레이블 파일을 준비합니다.
- 학습 및 검증 이미지, 키포인트 모양, 클래스 이름을 지정하는 YAML 구성 파일을 만드십시오.
학습을 위해 구성 파일을 사용하세요:
from ultralytics import YOLO model = YOLO("yolo11n-pose.pt") # load pretrained model results = model.train(data="coco-pose.yaml", epochs=100, imgsz=640)
Ultralytics YOLO에서 포즈 추정을 위해 내 데이터세트를 어떻게 추가할 수 있습니까?
데이터 세트를 추가하려면:
- Ultralytics YOLO 형식으로 annotation을 변환합니다.
- 데이터 세트 경로, 클래스 수 및 클래스 이름을 지정하는 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 형식의 예입니다:
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
# COCO8-pose dataset (first 8 images from COCO train2017) by Ultralytics
# Documentation: https://docs.ultralytics.com/datasets/pose/coco8-pose/
# Example usage: yolo train data=coco8-pose.yaml
# parent
# ├── ultralytics
# └── datasets
# └── coco8-pose ← downloads here (1 MB)
# 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: coco8-pose # dataset root 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
names:
0: person
# Keypoint names per class
kpt_names:
0:
- nose
- left_eye
- right_eye
- left_ear
- right_ear
- left_shoulder
- right_shoulder
- left_elbow
- right_elbow
- left_wrist
- right_wrist
- left_hip
- right_hip
- left_knee
- right_knee
- left_ankle
- right_ankle
# Download script/URL (optional)
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/coco8-pose.zip
데이터 세트 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 프로젝트에 원활하게 통합하는 데 도움이 됩니다. 자세한 내용은 변환 도구 섹션과 데이터 전처리 가이드를 참조하세요.