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

μ‚¬μš©μž 지정 데이터 ν›ˆλ ¨

이 κ°€μ΄λ“œμ—μ„œλŠ” λ‹€μŒμ„ μ‚¬μš©ν•˜μ—¬ μ‚¬μš©μž 지정 데이터 μ„ΈνŠΈλ₯Ό ν›ˆλ ¨ν•˜λŠ” 방법을 μ„€λͺ…ν•©λ‹ˆλ‹€. YOLOv5 πŸš€.

μ‹œμž‘ν•˜κΈ° 전에

리포지토리λ₯Ό λ³΅μ œν•˜κ³  μš”κ΅¬μ‚¬ν•­.txtλ₯Ό μ„€μΉ˜ν•©λ‹ˆλ‹€. Python>=3.8.0 ν™˜κ²½μ„ ν¬ν•¨ν•˜μ—¬ PyTorch>=1.8. λͺ¨λΈ 및 데이터 μ„ΈνŠΈλŠ” μ΅œμ‹  YOLOv5 λ¦΄λ¦¬μŠ€μ—μ„œ μžλ™μœΌλ‘œ λ‹€μš΄λ‘œλ“œλ©λ‹ˆλ‹€.

git clone https://github.com/ultralytics/yolov5  # clone
cd yolov5
pip install -r requirements.txt  # install

μ‚¬μš©μž 지정 데이터에 λŒ€ν•œ ꡐ윑

Ultralytics λŠ₯동적 ν•™μŠ΅

객체λ₯Ό κ°μ§€ν•˜λŠ” μ‚¬μš©μž 지정 λͺ¨λΈμ„ λ§Œλ“œλŠ” 것은 이미지λ₯Ό μˆ˜μ§‘ 및 μ •λ¦¬ν•˜κ³ , 관심 객체에 λ ˆμ΄λΈ”μ„ μ§€μ •ν•˜κ³ , λͺ¨λΈμ„ ν•™μŠ΅μ‹œν‚€κ³ , 야생에 λ°°ν¬ν•˜μ—¬ μ˜ˆμΈ‘μ„ μˆ˜ν–‰ν•œ λ‹€μŒ, 배포된 λͺ¨λΈμ„ μ‚¬μš©ν•˜μ—¬ 엣지 μ‚¬λ‘€μ˜ 예λ₯Ό μˆ˜μ§‘ν•˜μ—¬ 반볡 및 κ°œμ„ ν•˜λŠ” 반볡적인 ν”„λ‘œμ„ΈμŠ€μž…λ‹ˆλ‹€.

λΌμ΄μ„ μŠ€

Ultralytics λŠ” 두 가지 λΌμ΄μ„ μŠ€ μ˜΅μ…˜μ„ μ œκ³΅ν•©λ‹ˆλ‹€:

μžμ„Έν•œ λ‚΄μš©μ€ Ultralytics λΌμ΄μ„ μŠ€λ₯Ό μ°Έμ‘°ν•˜μ„Έμš”.

YOLOv5 λͺ¨λΈμ€ ν•΄λ‹Ή λ°μ΄ν„°μ—μ„œ 객체의 클래슀λ₯Ό ν•™μŠ΅ν•˜κΈ° μœ„ν•΄ λ ˆμ΄λΈ”μ΄ μ§€μ •λœ 데이터에 λŒ€ν•΄ ν•™μŠ΅ν•΄μ•Ό ν•©λ‹ˆλ‹€. ν•™μŠ΅μ„ μ‹œμž‘ν•˜κΈ° 전에 데이터 μ„ΈνŠΈλ₯Ό λ§Œλ“œλŠ” λ°λŠ” 두 가지 μ˜΅μ…˜μ΄ μžˆμŠ΅λ‹ˆλ‹€:

μ˜΅μ…˜ 1: 데이터 집합 λ§Œλ“€κΈ° Roboflow 데이터 집합

1.1 이미지 μˆ˜μ§‘

λͺ¨λΈμ€ λͺ¨λ²”을 톡해 ν•™μŠ΅ν•©λ‹ˆλ‹€. μ‹€μ œμ™€ μœ μ‚¬ν•œ μ΄λ―Έμ§€λ‘œ ν›ˆλ ¨ν•˜λŠ” 것이 κ°€μž₯ μ€‘μš”ν•©λ‹ˆλ‹€. μ΅œμ’…μ μœΌλ‘œ ν”„λ‘œμ νŠΈλ₯Ό 배포할 λ•Œμ™€ λ™μΌν•œ ꡬ성(카메라, 각도, μ‘°λͺ… λ“±)μ—μ„œ λ‹€μ–‘ν•œ 이미지λ₯Ό μˆ˜μ§‘ν•˜λŠ” 것이 μ΄μƒμ μž…λ‹ˆλ‹€.

