μ½˜ν…μΈ λ‘œ κ±΄λ„ˆλ›°κΈ°

포즈 μΆ”μ • 데이터 μ„ΈνŠΈ κ°œμš”

μ§€μ›λ˜λŠ” 데이터 μ„ΈνŠΈ ν˜•μ‹

Ultralytics YOLO ν˜•μ‹

YOLO 포즈 λͺ¨λΈ ν•™μŠ΅μ— μ‚¬μš©λ˜λŠ” 데이터 μ„ΈνŠΈ λ ˆμ΄λΈ” ν˜•μ‹μ€ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€:

  1. 이미지당 ν•˜λ‚˜μ˜ ν…μŠ€νŠΈ 파일: 데이터 μ„ΈνŠΈμ˜ 각 μ΄λ―Έμ§€μ—λŠ” 이미지 파일과 이름이 κ°™κ³  ν™•μž₯μžκ°€ ".txt"인 ν•΄λ‹Ή ν…μŠ€νŠΈ 파일이 μžˆμŠ΅λ‹ˆλ‹€.
  2. 객체당 ν•˜λ‚˜μ˜ ν–‰: ν…μŠ€νŠΈ 파일의 각 행은 μ΄λ―Έμ§€μ˜ 객체 μΈμŠ€ν„΄μŠ€ ν•˜λ‚˜μ— ν•΄λ‹Ήν•©λ‹ˆλ‹€.
  3. 행별 객체 정보: 각 ν–‰μ—λŠ” 객체 μΈμŠ€ν„΄μŠ€μ— λŒ€ν•œ λ‹€μŒ 정보가 ν¬ν•¨λ©λ‹ˆλ‹€:
    • 객체 클래슀 인덱슀: 객체의 클래슀λ₯Ό λ‚˜νƒ€λ‚΄λŠ” μ •μˆ˜(예: μ‚¬λžŒμ˜ 경우 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> <p2-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
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처럼 쒌우 인덱슀만 λ°”κΎΈκ³  μ½” 같은 λ‹€λ₯Έ μΈλ±μŠ€λŠ” μˆ˜μ •ν•˜μ§€ λ§ˆμ„Έμš”).

μ‚¬μš©λ²•

예

from ultralytics import YOLO

# Load a model
model = YOLO('yolov8n-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 detect train data=coco8-pose.yaml model=yolov8n-pose.pt epochs=100 imgsz=640

μ§€μ›λ˜λŠ” 데이터 μ„ΈνŠΈ

이 μ„Ήμ…˜μ—μ„œλŠ” 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개.
  • μ‚¬μš©λ²•: μ‚¬μš©λ²•: 동물 ν¬μ¦ˆλ‚˜ μ‚¬λžŒμ΄ μ•„λ‹Œ λ‹€λ₯Έ ν¬μ¦ˆμ— μ ν•©ν•©λ‹ˆλ‹€.
  • ν˜Έλž‘μ΄ ν¬μ¦ˆμ— λŒ€ν•΄ μžμ„Ένžˆ μ•Œμ•„λ³΄κΈ°

λ‚˜λ§Œμ˜ 데이터 집합 μΆ”κ°€ν•˜κΈ°

자체 데이터 μ„ΈνŠΈκ°€ 있고 이λ₯Ό 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 λ§€κ°œλ³€μˆ˜λŠ” λ³€ν™˜λœ λ ˆμ΄λΈ”μ— ν‚€ν¬μΈνŠΈ(포즈 μΆ”μ •μš©)λ₯Ό 포함할지 μ—¬λΆ€λ₯Ό μ§€μ •ν•©λ‹ˆλ‹€.



생성 2023-11-12, μ—…λ°μ΄νŠΈ 2024-04-18
μž‘μ„±μž: glenn-jocher (6)

λŒ“κΈ€