Ultralytics YOLO27:
Get Started

COCO-Pose 데이터셋#

COCO-Pose 데이터셋은 COCO(문맥 속 일반 객체)를 포즈 추정에 맞게 조정한 것으로, COCO Keypoints 2017의 이미지 58,945개에 17개 키포인트 체계를 사용해 주석을 추가한 사람 156,165명이 포함됩니다. 이 데이터셋은 Ultralytics YOLO26과 같은 키포인트 모델의 학습 및 벤치마킹을 위한 표준 데이터셋이며, 8개 이미지로 구성된 COCO8-Pose 하위 집합은 빠른 기본 동작 확인을 위해 동일한 형식을 따릅니다.

사람 키포인트를 사용한 COCO 포즈 추정

COCO-Pose 사전 학습 모델#

모델크기
(픽셀)
mAPpose
50-95(e2e)
mAPpose
50(e2e)
속도
CPU ONNX
(ms)
속도
T4 TensorRT10
(ms)
파라미터
(M)
FLOPs
(B)
YOLO26n-pose64057.283.340.3 ± 0.51.8 ± 0.02.97.6
YOLO26s-pose64063.086.685.3 ± 0.92.7 ± 0.010.424.1
YOLO26m-pose64068.889.6218.0 ± 1.55.0 ± 0.121.573.3
YOLO26l-pose64070.490.5275.4 ± 2.46.5 ± 0.125.991.7
YOLO26x-pose64071.691.6565.4 ± 3.012.2 ± 0.257.6202.3

주요 기능#

  • COCO-Pose는 주석이 추가된 사람 156,165명에 걸쳐 개별 키포인트 1,710,498개를 라벨링한 COCO Keypoints 2017 챌린지를 기반으로 합니다.
  • 각 사람 주석에는 코, 눈, 귀, 어깨, 팔꿈치, 손목, 엉덩이, 무릎, 발목 등 17가지 키포인트 유형이 사용되며, (x, y, visibility) 트리플릿으로 저장됩니다.
  • COCO와 마찬가지로 포즈 추정 작업을 위한 객체 키포인트 유사도(OKS)를 비롯해 표준화된 평가 지표를 제공하므로 모델 성능 비교에 적합합니다.
  • 다운로드 크기: 최초 사용 시 ~20.2 GB(train2017.zip + val2017.zip + 라벨)입니다. 7 GB 용량의 test2017.zip는 해당 이미지의 정답 레이블이 공개되지 않았으며 test-dev2017 제출에만 필요하므로 자동으로 가져오지 않습니다.

데이터셋 구조#

학습 및 검증용 COCO-Pose에는 키포인트 주석이 있는 사람이 포함된 COCO 2017 이미지만 포함되므로, 라벨이 지정된 분할 데이터셋은 전체 COCO보다 작습니다. YAML에는 세 가지 하위 집합이 정의되어 있습니다:

  1. Train2017: 이 하위 집합에는 포즈 추정 모델 학습용으로 주석이 추가된 COCO 데이터셋 이미지 56,599개가 포함됩니다.
  2. Val2017: 이 하위 집합에는 모델 학습 중 검증에 사용되는 이미지 2,346개가 포함됩니다.
  3. Test-dev2017: 정답 레이블이 공개되지 않은 전체 40,670개 test2017 세트 중 이미지 20,288개로 이루어진 하위 집합입니다. 데이터셋 YAML은 이 분할 데이터셋을 COCO test-dev 키포인트 평가 서버에 연결합니다.

이 규모의 학습에서는 Ultralytics Platform이 특히 유용합니다. 컴퓨팅 리소스를 관리하므로 자체 GPU를 프로비저닝하지 않고도 실행을 시작하고 모니터링할 수 있습니다.

응용 분야#

COCO-Pose 데이터셋은 키포인트 감지 및 포즈 추정에 관한 딥러닝 모델의 학습과 평가에 사용됩니다. 주석이 추가된 이미지가 많고 표준화된 평가 지표를 제공하므로 인간 포즈를 연구하는 컴퓨터 비전 연구자와 실무자에게 필수적인 리소스입니다.

데이터셋 YAML#

데이터셋 구성을 정의하는 데 YAML 파일이 사용됩니다. 이 파일에는 데이터셋의 경로, 클래스 및 기타 관련 정보가 포함됩니다. COCO-Pose 데이터셋의 경우 coco-pose.yaml 파일은 https://github.com/ultralytics/ultralytics/blob/main/ultralytics/cfg/datasets/coco-pose.yaml에 있습니다.

ultralytics/cfg/datasets/coco-pose.yaml
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license

# COCO 2017 Keypoints dataset https://cocodataset.org by Microsoft
# Documentation: https://docs.ultralytics.com/datasets/pose/coco
# Example usage: yolo train data=coco-pose.yaml
# parent
# ├── ultralytics
# └── datasets
#     └── coco-pose ← downloads here (20.2 GB)

# 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: coco-pose # dataset root dir
train: train2017.txt # train images (relative to 'path') 56599 images
val: val2017.txt # val images (relative to 'path') 2346 images
test: test-dev2017.txt # 20288 of 40670 images, submit to https://codalab.lisn.upsaclay.fr/competitions/7403