이것이 λΆˆκ°€λŠ₯ν•˜λ‹€λ©΄ 곡개 데이터 μ„ΈνŠΈμ—μ„œ μ‹œμž‘ν•˜μ—¬ 초기 λͺ¨λΈμ„ ν›ˆλ ¨ν•œ λ‹€μŒ μΆ”λ‘ ν•˜λŠ” λ™μ•ˆ μ•Όμƒμ—μ„œ 이미지λ₯Ό μƒ˜ν”Œλ§ν•˜μ—¬ 데이터 μ„ΈνŠΈμ™€ λͺ¨λΈμ„ 반볡적으둜 κ°œμ„ ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

1.2 λ ˆμ΄λΈ” λ§Œλ“€κΈ°

이미지λ₯Ό μˆ˜μ§‘ν•œ ν›„μ—λŠ” 관심 μžˆλŠ” 객체에 주석을 달아 λͺ¨λΈμ΄ ν•™μŠ΅ν•  수 μžˆλŠ” κ·Όκ±° 자료λ₯Ό λ§Œλ“€μ–΄μ•Ό ν•©λ‹ˆλ‹€.

YOLOv5 μ •ν™•μ„±

Roboflow AnnotateλŠ” νŒ€κ³Ό ν•¨κ»˜ 이미지λ₯Ό κ΄€λ¦¬ν•˜κ³  라벨을 뢙이고 YOLOv5 의 주석 ν˜•μ‹μœΌλ‘œ 내보낼 수 μžˆλŠ” κ°„λ‹¨ν•œ μ›Ή 기반 λ„κ΅¬μž…λ‹ˆλ‹€.

1.3 λ‹€μŒ λŒ€μƒμ— λŒ€ν•œ 데이터 μ„ΈνŠΈ μ€€λΉ„ YOLOv5

이미지에 Roboflow λ ˆμ΄λΈ”μ„ μ§€μ •ν•˜λ“  μ§€μ •ν•˜μ§€ μ•Šλ“ , 이λ₯Ό μ‚¬μš©ν•˜μ—¬ 데이터 μ„ΈνŠΈλ₯Ό YOLO ν˜•μ‹μœΌλ‘œ λ³€ν™˜ν•˜κ³  YOLOv5 YAML ꡬ성 νŒŒμΌμ„ μƒμ„±ν•œ λ‹€μŒ ꡐ윑 슀크립트둜 κ°€μ Έμ˜€κΈ° μœ„ν•΄ ν˜ΈμŠ€νŒ…ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

무료 Roboflow 계정 λ§Œλ“€κΈ° λ₯Ό ν΄λ¦­ν•˜κ³  데이터 집합을 Public μž‘μ—… μ˜μ—­μ—μ„œ 주석이 μ—†λŠ” 이미지에 λ ˆμ΄λΈ”μ„ μ§€μ •ν•œ λ‹€μŒ 데이터 μ„ΈνŠΈμ˜ 버전을 μƒμ„±ν•˜κ³  내보내기 YOLOv5 Pytorch ν˜•μ‹μž…λ‹ˆλ‹€.

μ°Έκ³ : YOLOv5 λŠ” ꡐ윑 쀑에 온라인 증강을 μˆ˜ν–‰ν•˜λ―€λ‘œ Roboflow μ—μ„œ YOLOv5 둜 κ΅μœ‘ν•  λ•Œ 증강 단계λ₯Ό μ μš©ν•˜μ§€ μ•ŠλŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ λ‹€μŒ μ „μ²˜λ¦¬ 단계λ₯Ό μ μš©ν•˜λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€:

ꢌμž₯ μ „μ²˜λ¦¬ 단계

  • μžλ™ λ°©ν–₯ - μ΄λ―Έμ§€μ—μ„œ EXIF λ°©ν–₯을 μ œκ±°ν•©λ‹ˆλ‹€.
  • 크기 μ‘°μ •(늘이기) - λͺ¨λΈμ˜ μ •μ‚¬κ°ν˜• μž…λ ₯ 크기(640x640이 YOLOv5 κΈ°λ³Έκ°’)둜 μ‘°μ •ν•©λ‹ˆλ‹€.

버전을 μƒμ„±ν•˜λ©΄ 데이터 μ„ΈνŠΈμ˜ μŠ€λƒ…μƒ·μ΄ μ œκ³΅λ˜λ―€λ‘œ λ‚˜μ€‘μ— 이미지λ₯Ό 더 μΆ”κ°€ν•˜κ±°λ‚˜ ꡬ성을 λ³€κ²½ν•˜λ”λΌλ„ μ–Έμ œλ“ μ§€ λŒμ•„κ°€μ„œ ν–₯ν›„ λͺ¨λΈ ν•™μŠ΅ 싀행을 이 버전과 비ꡐ할 수 μžˆμŠ΅λ‹ˆλ‹€.

YOLOv5 ν˜•μ‹μœΌλ‘œ 내보내기

