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

객체 감지 데이터 μ„ΈνŠΈ κ°œμš”

κ°•λ ₯ν•˜κ³  μ •ν™•ν•œ 객체 감지 λͺ¨λΈμ„ ν›ˆλ ¨ν•˜λ €λ©΄ 포괄적인 데이터 μ„ΈνŠΈκ°€ ν•„μš”ν•©λ‹ˆλ‹€. 이 κ°€μ΄λ“œμ—μ„œλŠ” Ultralytics YOLO λͺ¨λΈκ³Ό ν˜Έν™˜λ˜λŠ” λ‹€μ–‘ν•œ ν˜•μ‹μ˜ 데이터셋을 μ†Œκ°œν•˜κ³  κ·Έ ꡬ쑰, μ‚¬μš©λ²•, μ„œλ‘œ λ‹€λ₯Έ ν˜•μ‹ κ°„ λ³€ν™˜ 방법에 λŒ€ν•œ μΈμ‚¬μ΄νŠΈλ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€.

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

Ultralytics YOLO ν˜•μ‹

Ultralytics YOLO ν˜•μ‹μ€ 데이터 μ„ΈνŠΈ ꡬ성 ν˜•μ‹μœΌλ‘œ, 데이터 μ„ΈνŠΈ 루트 디렉터리, νŠΈλ ˆμ΄λ‹/검증/ν…ŒμŠ€νŠΈ 이미지 λ””λ ‰ν„°λ¦¬μ˜ μƒλŒ€ 경둜 λ˜λŠ” *.txt 파일과 이미지 κ²½λ‘œκ°€ ν¬ν•¨λœ 클래슀 이름 사전이 μžˆμŠ΅λ‹ˆλ‹€. λ‹€μŒμ€ μ˜ˆμ‹œμž…λ‹ˆλ‹€:

# 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  # 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)

# Classes (80 COCO classes)
names:
  0: person
  1: bicycle
  2: car
  # ...
  77: teddy bear
  78: hair drier
  79: toothbrush

이 ν˜•μ‹μ˜ λ ˆμ΄λΈ”μ€ YOLO ν˜•μ‹μœΌλ‘œ 내보내야 ν•©λ‹ˆλ‹€. *.txt νŒŒμΌμ„ μΆ”κ°€ν•©λ‹ˆλ‹€. 이미지에 객체가 μ—†λŠ” κ²½μš°μ—λŠ” *.txt 파일이 ν•„μš”ν•©λ‹ˆλ‹€. νŒŒμΌμ€ *.txt νŒŒμΌμ€ 객체당 ν•œ ν–‰μœΌλ‘œ 포맷해야 ν•©λ‹ˆλ‹€. class x_center y_center width height ν˜•μ‹μ΄μ–΄μ•Ό ν•©λ‹ˆλ‹€. μƒμž μ’Œν‘œλŠ” μ •κ·œν™”λœ xywh ν˜•μ‹(0μ—μ„œ 1κΉŒμ§€)을 μ‚¬μš©ν•΄μ•Ό ν•©λ‹ˆλ‹€. μƒμžκ°€ ν”½μ…€ λ‹¨μœ„μΈ 경우 λ‹€μŒμ„ λ‚˜λˆ„μ–΄μ•Ό ν•©λ‹ˆλ‹€. x_center 그리고 width λ₯Ό 이미지 λ„ˆλΉ„λ‘œ, 그리고 y_center 그리고 height λ₯Ό 이미지 λ†’μ΄λ³„λ‘œ μ •λ ¬ν•©λ‹ˆλ‹€. 클래슀 λ²ˆν˜ΈλŠ” 0으둜 μ‹œμž‘ν•˜λŠ” 영 μΈλ±μŠ€μ—¬μ•Ό ν•©λ‹ˆλ‹€.

λ ˆμ΄λΈ”μ΄ μ§€μ •λœ 이미지 μ˜ˆμ‹œ

μœ„ 이미지에 ν•΄λ‹Ήν•˜λŠ” 라벨 νŒŒμΌμ—λŠ” 2인(클래슀 0) 및 동점(클래슀 27):

λ ˆμ΄λΈ” 파일 μ˜ˆμ‹œ

Ultralytics YOLO ν˜•μ‹μ„ μ‚¬μš©ν•˜λŠ” 경우 μ•„λž˜ COCO8 데이터 μ„ΈνŠΈ μ˜ˆμ‹œμ™€ 같이 νŠΈλ ˆμ΄λ‹ 및 μœ νš¨μ„± 검사 이미지와 λ ˆμ΄λΈ”μ„ κ΅¬μ„±ν•©λ‹ˆλ‹€.

데이터 μ„ΈνŠΈ 디렉터리 ꡬ쑰 μ˜ˆμ‹œ

μ‚¬μš©λ²•

μ΄λŸ¬ν•œ ν˜•μ‹μ„ μ‚¬μš©ν•˜μ—¬ λͺ¨λΈμ„ ν›ˆλ ¨ν•˜λŠ” 방법은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€:

