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

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

κ°•λ ₯ν•˜κ³  μ •ν™•ν•œ 객체 감지 λͺ¨λΈμ„ ν›ˆλ ¨ν•˜λ €λ©΄ 포괄적인 데이터 μ„ΈνŠΈκ°€ ν•„μš”ν•©λ‹ˆλ‹€. 이 κ°€μ΄λ“œμ—μ„œλŠ” 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)λŠ” 80개의 개체 λ²”μ£Όλ‘œ κ΅¬μ„±λœ λŒ€κ·œλͺ¨ 개체 감지, μ„ΈλΆ„ν™” 및 μΊ‘μ…˜ 데이터 μ„ΈνŠΈμž…λ‹ˆλ‹€.
  • LVIS: 1203개의 객체 μΉ΄ν…Œκ³ λ¦¬κ°€ ν¬ν•¨λœ λŒ€κ·œλͺ¨ 객체 감지, μ„ΈλΆ„ν™” 및 μΊ‘μ…˜ 데이터 μ„ΈνŠΈμž…λ‹ˆλ‹€.
  • COCO8: λΉ λ₯Έ ν…ŒμŠ€νŠΈμ— μ ν•©ν•œ COCO train 및 COCO val의 처음 4개 μ΄λ―Έμ§€μ˜ μž‘μ€ ν•˜μœ„ μ§‘ν•©μž…λ‹ˆλ‹€.
  • κΈ€λ‘œλ²Œ λ°€ 2020: κΈ€λ‘œλ²Œ λ°€ μ±Œλ¦°μ§€ 2020의 λ°€ 머리 이미지가 ν¬ν•¨λœ 데이터 μ„ΈνŠΈμž…λ‹ˆλ‹€.
  • Objects365: 365개의 물체 μΉ΄ν…Œκ³ λ¦¬μ™€ 60만 개 μ΄μƒμ˜ 주석이 달린 이미지가 ν¬ν•¨λœ κ³ ν’ˆμ§ˆμ˜ λŒ€κ·œλͺ¨ 물체 감지 데이터 μ„ΈνŠΈμž…λ‹ˆλ‹€.
  • OpenImagesV7: 170만 개의 μ—΄μ°¨ 이미지와 4만 2천 개의 μœ νš¨μ„± 검사 이미지가 ν¬ν•¨λœ Google의 포괄적인 데이터 μ„ΈνŠΈμž…λ‹ˆλ‹€.
  • SKU-110K: 11K 개 μ΄μƒμ˜ 이미지와 170만 개의 경계 μƒμžλ‘œ κ΅¬μ„±λœ μ†Œλ§€ ν™˜κ²½μ—μ„œμ˜ 고밀도 물체 감지 κΈ°λŠ₯을 κ°–μΆ˜ 데이터 μ„ΈνŠΈμž…λ‹ˆλ‹€.
  • VisDrone: 10K μ΄μƒμ˜ 이미지와 λΉ„λ””μ˜€ μ‹œν€€μŠ€κ°€ ν¬ν•¨λœ λ“œλ‘ μœΌλ‘œ μΊ‘μ²˜ν•œ μ΄λ―Έμ§€μ˜ 객체 감지 및 닀쀑 객체 좔적 데이터가 ν¬ν•¨λœ 데이터 μ„ΈνŠΈμž…λ‹ˆλ‹€.
  • VOC: 20개의 객체 ν΄λž˜μŠ€μ™€ 11,000개 μ΄μƒμ˜ 이미지가 ν¬ν•¨λœ 객체 감지 및 뢄할을 μœ„ν•œ 파슀칼 μ‹œκ° 객체 클래슀(VOC) 데이터 μ„ΈνŠΈμž…λ‹ˆλ‹€.
  • xView: 60개의 객체 μΉ΄ν…Œκ³ λ¦¬μ™€ 100만 개 μ΄μƒμ˜ 주석이 달린 μ˜€λ²„ν—€λ“œ μ΄λ―Έμ§€μ—μ„œ 객체λ₯Ό κ°μ§€ν•˜κΈ° μœ„ν•œ 데이터 μ„ΈνŠΈμž…λ‹ˆλ‹€.
  • Roboflow 100: 포괄적인 λͺ¨λΈ 평가λ₯Ό μœ„ν•΄ 7개 이미지 μ˜μ—­μ— 걸쳐 100개의 데이터 μ„ΈνŠΈλ₯Ό ν¬ν•¨ν•˜λŠ” λ‹€μ–‘ν•œ 물체 감지 λ²€μΉ˜λ§ˆν¬μž…λ‹ˆλ‹€.
  • λ‡Œμ’…μ–‘: λ‡Œμ’…μ–‘μ„ κ°μ§€ν•˜κΈ° μœ„ν•œ 데이터 μ„ΈνŠΈμ—λŠ” μ’…μ–‘μ˜ 쑴재 μ—¬λΆ€, μœ„μΉ˜ 및 νŠΉμ§•μ— λŒ€ν•œ μ„ΈλΆ€ 정보가 ν¬ν•¨λœ 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 ν˜•μ‹μœΌλ‘œ λ³€ν™˜ν•˜λŠ” 데 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

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



Created 2023-11-12, Updated 2024-06-02
Authors: glenn-jocher (9), RizwanMunawar (2), IvorZhu331 (1), Laughing-q (1)

λŒ“κΈ€