내보내기 YOLOv5 Pytorch ν˜•μ‹μ˜ μŠ€λ‹ˆνŽ«μ„ ꡐ윑 μŠ€ν¬λ¦½νŠΈλ‚˜ λ…ΈνŠΈλΆμ— λ³΅μ‚¬ν•˜μ—¬ 데이터 μ„ΈνŠΈλ₯Ό λ‹€μš΄λ‘œλ“œν•©λ‹ˆλ‹€.

Roboflow 데이터 μ„ΈνŠΈ λ‹€μš΄λ‘œλ“œ μŠ€λ‹ˆνŽ«

μ˜΅μ…˜ 2: μˆ˜λ™ 데이터 μ„ΈνŠΈ λ§Œλ“€κΈ°

2.1 λ§Œλ“€κΈ° dataset.yaml

COCO128 의 첫 128개 μ΄λ―Έμ§€λ‘œ κ΅¬μ„±λœ μž‘μ€ νŠœν† λ¦¬μ–Ό 데이터 μ„ΈνŠΈμ˜ μ˜ˆμ‹œμž…λ‹ˆλ‹€. COCO train2017. 이 λ™μΌν•œ 128개의 이미지λ₯Ό ν•™μŠ΅κ³Ό 검증에 λͺ¨λ‘ μ‚¬μš©ν•˜μ—¬ ν•™μŠ΅ νŒŒμ΄ν”„λΌμΈμ΄ 과적합할 수 μžˆλŠ”μ§€ ν™•μΈν•©λ‹ˆλ‹€. data/coco128.yaml은 1) 데이터 μ„ΈνŠΈ 루트 디렉터리λ₯Ό μ •μ˜ν•˜λŠ” 데이터 μ„ΈνŠΈ ꡬ성 νŒŒμΌμž…λ‹ˆλ‹€. path 에 λŒ€ν•œ μƒλŒ€ κ²½λ‘œμ™€ train / val / test 이미지 디렉토리 (λ˜λŠ” *.txt 파일)κ³Ό 2) 클래슀 names 사전:

# 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/coco128 # dataset root dir
train: images/train2017 # train images (relative to 'path') 128 images
val: images/train2017 # val images (relative to 'path') 128 images
test: # test images (optional)

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

2.2 λ ˆμ΄λΈ” λ§Œλ“€κΈ°

주석 도ꡬλ₯Ό μ‚¬μš©ν•˜μ—¬ 이미지에 λ ˆμ΄λΈ”μ„ μ§€μ •ν•œ ν›„ λ ˆμ΄λΈ”μ„ λ‹€μŒ μ£Όμ†Œλ‘œ λ‚΄λ³΄λƒ…λ‹ˆλ‹€. YOLO ν˜•μ‹ν•˜λ‚˜λ‘œ *.txt 파일(이미지에 κ°œμ²΄κ°€ μ—†λŠ” 경우, 이미지당 *.txt 파일이 ν•„μš”ν•©λ‹ˆλ‹€). 그리고 *.txt 파일 사양은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€:

  • κ°œμ²΄λ‹Ή ν•œ ν–‰
  • 각 행은 class x_center y_center width height ν˜•μ‹μž…λ‹ˆλ‹€.
  • μƒμž μ’Œν‘œλŠ” μ •κ·œν™”λœ xywh ν˜•μ‹(0μ—μ„œ 1κΉŒμ§€)을 μ‚¬μš©ν•©λ‹ˆλ‹€. μƒμžκ°€ ν”½μ…€ λ‹¨μœ„λ‘œ λ˜μ–΄ 있으면 x_center 그리고 width λ₯Ό 이미지 λ„ˆλΉ„λ‘œ, 그리고 y_center 그리고 height 이미지 높이λ₯Ό κΈ°μ€€μœΌλ‘œ ν•©λ‹ˆλ‹€.
  • 클래슀 λ²ˆν˜ΈλŠ” 영 μΈλ±μ‹±λ©λ‹ˆλ‹€(0λΆ€ν„° μ‹œμž‘).

Roboflow 주석

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

Roboflow 데이터 μ„ΈνŠΈ μ „μ²˜λ¦¬

2.3 디렉토리 정리

μ•„λž˜ μ˜ˆμ— 따라 κΈ°μ°¨ 및 λ°Έ 이미지와 λ ˆμ΄λΈ”μ„ κ΅¬μ„±ν•©λ‹ˆλ‹€. YOLOv5 κ°€μ • /coco128 λŠ” /datasets 디렉토리 μ˜†μ— 의 /yolov5 λ””λ ‰ν„°λ¦¬λ‘œ μ΄λ™ν•©λ‹ˆλ‹€. YOLOv5 각 이미지에 λŒ€ν•΄ μžλ™μœΌλ‘œ λ ˆμ΄λΈ”μ„ μ°ΎμŠ΅λ‹ˆλ‹€. 의 λ§ˆμ§€λ§‰ μΈμŠ€ν„΄μŠ€λ₯Ό λŒ€μ²΄ν•˜μ—¬ /images/ λ₯Ό μ‚¬μš©ν•˜μ—¬ 각 이미지 κ²½λ‘œμ— /labels/. 예λ₯Ό λ“€μ–΄

