λ μ΄ ν μ ν΅ν ν¨μ¨μ μΈ νμ΄νΌνλΌλ―Έν° νλ λ° YOLO11
νμ΄νΌνλΌλ―Έν° νλμ μ΅μ μ νμ΄νΌνλΌλ―Έν° μΈνΈλ₯Ό λ°κ²¬νμ¬ μ΅κ³ μ λͺ¨λΈ μ±λ₯μ λ¬μ±νλ λ° νμμ μ λλ€. μ¬κΈ°μλ λ€μν νμ΄νΌνλΌλ―Έν°λ‘ ν μ€νΈλ₯Ό μ€ννκ³ κ° ν μ€νΈμ μ±λ₯μ νκ°νλ μμ μ΄ ν¬ν¨λ©λλ€.
Ultralytics YOLO11 λ° λ μ΄ ν μΌλ‘ νλμ κ°μννμΈμ.
Ultralytics YOLO11 λ νμ΄νΌνλΌλ―Έν° νλμ μν λ μ΄ ν μ ν΅ν©νμ¬ YOLO11 λͺ¨λΈ νμ΄νΌνλΌλ―Έν°μ μ΅μ νλ₯Ό κ°μνν©λλ€. λ μ΄ ν μ μ¬μ©νλ©΄ κ³ κΈ κ²μ μ λ΅, λ³λ ¬ μ²λ¦¬, μ‘°κΈ° μ€μ§λ₯Ό νμ©νμ¬ νλ νλ‘μΈμ€λ₯Ό μ μνκ² μ§νν μ μμ΅λλ€.
λ μ΄ ν
λ μ΄ ν μ ν¨μ¨μ±κ³Ό μ μ°μ±μ μν΄ μ€κ³λ νμ΄νΌνλΌλ―Έν° νλ λΌμ΄λΈλ¬λ¦¬μ λλ€. λ€μν κ²μ μ λ΅, λ³λ ¬ μ²λ¦¬, μ‘°κΈ° μ€μ§ μ λ΅μ μ§μνλ©° Ultralytics YOLO11 μ λΉλ‘―ν μΈκΈ° μλ λ¨Έμ λ¬λ νλ μμν¬μ μννκ² ν΅ν©λ©λλ€.
λ€μκ³Όμ ν΅ν© Weights & Biases
YOLO11 μ μ νμ μΌλ‘ ν΅ν©νμ¬ Weights & Biases μ μ νμ μΌλ‘ ν΅ν©ν μλ μμ΅λλ€.
μ€μΉ
νμν ν¨ν€μ§λ₯Ό μ€μΉνλ €λ©΄ μ€νν©λλ€:
μ€μΉ
μ¬μ©λ²
μ¬μ©λ²
tune()
λ©μλ 맀κ°λ³μ
κ·Έλ¦¬κ³ tune()
λ©μλ( YOLO11 )λ λ μ΄ νλμ ν΅ν νμ΄νΌνλΌλ―Έν° νλμ μν μ¬μ©νκΈ° μ¬μ΄ μΈν°νμ΄μ€λ₯Ό μ 곡ν©λλ€. νλ νλ‘μΈμ€λ₯Ό μ¬μ©μ μ§μ ν μ μλ μ¬λ¬ μΈμλ₯Ό μ¬μ©ν μ μμ΅λλ€. μλλ κ° νλΌλ―Έν°μ λν μμΈν μ€λͺ
μ
λλ€:
맀κ°λ³μ | μ ν | μ€λͺ | κΈ°λ³Έκ° |
---|---|---|---|
data |
str |
νλλ₯Ό μ€νν λ°μ΄ν° μΈνΈ κ΅¬μ± νμΌ(YAML νμ)μ λλ€. μ΄ νμΌμλ νμ΅ λ° μ ν¨μ± κ²μ¬ λ°μ΄ν° κ²½λ‘μ κΈ°ν λ°μ΄ν° μΈνΈλ³ μ€μ μ΄ μ§μ λμ΄μΌ ν©λλ€. | |
space |
dict, optional |
λ μ΄ ν μ νμ΄νΌνλΌλ―Έν° κ²μ 곡κ°μ μ μνλ μ¬μ μ λλ€. κ° ν€λ νμ΄νΌνλΌλ―Έν° μ΄λ¦μ ν΄λΉνλ©°, κ°μ νλ μ€μ νμν κ°μ λ²μλ₯Ό μ§μ ν©λλ€. μ 곡νμ§ μμΌλ©΄ YOLO11 λ€μν νμ΄νΌνλΌλ―Έν°κ° ν¬ν¨λ κΈ°λ³Έ κ²μ 곡κ°μ μ¬μ©ν©λλ€. | |
grace_period |
int, optional |
λ μ΄ ν μμ ASHA μ€μΌμ€λ¬μ μν¬ν¬ λ¨μ μ μ κΈ°κ°μ λλ€. μ€μΌμ€λ¬λ μ΄ μν¬ν¬ μ μ΄μ μλ μ΄λ€ μνλ μ’ λ£νμ§ μμΌλ―λ‘ λͺ¨λΈμ΄ μ‘°κΈ° μ€λ¨μ κ²°μ νκΈ° μ μ μ΅μνμ νλ ¨μ ν μ μμ΅λλ€. | 10 |
gpu_per_trial |
int, optional |
νλ μ€ νκ°νλΉ ν λΉν GPU μμ λλ€. μ΄λ νΉν λ€μ€GPU νκ²½μμ GPU μ¬μ©λμ κ΄λ¦¬νλ λ° λμμ΄ λ©λλ€. μ 곡λμ§ μμΌλ©΄ νλλ μ¬μ© κ°λ₯ν λͺ¨λ GPUλ₯Ό μ¬μ©ν©λλ€. | μμ |
iterations |
int, optional |
νλ μ€μ μ€νν μ΅λ νΈλΌμ΄μΌ νμμ λλ€. μ΄ λ§€κ°λ³μλ ν μ€νΈλλ μ΄ νμ΄νΌνλΌλ―Έν° μ‘°ν© μλ₯Ό μ μ΄νμ¬ νλ νλ‘μΈμ€κ° 무νμ μ€νλμ§ μλλ‘ νλ λ° λμμ΄ λ©λλ€. | 10 |
**train_args |
dict, optional |
μ μ λ¬ν μΆκ° μΈμλ train() λ©μλλ₯Ό μ¬μ©ν μ μμ΅λλ€. μ΄λ¬ν μΈμλ νλ ¨ μν¬ν¬ μμ κ°μ μ€μ μ ν¬ν¨ν μ μμ΅λλ€, λ°°μΉ ν¬κΈ°λ° κΈ°ν κ΅μ‘λ³ κ΅¬μ±μ μ€μ ν μ μμ΅λλ€. |
{} |
μ΄λ¬ν νλΌλ―Έν°λ₯Ό μ¬μ©μ μ§μ νλ©΄ νΉμ μꡬ μ¬νκ³Ό μ¬μ© κ°λ₯ν μ»΄ν¨ν 리μμ€μ λ§κ² νμ΄νΌνλΌλ―Έν° μ΅μ ν νλ‘μΈμ€λ₯Ό λ―ΈμΈ μ‘°μ ν μ μμ΅λλ€.
κΈ°λ³Έ κ²μ κ³΅κ° μ€λͺ
λ€μ νμλ Ray Tuneμ μ¬μ©ν νμ΄νΌνλΌλ―Έν° νλμ μν κΈ°λ³Έ κ²μ κ³΅κ° λ§€κ°λ³μ( YOLO11 )κ° λμ μμ΅λλ€. κ° λ§€κ°λ³μμλ λ€μκ³Ό κ°μ΄ μ μλ νΉμ κ° λ²μκ° μμ΅λλ€. tune.uniform()
.
맀κ°λ³μ | κ° λ²μ | μ€λͺ |
---|---|---|
lr0 |
tune.uniform(1e-5, 1e-1) |
μ΄κΈ° νμ΅λ₯ |
lrf |
tune.uniform(0.01, 1.0) |
μ΅μ’ νμ΅λ₯ κ³μ |
momentum |
tune.uniform(0.6, 0.98) |
λͺ¨λ©ν |
weight_decay |
tune.uniform(0.0, 0.001) |
μ²΄μ€ κ°μ |
warmup_epochs |
tune.uniform(0.0, 5.0) |
μλ°μ μν¬ν¬ |
warmup_momentum |
tune.uniform(0.0, 0.95) |
μλ°μ λͺ¨λ©ν |
box |
tune.uniform(0.02, 0.2) |
λ°μ€ κ°λ λ¬΄κ² |
cls |
tune.uniform(0.2, 4.0) |
ν΄λμ€ κ°λ μ²΄μ€ |
hsv_h |
tune.uniform(0.0, 0.1) |
μμ‘° νλ λ²μ |
hsv_s |
tune.uniform(0.0, 0.9) |
μ±λ μ¦κ° λ²μ |
hsv_v |
tune.uniform(0.0, 0.9) |
κ°(λ°κΈ°) νλ λ²μ |
degrees |
tune.uniform(0.0, 45.0) |
νμ νλ λ²μ(λ) |
translate |
tune.uniform(0.0, 0.9) |
λ²μ μ¦κ° λ²μ |
scale |
tune.uniform(0.0, 0.9) |
νμ₯ λ²μ νλ |
shear |
tune.uniform(0.0, 10.0) |
μ λ¨ μ¦κ° λ²μ(λ) |
perspective |
tune.uniform(0.0, 0.001) |
μκ·Ό μ¦κ° λ²μ |
flipud |
tune.uniform(0.0, 1.0) |
μμ§ λ€μ§κΈ° νλ νλ₯ |
fliplr |
tune.uniform(0.0, 1.0) |
μν λ€μ§κΈ° νλ νλ₯ |
mosaic |
tune.uniform(0.0, 1.0) |
λͺ¨μμ΄ν¬ νλ νλ₯ |
mixup |
tune.uniform(0.0, 1.0) |
λ―Ήμ€μ μ¦κ° νλ₯ |
copy_paste |
tune.uniform(0.0, 1.0) |
볡μ¬-λΆμ¬λ£κΈ° νλ νλ₯ |
μ¬μ©μ μ§μ κ²μ κ³΅κ° μμ
μ΄ μμμλ λ μ΄ ν κ³Ό YOLO11 μ μ¬μ©νμ¬ νμ΄νΌνλΌλ―Έν° νλμ μν μ¬μ©μ μ§μ κ²μ 곡κ°μ μ¬μ©νλ λ°©λ²μ 보μ¬μ€λλ€. μ¬μ©μ μ§μ κ²μ 곡κ°μ μ 곡νλ©΄ κ΄μ¬ μλ νΉμ νμ΄νΌνλΌλ―Έν°μ νλ νλ‘μΈμ€λ₯Ό μ§μ€ν μ μμ΅λλ€.
μ¬μ©λ²
μμ μ½λ μ€λν«μμλ 미리 νμ΅λ κ°μ€μΉλ₯Ό μ¬μ©νμ¬ YOLO λͺ¨λΈμ μμ±ν©λλ€. κ·Έλ° λ€μ tune()
λ©μλμ "coco8.yaml"λ‘ λ°μ΄ν° μΈνΈ ꡬμ±μ μ§μ ν©λλ€. μ΄κΈ° νμ΅λ₯ μ λν μ¬μ©μ μ μ κ²μ 곡κ°μ μ 곡ν©λλ€. lr0
ν€ "lr0"κ³Ό κ° tune.uniform(1e-5, 1e-1)
. λ§μ§λ§μΌλ‘, μν¬ν¬ μμ κ°μ μΆκ° νλ ¨ μΈμλ₯Ό λ€μκ³Ό κ°μ΄ ν λ©μλμ μ§μ μ λ¬ν©λλ€. epochs=50
.
λ μ΄ ν κ²°κ³Ό μ²λ¦¬
λ μ΄ νλμΌλ‘ νμ΄νΌνλΌλ―Έν° νλ μ€νμ μ€νν νμλ μ»μ κ²°κ³Όμ λν΄ λ€μν λΆμμ μνν΄μΌ ν μ μμ΅λλ€. μ΄ κ°μ΄λμμλ μ΄λ¬ν κ²°κ³Όλ₯Ό μ²λ¦¬νκ³ λΆμνλ μΌλ°μ μΈ μν¬νλ‘λ₯Ό μλ΄ν©λλ€.
λλ ν 리μμ νλ μ€ν κ²°κ³Ό λ‘λ
νλ μ€νμ μ€νν ν tuner.fit()
λ₯Ό μ¬μ©νλ©΄ λλ ν 리μμ κ²°κ³Όλ₯Ό λ‘λν μ μμ΅λλ€. μ΄ κΈ°λ₯μ νΉν μ΄κΈ° κ΅μ‘ μ€ν¬λ¦½νΈκ° μ’
λ£λ ν λΆμμ μννλ κ²½μ°μ μ μ©ν©λλ€.
experiment_path = f"{storage_path}/{exp_name}"
print(f"Loading results from {experiment_path}...")
restored_tuner = tune.Tuner.restore(experiment_path, trainable=train_mnist)
result_grid = restored_tuner.get_results()
κΈ°λ³Έ μ€ν μμ€ λΆμ
νκ°νμ΄ μ΄λ»κ² μνλμλμ§μ λν κ°μλ₯Ό νμΈνμΈμ. νκ°ν μ€μ μ€λ₯κ° μμλμ§ λΉ λ₯΄κ² νμΈν μ μμ΅λλ€.
κΈ°λ³Έ νκ°ν μμ€ λΆμ
κ°λ³ νκ°ν νμ΄νΌνλΌλ―Έν° κ΅¬μ± λ° λ§μ§λ§μΌλ‘ λ³΄κ³ λ μ§νμ μ‘μΈμ€ν©λλ€.
for i, result in enumerate(result_grid):
print(f"Trial #{i}: Configuration: {result.config}, Last Reported Metrics: {result.metrics}")
νκ°νμ λν΄ λ³΄κ³ λ μ§νμ μ 체 κΈ°λ‘ νλ‘ν νκΈ°
κ° νκ°νμ λν΄ λ³΄κ³ λ μ§νμ κΈ°λ‘μ νλ‘ν νμ¬ μκ°μ΄ μ§λ¨μ λ°λΌ μ§νκ° μ΄λ»κ² λ³ννλμ§ νμΈν μ μμ΅λλ€.
import matplotlib.pyplot as plt
for i, result in enumerate(result_grid):
plt.plot(
result.metrics_dataframe["training_iteration"],
result.metrics_dataframe["mean_accuracy"],
label=f"Trial {i}",
)
plt.xlabel("Training Iterations")
plt.ylabel("Mean Accuracy")
plt.legend()
plt.show()
μμ½
μ΄ λ¬Έμμμλ Ultralytics μ μ¬μ©νμ¬ λ μ΄ ν μΌλ‘ μ€νν μ€νμ κ²°κ³Όλ₯Ό λΆμνλ μΌλ°μ μΈ μν¬νλ‘μ°λ₯Ό λ€λ£¨μμ΅λλ€. μ£Όμ λ¨κ³μλ λλ ν 리μμ μ€ν κ²°κ³Όλ₯Ό λ‘λνκ³ , κΈ°λ³Έ μ€ν μμ€ λ° μν μμ€ λΆμμ μννκ³ , λ©νΈλ¦μ νλ‘ν νλ κ²μ΄ ν¬ν¨λ©λλ€.
λ μ΄ν μ κ²°κ³Ό λΆμ λ¬Έμ νμ΄μ§μμ νμ΄νΌνλΌλ―Έν° νλ μ€νμ μ΅λν νμ©νκΈ° μν μμΈν λ΄μ©μ μ΄ν΄λ³΄μΈμ.
μμ£Ό 묻λ μ§λ¬Έ
λ μ΄ ν μ μ¬μ©νμ¬ YOLO11 λͺ¨λΈμ νμ΄νΌνλΌλ―Έν°λ₯Ό μ‘°μ νλ €λ©΄ μ΄λ»κ² ν΄μΌ νλμ?
λ μ΄ νλμ μ¬μ©νμ¬ Ultralytics YOLO11 λͺ¨λΈμ νμ΄νΌνλΌλ―Έν°λ₯Ό νλνλ €λ©΄ λ€μ λ¨κ³λ₯Ό λ°λ₯΄μΈμ:
-
νμν ν¨ν€μ§λ₯Ό μ€μΉν©λλ€:
-
YOLO11 λͺ¨λΈμ λ‘λνκ³ νλμ μμν©λλ€:
λ μ΄ ν μ κ³ κΈ κ²μ μ λ΅κ³Ό λ³λ ¬ μ²λ¦¬λ₯Ό νμ©νμ¬ λͺ¨λΈμ νμ΄νΌνλΌλ―Έν°λ₯Ό ν¨μ¨μ μΌλ‘ μ΅μ νν©λλ€. μμΈν λ΄μ©μ λ μ΄ ν μ€λͺ μλ₯Ό μ°Έμ‘°νμΈμ.
λ μ΄ ν μ μ¬μ©ν YOLO11 νλμ κΈ°λ³Έ νμ΄νΌνλΌλ―Έν°λ 무μμΈκ°μ?
Ultralytics YOLO11 λ λ μ΄ ν νλμ λ€μκ³Ό κ°μ κΈ°λ³Έ νμ΄νΌνλΌλ―Έν°λ₯Ό μ¬μ©ν©λλ€:
맀κ°λ³μ | κ° λ²μ | μ€λͺ |
---|---|---|
lr0 |
tune.uniform(1e-5, 1e-1) |
μ΄κΈ° νμ΅λ₯ |
lrf |
tune.uniform(0.01, 1.0) |
μ΅μ’ νμ΅λ₯ κ³μ |
momentum |
tune.uniform(0.6, 0.98) |
λͺ¨λ©ν |
weight_decay |
tune.uniform(0.0, 0.001) |
μ²΄μ€ κ°μ |
warmup_epochs |
tune.uniform(0.0, 5.0) |
μλ°μ μν¬ν¬ |
box |
tune.uniform(0.02, 0.2) |
λ°μ€ κ°λ λ¬΄κ² |
cls |
tune.uniform(0.2, 4.0) |
ν΄λμ€ κ°λ μ²΄μ€ |
hsv_h |
tune.uniform(0.0, 0.1) |
μμ‘° νλ λ²μ |
translate |
tune.uniform(0.0, 0.9) |
λ²μ μ¦κ° λ²μ |
μ΄λ¬ν νμ΄νΌνλΌλ―Έν°λ νΉμ μꡬμ¬νμ λ§κ² μ¬μ©μ μ§μ ν μ μμ΅λλ€. μ 체 λͺ©λ‘κ³Ό μμΈν λ΄μ©μ νμ΄νΌνλΌλ―Έν° νλ κ°μ΄λλ₯Ό μ°Έμ‘°νμΈμ.
YOLO11 λͺ¨λΈ νλμ Weights & Biases μ ν΅ν©νλ €λ©΄ μ΄λ»κ² ν΄μΌ νλμ?
Weights & Biases (W&B)λ₯Ό Ultralytics YOLO11 νλ νλ‘μΈμ€μ ν΅ν©νλ €λ©΄:
-
W&Bλ₯Ό μ€μΉν©λλ€:
-
νλ μ€ν¬λ¦½νΈλ₯Ό μμ ν©λλ€:
μ΄ μ€μ μ ν΅ν΄ νλ νλ‘μΈμ€λ₯Ό λͺ¨λν°λ§νκ³ , νμ΄νΌνλΌλ―Έν° ꡬμ±μ μΆμ νκ³ , W&Bμμ κ²°κ³Όλ₯Ό μκ°νν μ μμ΅λλ€.
νμ΄νΌνλΌλ―Έν° μ΅μ νλ₯Ό μν΄ λ μ΄ ν μ μ¬μ©ν΄μΌ νλ μ΄μ YOLO11?
λ μ΄ ν μ νμ΄νΌνλΌλ―Έν° μ΅μ νλ₯Ό μν λ€μν μ΄μ μ μ 곡ν©λλ€:
- κ³ κΈ κ²μ μ λ΅: ν¨μ¨μ μΈ λ§€κ°λ³μ κ²μμ μν΄ λ² μ΄μ§μ μ΅μ ν λ° HyperOptμ κ°μ μκ³ λ¦¬μ¦μ νμ©ν©λλ€.
- λ³λ ¬ μ²λ¦¬: μ¬λ¬ λ²μ μν μ€νμ λ³λ ¬λ‘ μ§μνμ¬ νλ νλ‘μΈμ€μ μλλ₯Ό ν¬κ² λμ λλ€.
- μ‘°κΈ° μ’ λ£: ASHAμ κ°μ μ λ΅μ μ¬μ©νμ¬ μ€μ μ΄ μ μ‘°ν μ€νμ μ‘°κΈ°μ μ’ λ£νμ¬ μ»΄ν¨ν 리μμ€λ₯Ό μ μ½ν©λλ€.
λ μ΄ ν μ Ultralytics YOLO11 κ³Ό μννκ² ν΅ν©λμ΄ νμ΄νΌνλΌλ―Έν°λ₯Ό ν¨κ³Όμ μΌλ‘ νλν μ μλ μ¬μ©νκΈ° μ¬μ΄ μΈν°νμ΄μ€λ₯Ό μ 곡ν©λλ€. μμνλ €λ©΄ λ μ΄ νλμ ν΅ν ν¨μ¨μ μΈ νμ΄νΌνλΌλ―Έν° νλ λ° YOLO11 κ°μ΄λλ₯Ό μ°Έμ‘°νμΈμ.
YOLO11 νμ΄νΌνλΌλ―Έν° νλμ μν μ¬μ©μ μ§μ κ²μ 곡κ°μ μ μνλ €λ©΄ μ΄λ»κ² ν΄μΌ νλμ?
λ μ΄ νλμΌλ‘ YOLO11 νμ΄νΌνλΌλ―Έν° νλμ μν μ¬μ©μ μ§μ κ²μ 곡κ°μ μ μνλ €λ©΄:
from ray import tune
from ultralytics import YOLO
model = YOLO("yolo11n.pt")
search_space = {"lr0": tune.uniform(1e-5, 1e-1), "momentum": tune.uniform(0.6, 0.98)}
result_grid = model.tune(data="coco8.yaml", space=search_space, use_ray=True)
μ΄λ κ² νλ©΄ νλ νλ‘μΈμ€ μ€μ νμν μ΄κΈ° νμ΅ μλ λ° μ΄λλκ³Ό κ°μ νμ΄νΌνλΌλ―Έν°μ λ²μλ₯Ό μ¬μ©μ μ§μ ν μ μμ΅λλ€. κ³ κΈ κ΅¬μ±μ λν΄μλ μ¬μ©μ μ§μ κ²μ κ³΅κ° μμ μΉμ μ μ°Έμ‘°νμΈμ.