μΈμ€ν΄μ€ μΈλΆν λ°μ΄ν° μΈνΈ κ°μ
μ§μλλ λ°μ΄ν° μΈνΈ νμ
Ultralytics YOLO νμ
YOLO μΈλΆν λͺ¨λΈ νμ΅μ μ¬μ©λλ λ°μ΄ν° μΈνΈ λ μ΄λΈ νμμ λ€μκ³Ό κ°μ΅λλ€:
- μ΄λ―Έμ§λΉ νλμ ν μ€νΈ νμΌ: λ°μ΄ν° μΈνΈμ κ° μ΄λ―Έμ§μλ μ΄λ―Έμ§ νμΌκ³Ό μ΄λ¦μ΄ κ°κ³ νμ₯μκ° ".txt"μΈ ν΄λΉ ν μ€νΈ νμΌμ΄ μμ΅λλ€.
- κ°μ²΄λΉ νλμ ν: ν μ€νΈ νμΌμ κ° νμ μ΄λ―Έμ§μ κ°μ²΄ μΈμ€ν΄μ€ νλμ ν΄λΉν©λλ€.
- νλ³ κ°μ²΄ μ 보: κ° νμλ κ°μ²΄ μΈμ€ν΄μ€μ λν λ€μ μ λ³΄κ° ν¬ν¨λ©λλ€:
- κ°μ²΄ ν΄λμ€ μΈλ±μ€: κ°μ²΄μ ν΄λμ€λ₯Ό λνλ΄λ μ μ(μ: μ¬λμ κ²½μ° 0, μλμ°¨μ κ²½μ° 1 λ±)μ λλ€.
- κ°μ²΄ κ²½κ³ μ’νμ λλ€: λ§μ€ν¬ μμ μ£Όλ³μ κ²½κ³ μ’νλ‘, 0μμ 1 μ¬μ΄λ‘ μ κ·νλ©λλ€.
μΈλΆν λ°μ΄ν° μΈνΈ νμΌμμ λ¨μΌ νμ νμμ λ€μκ³Ό κ°μ΅λλ€:
μ΄ νμμ
λλ€, <class-index>
λ κ°μ²΄μ λν ν΄λμ€μ μΈλ±μ€μ
λλ€. <x1> <y1> <x2> <y2> ... <xn> <yn>
λ κ°μ²΄μ μΈκ·Έλ¨Όν
μ΄μ
λ§μ€ν¬μ κ²½κ³ μ’νμ
λλ€. μ’νλ 곡백μΌλ‘ ꡬλΆλ©λλ€.
λ€μμ 3μ μΈκ·Έλ¨ΌνΈμ 5μ μΈκ·Έλ¨ΌνΈλ‘ ꡬμ±λ λ κ°μ κ°μ²΄κ° μλ λ¨μΌ μ΄λ―Έμ§μ λν YOLO λ°μ΄ν° μΈνΈ νμμ μμ λλ€.
0 0.681 0.485 0.670 0.487 0.676 0.487
1 0.504 0.000 0.501 0.004 0.498 0.004 0.493 0.010 0.492 0.0104
ν
- κ° νμ κΈΈμ΄κ° κ°μ νμλ μμ΅λλ€.
- κ° μΈλΆν λ μ΄λΈμλ μ΅μ XY ν¬μΈνΈ 3μ :
<class-index> <x1> <y1> <x2> <y2> <x3> <y3>
λ°μ΄ν° μΈνΈ 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-seg # 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
κ·Έλ¦¬κ³ train
κ·Έλ¦¬κ³ val
νλλ κ°κ° νΈλ μ΄λ μ΄λ―Έμ§μ μ ν¨μ± κ²μ¬ μ΄λ―Έμ§κ° ν¬ν¨λ λλ ν°λ¦¬μ κ²½λ‘λ₯Ό μ§μ ν©λλ€.
names
λ ν΄λμ€ μ΄λ¦μ μ¬μ μ
λλ€. μ΄λ¦μ μμλ YOLO λ°μ΄ν° μΈνΈ νμΌμ κ°μ²΄ ν΄λμ€ μΈλ±μ€ μμμ μΌμΉν΄μΌ ν©λλ€.
μ¬μ©λ²
μ
μ§μλλ λ°μ΄ν° μΈνΈ
μ§μλλ λ°μ΄ν° μΈνΈ
- COCO: 물체 κ°μ§, μΈλΆν λ° μΊ‘μ μ μν ν¬κ΄μ μΈ λ°μ΄ν° μΈνΈλ‘, λ€μν μΉ΄ν κ³ λ¦¬μ κ±Έμ³ 200λ§ κ° μ΄μμ λΌλ²¨μ΄ μ§μ λ μ΄λ―Έμ§κ° ν¬ν¨λμ΄ μμ΅λλ€.
- COCO8-seg: μΈλΆν λͺ¨λΈ νμ΅μ λΉ λ₯Έ ν
μ€νΈλ₯Ό μν΄ μ€κ³λ COCOμ μ»΄ν©νΈν 8κ°μ μ΄λ―Έμ§ νμ μ§ν©μΌλ‘, CI κ²μ¬ λ° μν¬νλ‘ κ²μ¦μ μ΄μμ μ
λλ€.
ultralytics
리ν¬μ§ν 리μ μ μ₯ν©λλ€. - COCO128-seg: μΈλΆν μ£Όμμ΄ μλ 128κ°μ COCO μ΄λ―Έμ§ νμ μ§ν©μ ν¬ν¨νλ μΈμ€ν΄μ€ μΈλΆν μμ μ μν λ μμ λ°μ΄ν° μΈνΈμ λλ€.
- Carparts-seg: μλμ°¨ λΆνμ μΈλΆνμ μ΄μ μ λ§μΆ μ λ¬Έ λ°μ΄ν° μΈνΈλ‘, μλμ°¨ μ ν리μΌμ΄μ μ μ΄μμ μ λλ€. μ¬κΈ°μλ κ°λ³ μλμ°¨ λΆνμ λν μμΈν μ£Όμκ³Ό ν¨κ» λ€μν μ°¨λμ΄ ν¬ν¨λμ΄ μμ΅λλ€.
- κ· μ΄ μΈκ·Έλ¨ΌνΈ: λ€μν νλ©΄μ κ· μ΄μ μΈλΆννκΈ° μν΄ λ§μΆ€νλ λ°μ΄ν° μΈνΈμ λλ€. μΈνλΌ μ μ§λ³΄μ λ° νμ§ κ΄λ¦¬μ νμμ μΈ μ΄ λ°μ΄ν°λ ꡬ쑰μ μ½μ μ μλ³νκΈ° μν λͺ¨λΈ νμ΅μ νμν μμΈν μ΄λ―Έμ§λ₯Ό μ 곡ν©λλ€.
- ν¨ν€μ§ μΈκ·Έλ¨ΌνΈ: λ€μν μ νμ ν¬μ₯μ¬μ λͺ¨μμ μΈλΆννκΈ° μν λ°μ΄ν° μΈνΈμ λλ€. λ¬Όλ₯ λ° μ°½κ³ μλνμ νΉν μ μ©νλ©°, ν¨ν€μ§ μ·¨κΈ λ° λΆλ₯λ₯Ό μν μμ€ν κ°λ°μ λμμ΄ λ©λλ€.
λλ§μ λ°μ΄ν° μ§ν© μΆκ°νκΈ°
μ체 λ°μ΄ν° μΈνΈκ° μκ³ μ΄λ₯Ό Ultralytics YOLO νμμ μΈλΆν λͺ¨λΈ νλ ¨μ μ¬μ©νλ €λ κ²½μ°, μμ "Ultralytics YOLO νμ"μ μ§μ λ νμμ λ°λ₯΄λμ§ νμΈνμΈμ. μ΄λ Έν μ΄μ μ νμν νμμΌλ‘ λ³ννκ³ YAML κ΅¬μ± νμΌμμ κ²½λ‘, ν΄λμ€ μ λ° ν΄λμ€ μ΄λ¦μ μ§μ ν©λλ€.
λΌλ²¨ νμ ν¬νΈ λλ λ³ν
COCO λ°μ΄ν° μΈνΈ νμμ YOLO νμμΌλ‘ λ³ν
λ€μ μ½λ μ€λν«μ μ¬μ©νμ¬ λ리 μ¬μ©λλ COCO λ°μ΄ν° μΈνΈ νμμμ YOLO νμμΌλ‘ λΌλ²¨μ μ½κ² λ³νν μ μμ΅λλ€:
μ
μ΄ λ³ν λꡬλ COCO λ°μ΄ν° μΈνΈ λλ COCO νμμ λ°μ΄ν° μΈνΈλ₯Ό Ultralytics YOLO νμμΌλ‘ λ³ννλ λ° μ¬μ©ν μ μμ΅λλ€.
μ¬μ©νλ €λ λ°μ΄ν° μΈνΈκ° λͺ¨λΈκ³Ό νΈνλλμ§, νμν νμ κ·μΉμ λ°λ₯΄κ³ μλμ§ λ€μ ν λ² νμΈνλ κ²μ μμ§ λ§μΈμ. μ¬λ°λ₯Έ νμμ λ°μ΄ν° μΈνΈλ μ±κ³΅μ μΈ κ°μ²΄ κ°μ§ λͺ¨λΈμ νλ ¨νλ λ° λ§€μ° μ€μν©λλ€.
μλ μ£Όμ
μλ μ£Όμμ μ¬μ νμ΅λ κ°μ§ λͺ¨λΈμ μ¬μ©ν΄ μΈλΆν λ°μ΄ν° μΈνΈλ₯Ό μμ±ν μ μλ νμ κΈ°λ₯μ λλ€. μλμΌλ‘ λΌλ²¨μ λΆμΌ νμ μμ΄ μλ§μ μ΄λ―Έμ§μ λΉ λ₯΄κ³ μ ννκ² μ£Όμμ λ¬ μ μμ΄ μκ°κ³Ό λ Έλ ₯μ μ μ½ν μ μμ΅λλ€.
νμ§ λͺ¨λΈμ μ¬μ©νμ¬ μΈλΆν λ°μ΄ν° μΈνΈ μμ±νκΈ°
Ultralytics νλ μμν¬λ₯Ό μ¬μ©νμ¬ λ°μ΄ν° μ§ν©μ μλ μ£Όμμ λ¬λ €λ©΄, λ€μμ μ¬μ©ν μ μμ΅λλ€. auto_annotate
ν¨μλ₯Ό νΈμΆν©λλ€:
μ
μΈμ | μ ν | μ€λͺ | κΈ°λ³Έκ° |
---|---|---|---|
data |
str |
μ£Όμμ λ¬ μ΄λ―Έμ§κ° ν¬ν¨λ ν΄λμ κ²½λ‘μ λλ€. | None |
det_model |
str, optional |
μ¬μ νμ΅λ YOLO νμ§ λͺ¨λΈ. κΈ°λ³Έκ°μ 'yolo11x.pt' . |
'yolo11x.pt' |
sam_model |
str, optional |
μ¬μ νμ΅λ SAM μΈλΆν λͺ¨λΈ. κΈ°λ³Έκ°μ 'sam_b.pt' . |
'sam_b.pt' |
device |
str, optional |
λͺ¨λΈμ μ€νν μ₯μΉμ λλ€. κΈ°λ³Έκ°μ λΉ λ¬Έμμ΄(CPU λλ GPU, μ¬μ© κ°λ₯ν κ²½μ°)μ λλ€. | '' |
output_dir |
str or None, optional |
λλ ν°λ¦¬μ μ£Όμμ΄ λ¬λ¦° κ²°κ³Όλ₯Ό μ μ₯ν©λλ€. κΈ°λ³Έκ°μ 'labels' ν΄λμ κ°μ λλ ν 리μ 'data' . |
None |
κ·Έλ¦¬κ³ auto_annotate
ν¨μλ μ΄λ―Έμ§μ κ²½λ‘μ ν¨κ» μ¬μ νμ΅λ νμ§ λ° SAM μΈλΆν λͺ¨λΈ, λͺ¨λΈμ μ€νν μ₯μΉ, μ£Όμμ΄ λ¬λ¦° κ²°κ³Όλ₯Ό μ μ₯ν μΆλ ₯ λλ ν°λ¦¬λ₯Ό μ§μ ν©λλ€.
μλ μ£Όμμ μ¬μ νμ΅λ λͺ¨λΈμ μ±λ₯μ νμ©νμ¬ κ³ νμ§μ μΈλΆν λ°μ΄ν° μΈνΈλ₯Ό λ§λλ λ° νμν μκ°κ³Ό λ Έλ ₯μ ν¬κ² μ€μΌ μ μμ΅λλ€. μ΄ κΈ°λ₯μ λκ·λͺ¨ μ΄λ―Έμ§ 컬λ μ μ λ€λ£¨λ μ°κ΅¬μμ κ°λ°μκ° μλ μ£Όμ μμ λμ λͺ¨λΈ κ°λ°κ³Ό νκ°μ μ§μ€ν μ μκ² ν΄μ£Όλ―λ‘ νΉν μ μ©ν©λλ€.
μμ£Ό 묻λ μ§λ¬Έ
μΈμ€ν΄μ€ μΈλΆνλ₯Ό μν΄ Ultralytics YOLO μ΄λ€ λ°μ΄ν° μΈνΈ νμμ μ§μνλμ?
Ultralytics YOLO λ μΈμ€ν΄μ€ λΆν μ μν΄ μ¬λ¬ κ°μ§ λ°μ΄ν° μΈνΈ νμμ μ§μνλ©°, κΈ°λ³Έ νμμ μ체μ μΈ Ultralytics YOLO νμμ λλ€. λ°μ΄ν° μΈνΈμ κ° μ΄λ―Έμ§μλ ν΄λμ€ μΈλ±μ€μ μ κ·νλ κ²½κ³ μ’νλ₯Ό λμ΄νλ μ¬λ¬ ν(κ°μ²΄λΉ ν ν)μΌλ‘ μΈκ·Έλ¨ΌνΈλ κ°μ²΄ μ λ³΄κ° ν¬ν¨λ ν΄λΉ ν μ€νΈ νμΌμ΄ νμν©λλ€. YOLO λ°μ΄ν° μΈνΈ νμμ λν μμΈν μ§μΉ¨μ μΈμ€ν΄μ€ μΈλΆν λ°μ΄ν° μΈνΈ κ°μλ₯Ό μ°Έμ‘°νμΈμ.
COCO λ°μ΄ν° μΈνΈ μ£Όμμ YOLO νμμΌλ‘ λ³ννλ €λ©΄ μ΄λ»κ² ν΄μΌ νλμ?
COCO νμ μ£Όμμ YOLO νμμΌλ‘ λ³ννλ λ°©λ²μ Ultralytics λꡬλ₯Ό μ¬μ©νλ©΄ κ°λ¨ν©λλ€. λλ convert_coco
ν¨μμμ ultralytics.data.converter
λͺ¨λ:
from ultralytics.data.converter import convert_coco
convert_coco(labels_dir="path/to/coco/annotations/", use_segments=True)
μ΄ μ€ν¬λ¦½νΈλ COCO λ°μ΄ν° μΈνΈ μ£Όμμ νμ YOLO νμμΌλ‘ λ³ννμ¬ YOLO λͺ¨λΈμ νμ΅μν€λ λ° μ ν©ν©λλ€. μμΈν λ΄μ©μ λ μ΄λΈ νμ κ°μ Έμ€κΈ° λλ λ³ννκΈ°λ₯Ό μ°Έμ‘°νμΈμ.
Ultralytics YOLO λͺ¨λΈμ κ΅μ‘νκΈ° μν΄ YAML νμΌμ μ΄λ»κ² μ€λΉνλμ?
Ultralytics μ μ¬μ©νμ¬ YOLO λͺ¨λΈμ νμ΅νκΈ° μν YAML νμΌμ μ€λΉνλ €λ©΄ λ°μ΄ν° μΈνΈ κ²½λ‘μ ν΄λμ€ μ΄λ¦μ μ μν΄μΌ ν©λλ€. λ€μμ YAML κ΅¬μ± μμμ λλ€:
path: ../datasets/coco8-seg # dataset root dir
train: images/train # train images (relative to 'path')
val: images/val # val images (relative to 'path')
names:
0: person
1: bicycle
2: car
# ...
λ°μ΄ν° μ§ν©μ λ°λΌ κ²½λ‘μ ν΄λμ€ μ΄λ¦μ μ λ°μ΄νΈν΄μΌ ν©λλ€. μμΈν λ΄μ©μ λ°μ΄ν° μ§ν© YAML νμ μΉμ μ μ°Έμ‘°νμΈμ.
Ultralytics YOLO μ μλ μ£Όμ κΈ°λ₯μ 무μμΈκ°μ?
Ultralytics YOLO μ μλ μ£Όμμ μ¬μ©νλ©΄ μ¬μ νμ΅λ νμ§ λͺ¨λΈμ μ¬μ©νμ¬ λ°μ΄ν° μΈνΈμ λν μΈλΆν μ£Όμμ μμ±ν μ μμ΅λλ€. μ΄λ κ² νλ©΄ μλ λΌλ²¨λ§μ νμμ±μ΄ ν¬κ² μ€μ΄λλλ€. λ°μ΄ν° μΈνΈμ auto_annotate
ν¨μλ λ€μκ³Ό κ°μ΅λλ€:
from ultralytics.data.annotator import auto_annotate
auto_annotate(data="path/to/images", det_model="yolo11x.pt", sam_model="sam_b.pt")
μ΄ κΈ°λ₯μ μ£Όμ νλ‘μΈμ€λ₯Ό μλννμ¬ λ λΉ λ₯΄κ³ ν¨μ¨μ μΌλ‘ λ§λ€μ΄ μ€λλ€. μμΈν λ΄μ©μ μλ μ£Όμ μΉμ μ μ°Έμ‘°νμΈμ.