../datasets/coco128/images/im0.jpg  # image
../datasets/coco128/labels/im0.txt  # label

YOLOv5 데이터 μ„ΈνŠΈ ꡬ쑰

3. λͺ¨λΈ 선택

ν›ˆλ ¨μ„ μ‹œμž‘ν•  사전 ν›ˆλ ¨λœ λͺ¨λΈμ„ μ„ νƒν•©λ‹ˆλ‹€. μ—¬κΈ°μ„œλŠ” 두 번째둜 μž‘κ³  λΉ λ₯Έ λͺ¨λΈμΈ YOLOv5sλ₯Ό μ„ νƒν•©λ‹ˆλ‹€. λͺ¨λ“  λͺ¨λΈμ— λŒ€ν•œ 전체 λΉ„κ΅λŠ” README ν‘œλ₯Ό μ°Έμ‘°ν•˜μ„Έμš”.

YOLOv5 λͺ¨λΈ

4. κΈ°μ°¨

데이터 μ„ΈνŠΈ, 배치 크기, 이미지 크기 및 사전 ν•™μŠ΅λœ λ‹€μŒ 쀑 ν•˜λ‚˜λ₯Ό μ§€μ •ν•˜μ—¬ COCO128μ—μ„œ YOLOv5s λͺ¨λΈμ„ ν•™μŠ΅ν•©λ‹ˆλ‹€. --weights yolov5s.pt (ꢌμž₯) λ˜λŠ” λ¬΄μž‘μœ„λ‘œ μ΄ˆκΈ°ν™” --weights '' --cfg yolov5s.yaml (ꢌμž₯ν•˜μ§€ μ•ŠμŒ). 사전 ν•™μŠ΅λœ κ°€μ€‘μΉ˜λŠ” λ‹€μŒμ—μ„œ μžλ™μœΌλ‘œ λ‹€μš΄λ‘œλ“œλ©λ‹ˆλ‹€. μ΅œμ‹  YOLOv5 릴리슀.

python train.py --img 640 --epochs 3 --data coco128.yaml --weights yolov5s.pt

팁

πŸ’‘ μΆ”κ°€ --cache ram λ˜λŠ” --cache disk λ₯Ό μ‚¬μš©ν•˜μ—¬ ꡐ윑 속도λ₯Ό 높일 수 μžˆμŠ΅λ‹ˆλ‹€(μƒλ‹Ήν•œ RAM/λ””μŠ€ν¬ λ¦¬μ†ŒμŠ€κ°€ ν•„μš”ν•¨).

팁

πŸ’‘ 항상 둜컬 데이터 μ„ΈνŠΈμ—μ„œ ν•™μŠ΅ν•˜μ„Έμš”. Google λ“œλΌμ΄λΈŒμ™€ 같은 마운트 λ˜λŠ” λ„€νŠΈμ›Œν¬ λ“œλΌμ΄λΈŒλŠ” 맀우 λŠλ¦½λ‹ˆλ‹€.

λͺ¨λ“  ꡐ윑 κ²°κ³ΌλŠ” λ‹€μŒ μ£Όμ†Œλ‘œ μ €μž₯λ©λ‹ˆλ‹€. runs/train/ μ‹€ν–‰ 디렉터리가 증가함에 따라, 예λ₯Ό λ“€μ–΄ runs/train/exp2, runs/train/exp3 λ“± μžμ„Έν•œ λ‚΄μš©μ€ νŠœν† λ¦¬μ–Ό λ…ΈνŠΈλΆμ˜ ꡐ윑 μ„Ήμ…˜μ„ μ°Έμ‘°ν•˜μ„Έμš”. μ½œλž©μ—μ„œ μ—΄κΈ° μΊκΈ€μ—μ„œ μ—΄κΈ°

5. μ‹œκ°ν™”

Comet λ‘œκΉ… 및 μ‹œκ°ν™” 🌟 μ‹ κ·œ

Comet κ°€ 이제 YOLOv5 와 μ™„μ „νžˆ ν†΅ν•©λ˜μ—ˆμŠ΅λ‹ˆλ‹€. μ‹€μ‹œκ°„μœΌλ‘œ λͺ¨λΈ λ©”νŠΈλ¦­μ„ 좔적 및 μ‹œκ°ν™”ν•˜κ³ , ν•˜μ΄νΌνŒŒλΌλ―Έν„°, 데이터 μ„ΈνŠΈ 및 λͺ¨λΈ 체크포인트λ₯Ό μ €μž₯ν•˜κ³ , Comet μ‚¬μš©μž 지정 νŒ¨λ„λ‘œ λͺ¨λΈ μ˜ˆμΈ‘μ„ μ‹œκ°ν™”ν•˜μ„Έμš”! Comet 을 μ‚¬μš©ν•˜λ©΄ μž‘μ—… λ‚΄μš©μ„ λ†“μΉ˜μ§€ μ•Šκ³  λͺ¨λ“  규λͺ¨μ˜ νŒ€μ—μ„œ κ²°κ³Όλ₯Ό μ‰½κ²Œ κ³΅μœ ν•˜κ³  ν˜‘μ—…ν•  수 μžˆμŠ΅λ‹ˆλ‹€!