예

from ultralytics import YOLO

# Load a model
model = YOLO('yolov8n.pt')  # load a pretrained model (recommended for training)

# Train the model
results = model.train(data='coco8.yaml', epochs=100, imgsz=640)
# Start training from a pretrained *.pt model
yolo detect train data=coco8.yaml model=yolov8n.pt epochs=100 imgsz=640

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

λ‹€μŒμ€ μ§€μ›λ˜λŠ” 데이터 μ„ΈνŠΈ λͺ©λ‘κ³Ό 각 데이터 μ„ΈνŠΈμ— λŒ€ν•œ κ°„λž΅ν•œ μ„€λͺ…μž…λ‹ˆλ‹€:

  • Argoverse: μžμœ¨μ£Όν–‰ μ°¨λŸ‰μ—μ„œ μˆ˜μ§‘ν•œ μ„Όμ„œ 데이터 λͺ¨μŒμž…λ‹ˆλ‹€. μ—¬κΈ°μ—λŠ” μžλ™μ°¨ 객체에 λŒ€ν•œ 3D 좔적 주석이 ν¬ν•¨λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.
  • COCO: COCO(Common Objects in Context)λŠ” 80개의 객체 λ²”μ£Όλ‘œ κ΅¬μ„±λœ λŒ€κ·œλͺ¨ 객체 감지, μ„ΈλΆ„ν™” 및 μΊ‘μ…˜ 데이터 μ„ΈνŠΈμž…λ‹ˆλ‹€.
  • LVIS: LVIS: 1203개의 객체 μΉ΄ν…Œκ³ λ¦¬κ°€ μžˆλŠ” λŒ€κ·œλͺ¨ 객체 감지, λΆ„ν•  및 μΊ‘μ…˜ 데이터 μ„ΈνŠΈμž…λ‹ˆλ‹€.
  • COCO8: COCO 데이터 μ„ΈνŠΈμ˜ 더 μž‘μ€ ν•˜μœ„ 집합인 COCO8은 더 가볍고 λΉ λ₯΄κ²Œ ν•™μŠ΅ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • κΈ€λ‘œλ²Œ λ°€2020: κΈ€λ‘œλ²Œ λ°€ μ±Œλ¦°μ§€ 2020의 λ°€ 머리 이미지가 ν¬ν•¨λœ 데이터 μ„ΈνŠΈμž…λ‹ˆλ‹€.
  • 였브젝트365: 물체 감지 연ꡬλ₯Ό λ°œμ „μ‹œν‚€κΈ° μœ„ν•΄ 365개의 물체 μΉ΄ν…Œκ³ λ¦¬μ™€ 60만 개의 이미지가 ν¬ν•¨λœ λŒ€κ·œλͺ¨ 물체 감지 데이터 μ„ΈνŠΈμž…λ‹ˆλ‹€.
  • OpenImagesV7: 170만 개의 κΈ°μ°¨ 이미지와 4만 2천 개의 μœ νš¨μ„± 검사 이미지가 ν¬ν•¨λœ Google의 포괄적인 데이터 μ„ΈνŠΈμž…λ‹ˆλ‹€.
  • SKU-110K: μ†Œλ§€ ν™˜κ²½ 객체 감지λ₯Ό μœ„ν•œ λ°€μ§‘λœ μ†Œλ§€ μ œν’ˆ 이미지가 ν¬ν•¨λœ 데이터 μ„ΈνŠΈμž…λ‹ˆλ‹€.
  • VisDrone: μžλ™μ°¨, λ³΄ν–‰μž, μžμ „κ±° νƒ€λŠ” μ‚¬λžŒ λ“± λ‹€μ–‘ν•œ 객체 μΉ΄ν…Œκ³ λ¦¬λ₯Ό ν¬ν•¨ν•˜λŠ” λ“œλ‘  기반 이미지에 μ΄ˆμ μ„ 맞좘 데이터 μ„ΈνŠΈμž…λ‹ˆλ‹€.
  • VOC: μ°¨λŸ‰, 동물, 가ꡬ λ“± 20개의 객체 μΉ΄ν…Œκ³ λ¦¬λ₯Ό ν¬ν•¨ν•˜λŠ” 인기 μžˆλŠ” 객체 감지 데이터 μ„ΈνŠΈμž…λ‹ˆλ‹€.
  • xView: μ˜€λ²„ν—€λ“œ λ·°μ—μ„œ λ‹€μ–‘ν•œ 객체 클래슀λ₯Ό κ°μ§€ν•˜λ„λ‘ μ„€κ³„λœ 고해상도 μœ„μ„± 이미지가 ν¬ν•¨λœ 데이터 μ„ΈνŠΈμž…λ‹ˆλ‹€.
  • λ‡Œμ’…μ–‘: 이 데이터 μ„ΈνŠΈλŠ” λ‡Œμ’…μ–‘μ˜ 쑴재 μ—¬λΆ€, μœ„μΉ˜ 및 νŠΉμ§•μ— λŒ€ν•œ 정보가 ν¬ν•¨λœ MRI λ˜λŠ” CT μŠ€μΊ” μ΄λ―Έμ§€λ‘œ κ΅¬μ„±λ©λ‹ˆλ‹€. μ’…μ–‘ 식별을 μžλ™ν™”ν•˜μ—¬ μ‘°κΈ° 진단 및 치료 κ³„νšμ„ μš©μ΄ν•˜κ²Œ ν•˜λŠ” 컴퓨터 λΉ„μ „ λͺ¨λΈμ„ ν›ˆλ ¨ν•˜λŠ” 데 μ€‘μš”ν•œ 역할을 ν•©λ‹ˆλ‹€.
  • 아프리카 야생동물: λ²„νŒ”λ‘œ, 코끼리, μ½”λΏ”μ†Œ, 얼룩말 λ“± 아프리카 μ•Όμƒλ™λ¬Όμ˜ 이미지가 ν¬ν•¨λœ 이 데이터 μ„ΈνŠΈλŠ” 컴퓨터 λΉ„μ „ λͺ¨λΈμ„ ν›ˆλ ¨ν•˜λŠ” 데 μ€‘μš”ν•œ 역할을 ν•©λ‹ˆλ‹€. λ‹€μ–‘ν•œ μ„œμ‹μ§€μ—μ„œ 동물을 μ‹λ³„ν•˜λŠ” 데 ν•„μˆ˜μ μ΄λ©° 야생동물 연ꡬ λ…Έλ ₯에 크게 κΈ°μ—¬ν•©λ‹ˆλ‹€.

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

