포즈 추정 데이터 세트 개요
지원되는 데이터 세트 형식
Ultralytics YOLO 형식
YOLO 포즈 모델 훈련에 사용되는 데이터 세트 레이블 형식은 다음과 같습니다.
- 이미지당 하나의 텍스트 파일: 데이터 세트의 각 이미지에는 이미지 파일과 이름이 같고 확장자가 ".txt"인 해당 텍스트 파일이 있습니다.
- 객체당 하나의 행: 텍스트 파일의 각 행은 이미지의 객체 인스턴스 하나에 해당합니다.
- 행당 객체 정보: 각 행에는 객체 인스턴스에 대한 다음 정보가 포함되어 있습니다.
- 객체 클래스 인덱스: 객체의 클래스를 나타내는 정수입니다 (예: 0은 사람, 1은 자동차 등).
- 객체 중심 좌표: 객체 중심의 x 및 y 좌표이며, 0과 1 사이로 정규화됩니다.
- 객체 너비 및 높이: 객체의 너비와 높이는 0과 1 사이로 정규화됩니다.
- 객체 키포인트 좌표: 객체의 키포인트는 0과 1 사이로 정규화됩니다.
다음은 포즈 추정 작업을 위한 레이블 형식의 예입니다.
Dim = 2로 포맷
<class-index> <x> <y> <width> <height> <px1> <py1> <px2> <py2> ... <pxn> <pyn>
Dim = 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 형식의 예입니다.
ultralytics/cfg/datasets/coco8-pose.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
# 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-Pose
- 설명: COCO-Pose는 대규모 객체 감지, 분할 및 포즈 추정 데이터 세트입니다. 인기 있는 COCO 데이터 세트의 하위 세트이며 사람 포즈 추정에 중점을 둡니다. COCO-Pose에는 각 사람 인스턴스에 대한 여러 키포인트가 포함되어 있습니다.
- 레이블 형식: 위에 설명된 Ultralytics YOLO 형식과 동일하며, 사람 자세에 대한 키포인트를 포함합니다.
- 클래스 수: 1 (사람).
- 키포인트: 코, 눈, 귀, 어깨, 팔꿈치, 손목, 엉덩이, 무릎 및 발목을 포함한 17개의 키포인트.
- 사용법: 사람 자세 추정 모델을 훈련하는 데 적합합니다.
- 추가 참고 사항: 이 데이터 세트는 20만 개 이상의 레이블이 지정된 이미지를 포함하여 풍부하고 다양합니다.
- COCO-Pose에 대해 자세히 알아보십시오.
COCO8-Pose
- 설명: Ultralytics COCO8-Pose는 COCO train 2017 세트의 처음 8개 이미지(훈련용 4개, 유효성 검사용 4개)로 구성된 작지만 다재다능한 포즈 감지 데이터 세트입니다.
- 레이블 형식: 위에 설명된 Ultralytics YOLO 형식과 동일하며, 사람 자세에 대한 키포인트를 포함합니다.
- 클래스 수: 1 (사람).
- 키포인트: 코, 눈, 귀, 어깨, 팔꿈치, 손목, 엉덩이, 무릎 및 발목을 포함한 17개의 키포인트.
- 사용법: 객체 감지 모델을 테스트하고 디버깅하거나 새로운 감지 접근 방식을 실험하는 데 적합합니다.
- 추가 참고 사항: COCO8-Pose는 건전성 검사 및 CI 검사에 이상적입니다.
- COCO8-Pose에 대해 자세히 알아보세요.
Tiger-Pose
- 설명: Ultralytics Tiger Pose 데이터 세트는 YouTube 비디오에서 가져온 263개의 이미지로 구성되어 있으며, 210개의 이미지는 훈련용으로, 53개는 유효성 검사용으로 할당됩니다.
- 레이블 형식: 위에 설명된 Ultralytics YOLO 형식과 동일하며, 동물 자세에 대한 12개의 키포인트를 포함하고 보이는 차원은 없습니다.
- 클래스 수: 1개 (호랑이).
- 키포인트: 12개의 키포인트.
- 사용법: 동물 자세 또는 인간 기반이 아닌 다른 자세에 적합합니다.
- Tiger-Pose에 대해 자세히 알아보세요.
손 키포인트
- 설명: 핸드 키포인트 포즈 데이터 세트는 약 26,000개의 이미지로 구성되어 있으며, 18776개의 이미지는 훈련용으로, 7992개는 유효성 검사용으로 할당됩니다.
- 레이블 형식: 위에 설명된 Ultralytics YOLO 형식과 동일하지만, 사람 손에 대한 21개의 키포인트와 보이는 차원을 포함합니다.
- 클래스 수: 1 (손).
- 키포인트: 21개의 키포인트.
- 사용 사례: 사람 손 자세 추정 및 제스처 인식에 적합합니다.
- Hand Keypoints에 대해 자세히 알아보세요.
Dog-Pose
- 설명: Dog Pose 데이터 세트는 약 6,000개의 이미지를 포함하며, 개 포즈 추정 모델의 훈련 및 유효성 검사를 위한 다양하고 광범위한 리소스를 제공합니다.
- 레이블 형식: Ultralytics YOLO 형식을 따르며, 개의 해부학적 구조에 특화된 여러 키포인트에 대한 어노테이션을 포함합니다.
- 클래스 수: 1 (개).
- 키포인트: 사지, 관절 및 머리 위치와 같이 개 포즈에 맞게 조정된 24개의 키포인트를 포함합니다.
- 사용 사례: 연구에서 실제 응용 프로그램에 이르기까지 다양한 시나리오에서 개 자세를 추정하는 모델을 훈련하는 데 이상적입니다.
- Dog-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 형식을 참조하세요.
Ultralytics YOLO에서 COCO-Pose 데이터 세트를 어떻게 사용하나요?
Ultralytics YOLO와 함께 COCO-Pose 데이터 세트를 사용하려면:
- 데이터 세트를 다운로드하고 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
# 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 프로젝트에 원활하게 통합하는 데 도움이 됩니다. 자세한 내용은 변환 도구 섹션과 데이터 전처리 가이드를 참조하십시오.