μ‹œμž‘μ€ κ°„λ‹¨ν•©λ‹ˆλ‹€:

pip install comet_ml  # 1. install
export COMET_API_KEY=<Your API Key>  # 2. paste API key
python train.py --img 640 --epochs 3 --data coco128.yaml --weights yolov5s.pt  # 3. train

이 ν†΅ν•©μ—μ„œ μ§€μ›λ˜λŠ” λͺ¨λ“  Comet κΈ°λŠ₯에 λŒ€ν•΄ μžμ„Ένžˆ μ•Œμ•„λ³΄λ €λ©΄ λ‹€μŒμ„ ν™•μΈν•˜μ„Έμš”. Comet νŠœν† λ¦¬μ–Ό. μžμ„Έν•œ λ‚΄μš©μ€ Comet μ—μ„œ ν™•μΈν•˜μ„Έμš”. λ¬Έμ„œ. 콜랩 λ…ΈνŠΈλΆ( Comet )을 μ‚¬μš©ν•΄ λ³΄μ„Έμš”: μ½œλž©μ—μ„œ μ—΄κΈ°

YOLO UI

ClearML λ‘œκΉ… 및 μžλ™ν™” 🌟 μ‹ κ·œ

ClearML λŠ” YOLOv5 에 μ™„μ „νžˆ ν†΅ν•©λ˜μ–΄ μ‹€ν—˜μ„ μΆ”μ ν•˜κ³ , 데이터 μ„ΈνŠΈ 버전을 κ΄€λ¦¬ν•˜κ³ , μ›κ²©μœΌλ‘œ νŠΈλ ˆμ΄λ‹ 싀행을 μ‹€ν–‰ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€. ν™œμ„±ν™”ν•˜λ €λ©΄ ClearML:

  • pip install clearml
  • μ‹€ν–‰ clearml-init λ₯Ό ν΄λ¦­ν•˜μ—¬ ClearML μ„œλ²„μ— μ—°κ²°ν•©λ‹ˆλ‹€.

μ‹€μ‹œκ°„ μ—…λ°μ΄νŠΈ, λͺ¨λΈ μ—…λ‘œλ“œ, μ‹€ν—˜ 비ꡐ λ“± μ‹€ν—˜ κ΄€λ¦¬μžμ—μ„œ κΈ°λŒ€ν•  수 μžˆλŠ” λͺ¨λ“  ν›Œλ₯­ν•œ κΈ°λŠ₯을 μ‚¬μš©ν•  수 μžˆμ§€λ§Œ ClearML μ—μ„œλŠ” μ»€λ°‹λ˜μ§€ μ•Šμ€ λ³€κ²½ 사항과 μ„€μΉ˜λœ νŒ¨ν‚€μ§€λ„ 좔적할 수 μžˆμŠ΅λ‹ˆλ‹€. 덕뢄에 ClearML μž‘μ—…(μš°λ¦¬κ°€ μ‹€ν—˜μ΄λΌκ³  λΆ€λ₯΄λŠ”)도 λ‹€λ₯Έ μ»΄ν“¨ν„°μ—μ„œ μž¬ν˜„ν•  수 μžˆμŠ΅λ‹ˆλ‹€! 단 ν•œ μ€„λ§Œ μΆ”κ°€ν•˜λ©΄ λŒ€κΈ°μ—΄μ— YOLOv5 ꡐ윑 μž‘μ—…μ„ μ˜ˆμ•½ν•˜μ—¬ μ—¬λŸ¬ λͺ…μ˜ ClearML μ—μ΄μ „νŠΈ(μž‘μ—…μž)κ°€ μ‹€ν–‰ν•˜λ„λ‘ ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

ClearML 데이터λ₯Ό μ‚¬μš©ν•˜μ—¬ 데이터 집합을 λ²„μ „μ—…ν•œ λ‹€μŒ 고유 IDλ₯Ό μ‚¬μš©ν•˜μ—¬ YOLOv5 으둜 전달할 수 μžˆμŠ΅λ‹ˆλ‹€. μ΄λ ‡κ²Œ ν•˜λ©΄ λ²ˆκ±°λ‘œμ›€ 없이 데이터λ₯Ό μΆ”μ ν•˜λŠ” 데 도움이 λ©λ‹ˆλ‹€. μžμ„Έν•œ λ‚΄μš©μ€ ClearML νŠœν† λ¦¬μ–Όμ„ μ°Έμ‘°ν•˜μ„Έμš”!