자체 데이터 μ„ΈνŠΈκ°€ 있고 이λ₯Ό Ultralytics YOLO ν˜•μ‹μœΌλ‘œ 탐지 λͺ¨λΈ ν•™μŠ΅μ— μ‚¬μš©ν•˜λ €λŠ” 경우, μœ„μ˜ "Ultralytics YOLO ν˜•μ‹"에 μ§€μ •λœ ν˜•μ‹μ„ λ”°λ₯΄λŠ”지 ν™•μΈν•˜μ„Έμš”. μ–΄λ…Έν…Œμ΄μ…˜μ„ ν•„μš”ν•œ ν˜•μ‹μœΌλ‘œ λ³€ν™˜ν•˜κ³  YAML ꡬ성 νŒŒμΌμ— 경둜, 클래슀 수, 클래슀 이름을 μ§€μ •ν•˜μ„Έμš”.

라벨 ν˜•μ‹ 포트 λ˜λŠ” λ³€ν™˜

COCO 데이터 μ„ΈνŠΈ ν˜•μ‹μ„ YOLO ν˜•μ‹μœΌλ‘œ λ³€ν™˜

λ‹€μŒ μ½”λ“œ μŠ€λ‹ˆνŽ«μ„ μ‚¬μš©ν•˜μ—¬ 널리 μ‚¬μš©λ˜λŠ” COCO 데이터 μ„ΈνŠΈ ν˜•μ‹μ—μ„œ YOLO ν˜•μ‹μœΌλ‘œ 라벨을 μ‰½κ²Œ λ³€ν™˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€:

예

from ultralytics.data.converter import convert_coco

convert_coco(labels_dir='path/to/coco/annotations/')

이 λ³€ν™˜ λ„κ΅¬λŠ” COCO 데이터 μ„ΈνŠΈ λ˜λŠ” COCO ν˜•μ‹μ˜ 데이터 μ„ΈνŠΈλ₯Ό Ultralytics YOLO ν˜•μ‹μœΌλ‘œ λ³€ν™˜ν•˜λŠ” 데 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μ‚¬μš©ν•˜λ €λŠ” 데이터 μ„ΈνŠΈκ°€ λͺ¨λΈκ³Ό ν˜Έν™˜λ˜λŠ”μ§€, ν•„μš”ν•œ ν˜•μ‹ κ·œμΉ™μ„ λ”°λ₯΄κ³  μžˆλŠ”μ§€ λ‹€μ‹œ ν•œ 번 ν™•μΈν•˜λŠ” 것을 μžŠμ§€ λ§ˆμ„Έμš”. μ˜¬λ°”λ₯Έ ν˜•μ‹μ˜ 데이터 μ„ΈνŠΈλŠ” 성곡적인 객체 감지 λͺ¨λΈμ„ ν•™μŠ΅μ‹œν‚€λŠ” 데 맀우 μ€‘μš”ν•©λ‹ˆλ‹€.



2023-11-12 생성, 2024-04-18 μ—…λ°μ΄νŠΈλ¨
μž‘μ„±μž: glenn-jocher (7), IvorZhu331 (1), Laughing-q (1), RizwanMunawar (1)

λŒ“κΈ€