# 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: |
  from pathlib import Path

  from ultralytics.utils import ASSETS_URL
  from ultralytics.utils.downloads import download

  # Download labels
  dir = Path(yaml["path"])  # dataset root dir

  urls = [f"{ASSETS_URL}/coco2017labels-pose.zip"]
  download(urls, dir=dir.parent)

  # Download data (test2017.zip excluded: ground truth is withheld, only used for the CodaLab test-dev split)
  urls = [
      "http://images.cocodataset.org/zips/train2017.zip",  # 19G, 118k images
      "http://images.cocodataset.org/zips/val2017.zip",  # 1G, 5k images
  ]
  download(urls, dir=dir / "images", threads=3)

사용법#

COCO-Pose 데이터셋에서 YOLO26n-pose 모델을 이미지 크기 640, 에폭 100회로 학습하려면 다음 코드 스니펫을 사용할 수 있습니다. 사용 가능한 인수의 전체 목록은 모델 학습 페이지를 참조하세요.

학습 예제
from ultralytics import YOLO

# 모델 로드
model = YOLO("yolo26n-pose.pt")  # 사전 학습된 모델을 불러옵니다(학습에 권장).

# 모델 학습
results = model.train(data="coco-pose.yaml", epochs=100, imgsz=640)

샘플 이미지 및 어노테이션#

COCO-Pose 데이터셋에는 키포인트가 주석으로 표시된 사람 이미지가 다양하게 포함되어 있습니다. 다음은 데이터셋 이미지와 해당 주석의 몇 가지 예입니다:

COCO 포즈 추정 데이터셋 모자이크 학습 배치

  • 모자이크 이미지: 이 이미지는 모자이크 처리된 데이터셋 이미지로 구성된 학습 배치를 보여줍니다. 모자이크 처리는 학습 중 여러 이미지를 하나의 이미지로 결합해 각 학습 배치에 포함되는 객체와 장면의 다양성을 높이는 기법입니다. 이 기법은 모델이 다양한 객체 크기, 종횡비 및 맥락에 일반화하는 능력을 향상하는 데 도움이 됩니다.

이 예시는 COCO-Pose 데이터셋 이미지의 다양성과 복잡성, 그리고 학습 과정에서 모자이크를 사용하는 이점을 보여줍니다.

인용 및 감사의 글#

연구 또는 개발 작업에 COCO-Pose 데이터셋을 사용하는 경우, 다음 논문을 인용해 주세요:

인용
@misc{lin2015microsoft,
      title={Microsoft COCO: Common Objects in Context},
      author={Tsung-Yi Lin and Michael Maire and Serge Belongie and Lubomir Bourdev and Ross Girshick and James Hays and Pietro Perona and Deva Ramanan and C. Lawrence Zitnick and Piotr Dollár},
      year={2015},
      eprint={1405.0312},
      archivePrefix={arXiv},
      primaryClass={cs.CV}
}

컴퓨터 비전 커뮤니티에 이 귀중한 리소스를 만들고 유지 관리해 주신 COCO Consortium에 감사드립니다. COCO-Pose 데이터셋과 제작자에 대한 자세한 내용은 COCO 데이터셋 웹사이트를 방문해 주세요.

자주 묻는 질문#

  • COCO-Pose는 COCO Keypoints 2017 이미지와 주석을 YOLO 키포인트 형식으로 변환하여 제공하며, 58,945개 이미지에 걸쳐 17개 키포인트 스키마를 사용합니다. data=coco-pose.yaml을 지정해 Ultralytics YOLO 포즈 모델을 사용할 수 있으며, 학습 페이지에서 조정할 수 있는 모든 인수를 설명합니다.

  • yolo26n-pose.pt을 로드하고 model.train(data="coco-pose.yaml", epochs=100, imgsz=640)을 호출하세요. 전체 Python 및 CLI 코드 예제는 위의 학습 예제를, 인수 전체 목록은 학습 페이지를 참조하세요.

  • COCO-Pose 데이터셋은 원본 COCO 데이터셋과 마찬가지로 포즈 추정 작업을 위한 여러 표준 평가 지표를 제공합니다. 주요 지표에는 예측한 키포인트와 정답 주석의 정확도를 평가하는 객체 키포인트 유사도(OKS)가 포함됩니다. 이러한 지표를 사용하면 여러 모델의 성능을 철저히 비교할 수 있습니다. 예를 들어, YOLO26n-pose, YOLO26s-pose 등의 COCO-Pose 사전 학습 모델은 문서에 mAPpose50-95 및 mAPpose50과 같은 개별 성능 지표가 명시되어 있습니다.

  • COCO-Pose에는 train2017 이미지 56,599개와 val2017 이미지 2,346개로 구성된 레이블 지정 분할 두 개가 포함됩니다. 세 번째 분할인 test-dev2017은 전체 test2017 이미지 40,670개 중 20,288개로 구성되며, 정답 데이터는 비공개로 유지됩니다. 데이터셋 YAML은 이 분할을 COCO test-dev 키포인트 평가 서버에 연결합니다. 정확한 분할 경로는 데이터셋 구조 섹션이나 GitHub의 coco-pose.yaml 파일을 참조하세요.

  • COCO-Pose는 17가지 사람 키포인트 유형을 사용하며, 모델 비교를 위한 객체 키포인트 유사도(OKS)를 포함해 COCO의 표준화된 지표를 계승합니다. 이러한 조합은 스포츠 분석, 의료, 인간-컴퓨터 상호작용과 같은 사람 포즈 활용 분야에 적합합니다. 사전 학습된 YOLO26-pose 가중치는 COCO-Pose 사전 학습 모델에 나열되어 있습니다.

    키포인트 모델에 대한 자세한 내용은 포즈 추정 작업 문서를 참조하세요.

댓글