ClearML μ‹€ν—˜ 관리 UI

둜컬 λ‘œκΉ…

ꡐ윑 κ²°κ³ΌλŠ” μžλ™μœΌλ‘œ λ‹€μŒκ³Ό 같이 κΈ°λ‘λ©λ‹ˆλ‹€. ν…μ„œλ³΄λ“œ 그리고 CSV 둜거λ₯Ό runs/trainλ₯Ό μ‚¬μš©ν•˜μ—¬ 각 μƒˆ κ΅μœ‘μ— λŒ€ν•΄ λ‹€μŒκ³Ό 같이 μƒˆ μ‹€ν—˜ 디렉터리λ₯Ό μƒμ„±ν•©λ‹ˆλ‹€. runs/train/exp2, runs/train/exp3λ“±

이 λ””λ ‰ν† λ¦¬μ—λŠ” ν›ˆλ ¨ 및 κ°’ 톡계, λͺ¨μžμ΄ν¬, λ ˆμ΄λΈ”, 예츑 및 증강 λͺ¨μžμ΄ν¬λŠ” λ¬Όλ‘  정밀도-νšŒμƒ(PR) 곑선과 ν˜Όλ™ 행렬을 ν¬ν•¨ν•œ λ©”νŠΈλ¦­κ³Ό μ°¨νŠΈκ°€ ν¬ν•¨λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

둜컬 λ‘œκΉ… κ²°κ³Ό

κ²°κ³Ό 파일 results.csv λŠ” 각 μ—ν¬ν¬λ§ˆλ‹€ μ—…λ°μ΄νŠΈλœ ν›„ λ‹€μŒκ³Ό 같이 ν”Œλ‘―λ©λ‹ˆλ‹€. results.png (μ•„λž˜)둜 μ΄λ™ν•©λ‹ˆλ‹€. λ˜ν•œ results.csv νŒŒμΌμ„ μˆ˜λ™μœΌλ‘œ μƒμ„±ν•©λ‹ˆλ‹€:

from utils.plots import plot_results

plot_results("path/to/results.csv")  # plot 'results.csv' as 'results.png'

results.png

λ‹€μŒ 단계

λͺ¨λΈμ΄ ν•™μŠ΅λ˜λ©΄ 졜고의 체크포인트λ₯Ό μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. best.pt 에:

  • μ‹€ν–‰ CLI λ˜λŠ” Python μƒˆ 이미지 및 λ™μ˜μƒμ— λŒ€ν•œ μΆ”λ‘ 
  • 트레인, λ°Έ 및 ν…ŒμŠ€νŠΈ λΆ„ν• μ˜ 정확도 검증
  • TensorFlow, Keras, ONNX, TFlite, TF.js, CoreML 및 TensorRT ν˜•μ‹μœΌλ‘œ 내보내기
  • ν•˜μ΄νΌνŒŒλΌλ―Έν„°λ₯Ό μ§„ν™”μ‹œμΌœ μ„±λŠ₯ ν–₯상
  • μ‹€μ œ 이미지λ₯Ό μƒ˜ν”Œλ§ν•˜κ³  데이터 μ„ΈνŠΈμ— μΆ”κ°€ν•˜μ—¬ λͺ¨λΈμ„ κ°œμ„ ν•˜μ„Έμš”.

지원 ν™˜κ²½

Ultralytics λŠ” λ°”λ‘œ μ‚¬μš©ν•  수 μžˆλŠ” λ‹€μ–‘ν•œ ν™˜κ²½μ„ μ œκ³΅ν•˜λ©°, 각 ν™˜κ²½μ—λŠ” λ‹€μŒκ³Ό 같은 ν•„μˆ˜ 쒅속성이 사전 μ„€μΉ˜λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. CUDA, CUDNN, Python, 및 PyTorch와 같은 ν•„μˆ˜ 쒅속 μš”μ†Œλ₯Ό μ„€μΉ˜ν•˜μ—¬ ν”„λ‘œμ νŠΈλ₯Ό μ‹œμž‘ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

ν”„λ‘œμ νŠΈ μƒνƒœ

YOLOv5 CI

이 λ°°μ§€λŠ” λͺ¨λ“  YOLOv5 GitHub Actions 지속적 톡합(CI) ν…ŒμŠ€νŠΈκ°€ μ„±κ³΅μ μœΌλ‘œ ν†΅κ³Όλ˜μ—ˆμŒμ„ λ‚˜νƒ€λƒ…λ‹ˆλ‹€. μ΄λŸ¬ν•œ CI ν…ŒμŠ€νŠΈλŠ” ꡐ윑, 검증, μΆ”λ‘ , 내보내기 및 벀치마크 λ“± λ‹€μ–‘ν•œ μ£Όμš” μΈ‘λ©΄μ—μ„œ YOLOv5 의 κΈ°λŠ₯κ³Ό μ„±λŠ₯을 μ—„κ²©ν•˜κ²Œ ν™•μΈν•©λ‹ˆλ‹€. 24μ‹œκ°„λ§ˆλ‹€ 그리고 μƒˆλ‘œμš΄ 컀밋이 μžˆμ„ λ•Œλ§ˆλ‹€ ν…ŒμŠ€νŠΈλ₯Ό μˆ˜ν–‰ν•˜μ—¬ macOS, Windows 및 Ubuntuμ—μ„œ μΌκ΄€λ˜κ³  μ•ˆμ •μ μΈ μž‘λ™μ„ 보μž₯ν•©λ‹ˆλ‹€.

