1. 자세 추정 데이터셋 개요
지원되는 데이터셋 형식
Ultralytics YOLO 형식
- YOLO 자세 모델을 훈련하기 위해 사용되는 데이터셋 라벨 형식은 다음과 같습니다:
- 이미지당 하나의 텍스트 파일:
- 데이터셋의 각 이미지는
동일한 이름을 가진 ".txt" 확장자를 가진 텍스트 파일과 대응됩니다.
- 객체당 한 줄:
- 텍스트 파일의 각 줄은 이미지 내의 한 객체 인스턴스를 나타냅니다.
- 객체 정보: 각 줄에는 객체 인스턴스에 대한 다음 정보가 포함됩니다:
- 객체 클래스 인덱스:
- 객체의 클래스를 나타내는 정수(예: 0은 사람, 1은 자동차 등).
- 객체 중심 좌표:
- 객체 중심의 x 및 y 좌표로, 0과 1 사이로 정규화됩니다.
- 객체의 너비와 높이:
- 객체의 너비와 높이로, 0과 1 사이로 정규화됩니다.
- 객체의 키포인트 좌표:
- 객체의 키포인트로, 0과 1 사이로 정규화됩니다.
- 다음은 자세 추정 작업을 위한 라벨 형식의 예입니다:
2차원 포맷
<class-index> <x> <y> <width> <height> <px1> <py1> <px2> <py2> ... <pxn> <pyn>
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>은 키포인트의 픽셀 좌표를 나타냅니다.
- 좌표는 공백으로 구분됩니다.
2. 데이터셋 YAML 형식
- Ultralytics 프레임워크는 탐지 모델 훈련을 위한 데이터셋 및 모델 구성을 정의하는 데 YAML 파일 형식을 사용합니다.
- 다음은 탐지 데이터셋을 정의하는 YAML 형식의 예시입니다:
path: ../datasets/coco8-pose
train: images/train
val: images/val
test:
kpt_shape: [17, 3]
flip_idx: [0, 2, 1, 4, 3, 6, 5, 8, 7, 10, 9, 12, 11, 14, 13, 16, 15]
names:
0: person
- train 및 val 필드는 각각 훈련 및 검증 이미지가 포함된 디렉토리의 경로를 지정합니다.
- names는 클래스 이름의 사전입니다. 클래스 인덱스의 순서는 YOLO 데이터셋 파일에서의 객체 클래스 인덱스 순서와 일치해야 합니다.
- (선택 사항) 좌우 대칭이 있는 경우, 예를 들어 사람이나 얼굴처럼, flip_idx가 필요합니다.
- 예를 들어 얼굴 랜드마크의 다섯 개의 키포인트(왼쪽 눈, 오른쪽 눈, 코, 왼쪽 입, 오른쪽 입)가 있다고 가정할 때,
- 원래 인덱스가 [0, 1, 2, 3, 4]라면 flip_idx는 [1, 0, 2, 4, 3]이 됩니다 (좌우 인덱스를 교환, 예: 0-1, 3-4, 코는 변경하지 않음).
train: ../train/images
val: ../valid/images
test: ../test/images
kpt_shape: [32, 3]
flip_idx: [24, 25, 26, 27, 28, 29, 22, 23, 21, 17, 18, 19, 20, 13, 14, 15, 16, 9, 10, 11, 12, 8, 6, 7, 0, 1, 2, 3, 4, 5, 31, 30]
nc: 1
names: ['pitch']
roboflow:
workspace: roboflow-jvuqo
project: football-field-detection-f07vi
version: 15
license: CC BY 4.0
url: https://universe.roboflow.com/roboflow-jvuqo/football-field-detection-f07vi/dataset/15
3. 사용 예시
Python
from ultralytics import YOLO
model = YOLO("yolo11n-pose.pt")
results = model.train(data="coco8-pose.yaml", epochs=100, imgsz=640)
4. 지원되는 데이터셋
- 이 섹션에서는 Ultralytics YOLO 형식과 호환되며 자세 추정 모델 훈련에 사용할 수 있는 데이터셋을 설명합니다:
COCO-Pose
- 설명: COCO-Pose는 대규모 객체 탐지, 분할, 자세 추정 데이터셋입니다. COCO 데이터셋의 하위 집합으로, 인간의 자세 추정에 중점을 둡니다. COCO-Pose는 각 인간 인스턴스에 대해 여러 키포인트를 포함합니다.
- 라벨 형식: 위에서 설명한 Ultralytics YOLO 형식과 동일하며, 인간의 자세에 대한 키포인트를 포함합니다.
- 클래스 수: 1 (인간)
- 키포인트: 17개 키포인트 (코, 눈, 귀, 어깨, 팔꿈치, 손목, 엉덩이, 무릎, 발목 포함)
- 사용처: 인간 자세 추정 모델 훈련에 적합합니다.
- 추가 정보: 이 데이터셋은 200k 이상의 라벨이 포함된 풍부하고 다양한 데이터셋입니다.
- 더 읽기: COCO-Pose에 대한 자세한 정보는 여기에서 확인할 수 있습니다.
COCO8-Pose
- 설명: Ultralytics COCO8-Pose는 COCO train 2017 세트의 첫 8개의 이미지로 구성된 소형이지만 다목적의 자세 탐지 데이터셋입니다. 4개의 이미지는 훈련용이고 4개의 이미지는 검증용입니다.
- 라벨 형식: 위에서 설명한 Ultralytics YOLO 형식과 동일하며, 인간의 자세에 대한 키포인트를 포함합니다.
- 클래스 수: 1 (인간)
- 키포인트: 17개 키포인트
- 사용처: 객체 탐지 모델 테스트 및 디버깅, 새로운 탐지 접근 방식 실험에 적합합니다.
- 추가 정보: COCO8-Pose는 기본 검증 및 CI 체크에 이상적입니다.
- 더 읽기: COCO8-Pose에 대한 자세한 정보는 여기에서 확인할 수 있습니다.
Tiger-Pose
- 설명: 이 동물 자세 데이터셋은 YouTube 비디오에서 가져온 263개의 이미지로 구성되었으며, 210개의 이미지는 훈련용이고 53개의 이미지는 검증용입니다.
- 라벨 형식: 위에서 설명한 Ultralytics YOLO 형식과 동일하며, 동물 자세에 대한 12개의 키포인트를 포함합니다.
- 클래스 수: 1 (호랑이)
- 키포인트: 12개 키포인트
- 사용처: 인간이 아닌 동물의 자세 추정에 적합합니다.
- 더 읽기: Tiger-Pose에 대한 자세한 정보는 여기에서 확인할 수 있습니다.
Hand Keypoints
- 설명: Hand keypoints 자세 데이터셋은 약 26,000개의 이미지로 구성되어 있으며, 18,776개의 이미지는 훈련용이고 7,992개의 이미지는 검증용입니다.
- 라벨 형식: 위에서 설명한 Ultralytics YOLO 형식과 동일하며, 인간 손에 대한 21개의 키포인트와 가시성 차원을 포함합니다.
- 클래스 수: 1 (손)
- 키포인트: 21개 키포인트
- 사용처: 인간 손 자세 추정에 적합합니다.
- 더 읽기: Hand Keypoints에 대한 자세한 정보는 여기에서 확인할 수 있습니다.
5. 사용자 정의 데이터셋 추가하기
- 사용자 정의 데이터셋을 사용하여 Ultralytics YOLO 형식으로 자세 추정 모델을 훈련하려면, 위에서 설명한 형식에 따라 데이터셋을 준비해야 합니다.
- 주석을 요구되는 형식으로 변환한 후, YAML 구성 파일에서 경로, 클래스 수, 클래스 이름을 지정합니다.
6. 변환 도구
- 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 매개변수는 변환된 라벨에 키포인트를 포함할지 여부를 지정합니다.
7. FAQ
Ultralytics YOLO 형식의 자세 추정이란 무엇인가요?
Ultralytics YOLO 형식의 자세 추정 데이터셋은 각 이미지에 대응하는 텍스트 파일을 라벨링하는 방식을 따릅니다. 텍스트 파일의 각 행에는 객체 인스턴스에 대한 정보가 포함됩니다:
- 객체 클래스 인덱스
- 객체 중심 좌표 (정규화된 x 및 y)
- 객체의 너비와 높이 (정규화된 값)
- 객체의 키포인트 좌표 (정규화된 pxn 및 pyn)
2D 포즈의 경우, 키포인트는 픽셀 좌표를 포함하며, 3D에서는 각 키포인트에 가시성 플래그도 포함됩니다. 자세한 내용은 Ultralytics YOLO 형식을 참조하세요.
Ultralytics YOLO에서 COCO-Pose 데이터셋을 어떻게 사용하나요?
COCO-Pose 데이터셋을 Ultralytics YOLO와 함께 사용하려면:
- 데이터셋을 다운로드하고 라벨 파일을 YOLO 형식으로 준비합니다.
- 훈련 및 검증 이미지 경로, 키포인트 형상, 클래스 이름을 지정하는 YAML 구성 파일을 생성합니다.
- 구성 파일을 사용하여 훈련을 시작합니다:
from ultralytics import YOLO
model = YOLO("yolo11n-pose.pt")
results = model.train(data="coco-pose.yaml", epochs=100, imgsz=640)
자세한 내용은 COCO-Pose와 Train 섹션을 참조하세요.
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 형식의 예시입니다:
path: ../datasets/coco8-pose
train: images/train
val: images/val
names:
0: person
데이터셋 YAML 형식 생성에 대한 자세한 내용은 Dataset YAML 형식을 참조하세요.
COCO 데이터셋 라벨을 Ultralytics YOLO 형식으로 어떻게 변환하나요?
Ultralytics는 COCO 데이터셋 라벨을 YOLO 형식으로 변환하는 도구를 제공합니다. 키포인트 정보를 포함하려면 use_keypoints=True로 설정합니다:
from ultralytics.data.converter import convert_coco
convert_coco(labels_dir="path/to/coco/annotations/", use_keypoints=True)
이 도구는 COCO 데이터셋 또는 COCO 형식으로 주석이 달린 데이터를 Ultralytics YOLO 형식으로 변환하는 데 사용됩니다. 자세한 내용은 변환 도구 섹션을 참조하세요.