자주 λ¬»λŠ” 질문

μ‚¬μš©μž 지정 데이터 μ§‘ν•©μ—μ„œ YOLOv5 을 μ–΄λ–»κ²Œ ν•™μŠ΅ν•˜λ‚˜μš”?

μ‚¬μš©μž 지정 데이터 집합에 λŒ€ν•œ YOLOv5 κ΅μœ‘μ—λŠ” μ—¬λŸ¬ 단계가 ν¬ν•¨λ©λ‹ˆλ‹€:

  1. 데이터 μ„ΈνŠΈ μ€€λΉ„ν•˜κΈ°: 이미지λ₯Ό μˆ˜μ§‘ν•˜κ³  라벨을 λΆ™μž…λ‹ˆλ‹€. λ‹€μŒκ³Ό 같은 도ꡬλ₯Ό μ‚¬μš©ν•˜μ—¬ Roboflow 와 같은 도ꡬλ₯Ό μ‚¬μš©ν•˜μ—¬ 데이터λ₯Ό μ •λ¦¬ν•˜κ³  YOLOv5 ν˜•μ‹μœΌλ‘œ λ‚΄λ³΄λƒ…λ‹ˆλ‹€.
  2. μ„€μ • ν™˜κ²½: YOLOv5 리포지토리λ₯Ό λ³΅μ œν•˜κ³  쒅속성을 μ„€μΉ˜ν•©λ‹ˆλ‹€:
    git clone https://github.com/ultralytics/yolov5
    cd yolov5
    pip install -r requirements.txt
    
  3. 데이터 μ„ΈνŠΈ ꡬ성 λ§Œλ“€κΈ°: μ“°κΈ° dataset.yaml νŒŒμΌμ— 트레인/λ°Έ κ²½λ‘œμ™€ 클래슀 이름을 μ •μ˜ν•©λ‹ˆλ‹€.
  4. λͺ¨λΈ ν›ˆλ ¨:
    python train.py --img 640 --epochs 3 --data dataset.yaml --weights yolov5s.pt
    

YOLOv5 데이터 집합에 주석을 달렀면 μ–΄λ–€ 도ꡬλ₯Ό μ‚¬μš©ν•  수 μžˆλ‚˜μš”?

이미지에 라벨을 뢙일 수 μžˆλŠ” 직관적인 μ›Ή 기반 도ꡬ인 Roboflow Annotateλ₯Ό μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 이 λ„κ΅¬λŠ” νŒ€ ν˜‘μ—…κ³Ό YOLOv5 ν˜•μ‹μœΌλ‘œ 내보내기λ₯Ό μ§€μ›ν•©λ‹ˆλ‹€. 이미지λ₯Ό μˆ˜μ§‘ν•œ ν›„μ—λŠ” Roboflow 을 μ‚¬μš©ν•΄ 주석을 효율적으둜 λ§Œλ“€κ³  κ΄€λ¦¬ν•˜μ„Έμš”. λ‹€λ₯Έ μ˜΅μ…˜μœΌλ‘œλŠ” 둜컬 주석을 μœ„ν•œ LabelImg 및 CVAT와 같은 도ꡬ가 μžˆμŠ΅λ‹ˆλ‹€.

YOLO λͺ¨λΈ κ΅μœ‘μ— Ultralytics HUBλ₯Ό μ‚¬μš©ν•΄μ•Ό ν•˜λŠ” μ΄μœ λŠ” λ¬΄μ—‡μΈκ°€μš”?

Ultralytics HUBλŠ” κ΄‘λ²”μœ„ν•œ μ½”λ”© 기술 없이도 YOLO λͺ¨λΈμ„ ꡐ윑, 배포 및 관리할 수 μžˆλŠ” μ—”λ“œνˆ¬μ—”λ“œ ν”Œλž«νΌμ„ μ œκ³΅ν•©λ‹ˆλ‹€. Ultralytics HUBλ₯Ό μ‚¬μš©ν•˜λ©΄ λ‹€μŒκ³Ό 같은 이점이 μžˆμŠ΅λ‹ˆλ‹€:

  • κ°„νŽΈν•œ λͺ¨λΈ ν›ˆλ ¨: 사전 κ΅¬μ„±λœ ν™˜κ²½μœΌλ‘œ ν›ˆλ ¨ ν”„λ‘œμ„ΈμŠ€λ₯Ό κ°„μ†Œν™”ν•©λ‹ˆλ‹€.
  • 데이터 관리: 데이터 μ„ΈνŠΈμ™€ 버전 관리λ₯Ό μ†μ‰½κ²Œ κ΄€λ¦¬ν•˜μ„Έμš”.
  • μ‹€μ‹œκ°„ λͺ¨λ‹ˆν„°λ§: λ‹€μŒκ³Ό 같은 도ꡬλ₯Ό ν†΅ν•©ν•˜μ—¬ Comet 와 같은 도ꡬλ₯Ό ν†΅ν•©ν•˜μ—¬ μ‹€μ‹œκ°„ λ©”νŠΈλ¦­ 좔적 및 μ‹œκ°ν™”λ₯Ό μ§€μ›ν•©λ‹ˆλ‹€.
  • ν˜‘μ—…: λ¦¬μ†ŒμŠ€λ₯Ό κ³΅μœ ν•˜κ³  μ‰½κ²Œ 관리할 수 μžˆλŠ” νŒ€ ν”„λ‘œμ νŠΈμ— μ΄μƒμ μž…λ‹ˆλ‹€.

주석이 달린 데이터λ₯Ό YOLOv5 ν˜•μ‹μœΌλ‘œ λ³€ν™˜ν•˜λ €λ©΄ μ–΄λ–»κ²Œ ν•˜λ‚˜μš”?

주석이 달린 데이터λ₯Ό Roboflow 을 μ‚¬μš©ν•˜μ—¬ YOLOv5 ν˜•μ‹μœΌλ‘œ λ³€ν™˜ν•˜λ €λ©΄:

  1. Roboflow μ›Œν¬μŠ€νŽ˜μ΄μŠ€μ— 데이터 집합을 μ—…λ‘œλ“œν•©λ‹ˆλ‹€.
  2. 아직 λ ˆμ΄λΈ”μ΄ μ§€μ •λ˜μ§€ μ•Šμ€ 경우 이미지에 λ ˆμ΄λΈ”μ„ μ§€μ •ν•©λ‹ˆλ‹€.
  3. 생성 및 내보내기 의 데이터 집합을 YOLOv5 Pytorch ν˜•μ‹μœΌλ‘œ λ³€κ²½ν•©λ‹ˆλ‹€. μ •μ‚¬κ°ν˜• μž…λ ₯ 크기(예: 640x640)둜 μžλ™ λ°©ν–₯ 및 크기 μ‘°μ •(늘이기)κ³Ό 같은 μ „μ²˜λ¦¬ 단계가 μ μš©λ˜μ—ˆλŠ”μ§€ ν™•μΈν•©λ‹ˆλ‹€.
  4. 데이터 μ„ΈνŠΈλ₯Ό λ‹€μš΄λ‘œλ“œν•˜μ—¬ YOLOv5 ꡐ윑 μŠ€ν¬λ¦½νŠΈμ— ν†΅ν•©ν•˜μ„Έμš”.

μƒμ—…μš© μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ YOLOv5 을 μ‚¬μš©ν•˜κΈ° μœ„ν•œ λΌμ΄μ„ μŠ€ μ˜΅μ…˜μ€ λ¬΄μ—‡μΈκ°€μš”?

Ultralytics λŠ” 두 가지 λΌμ΄μ„ μŠ€ μ˜΅μ…˜μ„ μ œκ³΅ν•©λ‹ˆλ‹€:

  • AGPL-3.0 λΌμ΄μ„ μŠ€: 비상업적 μš©λ„μ— μ ν•©ν•œ μ˜€ν”ˆ μ†ŒμŠ€ λΌμ΄μ„ μŠ€λ‘œ, 학생과 μ• ν˜Έκ°€μ—κ²Œ μ΄μƒμ μž…λ‹ˆλ‹€.
  • μ—”ν„°ν”„λΌμ΄μ¦ˆ λΌμ΄μ„ μŠ€: YOLOv5 을 μƒμ—…μš© μ œν’ˆ 및 μ„œλΉ„μŠ€μ— ν†΅ν•©ν•˜λ €λŠ” 기업을 μœ„ν•œ λ§žμΆ€ν˜• λΌμ΄μ„ μŠ€μž…λ‹ˆλ‹€. μžμ„Έν•œ λ‚΄μš©μ€ λΌμ΄μ„ μŠ€ νŽ˜μ΄μ§€λ₯Ό μ°Έμ‘°ν•˜μ„Έμš”.

μžμ„Έν•œ λ‚΄μš©μ€ Ultralytics λΌμ΄μ„ μŠ€ κ°€μ΄λ“œλ₯Ό μ°Έμ‘°ν•˜μ„Έμš”.



Created 2023-11-12, Updated 2024-07-10
Authors: glenn-jocher (17), Burhan-Q (1)

λŒ“κΈ€