Ultralytics YOLO 하이퍼파라미터 튜닝 가이드
소개
하이퍼파라미터 튜닝은 단순한 일회성 설정이 아니라 정확도, 정밀도, 회상률 등 머신러닝 모델의 성능 지표를 최적화하기 위한 반복적인 프로세스입니다. Ultralytics YOLO 의 맥락에서 이러한 하이퍼파라미터는 학습 속도부터 사용된 레이어 수나 활성화 함수의 유형과 같은 아키텍처 세부 사항까지 다양할 수 있습니다.
Watch: 모델 성능 향상을 위해 하이퍼파라미터를 조정하는 방법 🚀
하이퍼파라미터란 무엇인가요?
하이퍼파라미터는 알고리즘에 대한 높은 수준의 구조적 설정입니다. 하이퍼파라미터는 학습 단계 전에 설정되며 학습 단계 동안 일정하게 유지됩니다. 다음은 Ultralytics YOLO 에서 일반적으로 조정되는 몇 가지 하이퍼파라미터입니다:
- 학습 속도
lr0
: 에서 최소값을 향해 이동하면서 각 반복에서 단계 크기를 결정합니다. 손실 기능. - 배치 크기
batch
: 포워드 패스에서 동시에 처리되는 이미지 수입니다. - 에포크 수
epochs
: 한 에포크는 모든 훈련 예제의 완전한 전진 및 후진 패스를 의미합니다. - 아키텍처 세부 정보: 채널 수, 레이어 수, 활성화 기능의 유형 등.
YOLO11 에서 사용되는 증강 하이퍼파라미터의 전체 목록은 설정 페이지를 참조하세요.
유전적 진화와 돌연변이
Ultralytics YOLO 유전 알고리즘을 사용하여 하이퍼파라미터를 최적화합니다. 유전 알고리즘은 자연 선택과 유전학의 메커니즘에서 영감을 얻었습니다.
- 돌연변이: Ultralytics YOLO 의 맥락에서 돌연변이는 기존 하이퍼파라미터에 작은 무작위 변경을 적용하여 평가할 새로운 후보를 생성함으로써 하이퍼파라미터 공간을 로컬로 검색하는 데 도움이 됩니다.
- 크로스오버: 크로스오버는 널리 사용되는 유전 알고리즘 기법이지만, 현재 하이퍼파라미터 튜닝을 위해 Ultralytics YOLO 에서 사용되지는 않습니다. 주로 새로운 하이퍼파라미터 세트를 생성하기 위한 돌연변이에 초점을 맞추고 있습니다.
하이퍼파라미터 튜닝 준비
튜닝 프로세스를 시작하기 전에 다음을 수행하는 것이 중요합니다:
- 메트릭을 식별합니다: 모델의 성능을 평가하는 데 사용할 지표를 결정합니다. AP50, F1 점수 등이 될 수 있습니다.
- 튜닝 예산을 설정합니다: 할당할 컴퓨팅 리소스의 양을 정의합니다. 하이퍼파라미터 튜닝은 계산 집약적일 수 있습니다.
관련 단계
하이퍼파라미터 초기화
합리적인 초기 하이퍼파라미터 세트로 시작하세요. Ultralytics YOLO 에서 설정한 기본 하이퍼파라미터를 사용하거나 도메인 지식 또는 이전 실험을 기반으로 설정할 수 있습니다.
하이퍼파라미터 뮤테이션
사용 _mutate
메서드를 사용하여 기존 집합을 기반으로 새로운 하이퍼파라미터 집합을 생성할 수 있습니다. 하이퍼파라미터의 튜너 클래스 이 프로세스를 자동으로 처리합니다.
기차 모델
훈련은 변경된 하이퍼파라미터 세트를 사용하여 수행됩니다. 그런 다음 선택한 메트릭을 사용하여 학습 성과를 평가합니다.
모델 평가
AP50, F1 점수 또는 사용자 지정 메트릭과 같은 메트릭을 사용하여 모델의 성능을 평가합니다. 평가 프로세스는 현재 하이퍼파라미터가 이전 하이퍼파라미터보다 더 나은지 판단하는 데 도움이 됩니다.
로그 결과
나중에 참조할 수 있도록 성능 메트릭과 해당 하이퍼파라미터를 모두 기록하는 것이 중요합니다. Ultralytics YOLO 이러한 결과를 CSV 형식으로 자동으로 저장합니다.
반복
이 프로세스는 설정된 반복 횟수에 도달하거나 성능 지표가 만족스러워질 때까지 반복됩니다. 각 반복은 이전 실행에서 얻은 지식을 기반으로 합니다.
기본 검색 공간 설명
다음 표에는 하이퍼파라미터 튜닝을 위한 기본 검색 공간 파라미터가 나와 있습니다( YOLO11). 각 매개변수에는 튜플로 정의된 특정 값 범위가 있습니다. (min, max)
.
매개변수 | 유형 | 값 범위 | 설명 |
---|---|---|---|
lr0 |
float |
(1e-5, 1e-1) |
훈련 시작 시 초기 학습 속도입니다. 값이 낮을수록 학습은 더 안정적이지만 수렴은 느립니다. |
lrf |
float |
(0.01, 1.0) |
최종 학습률 계수를 lr0의 일부분으로 표시합니다. 훈련 중 학습률이 얼마나 감소하는지 제어합니다. |
momentum |
float |
(0.6, 0.98) |
SGD 모멘텀 계수입니다. 값이 클수록 일관된 기울기 방향을 유지하고 수렴 속도를 높일 수 있습니다. |
weight_decay |
float |
(0.0, 0.001) |
과적합을 방지하기 위한 L2 정규화 계수입니다. 값이 클수록 더 강력한 정규화 적용 |
warmup_epochs |
float |
(0.0, 5.0) |
선형 학습 속도 워밍업을 위한 에포크 수입니다. 초기 훈련 불안정성 방지 |
warmup_momentum |
float |
(0.0, 0.95) |
워밍업 단계의 초기 운동량입니다. 최종 운동량 값까지 서서히 증가합니다. |
box |
float |
(0.02, 0.2) |
총 손실 함수에서 박스 손실 가중치 바운딩. 박스 회귀와 분류의 균형 맞추기 |
cls |
float |
(0.2, 4.0) |
총 손실 함수에서 분류 손실 가중치입니다. 값이 높을수록 정확한 클래스 예측을 강조합니다. |
hsv_h |
float |
(0.0, 0.1) |
HSV 색 공간에서 임의의 색조 증강 범위. 다양한 색상에 대한 모델 일반화 지원 |
hsv_s |
float |
(0.0, 0.9) |
HSV 공간에서 임의의 채도 증강 범위. 다양한 조명 조건 시뮬레이션 |
hsv_v |
float |
(0.0, 0.9) |
임의의 값(밝기) 확대 범위. 모델이 다양한 노출 수준을 처리하는 데 도움이 됩니다. |
degrees |
float |
(0.0, 45.0) |
최대 회전 확대(도 단위). 모델이 객체 방향에 불변하도록 지원 |
translate |
float |
(0.0, 0.9) |
이미지 크기의 일부분으로 최대 번역 확대. 물체 위치에 대한 견고성 향상 |
scale |
float |
(0.0, 0.9) |
무작위 스케일링 확대 범위. 모델이 다양한 크기의 물체를 감지하도록 지원 |
shear |
float |
(0.0, 10.0) |
최대 전단 확대 정도(도). 훈련 이미지에 원근법과 같은 왜곡을 추가합니다. |
perspective |
float |
(0.0, 0.001) |
임의의 원근 증강 범위. 다양한 시야각 시뮬레이션 |
flipud |
float |
(0.0, 1.0) |
훈련 중 수직 이미지 뒤집기 확률. 오버헤드/항공 이미지에 유용합니다. |
fliplr |
float |
(0.0, 1.0) |
수평 이미지 뒤집기 확률. 모델이 오브젝트 방향에 불변하도록 지원 |
mosaic |
float |
(0.0, 1.0) |
4개의 이미지를 결합하는 모자이크 증강을 사용할 확률입니다. 작은 물체 감지에 특히 유용합니다. |
mixup |
float |
(0.0, 1.0) |
두 이미지를 혼합하는 믹스업 증강을 사용할 확률입니다. 모델 견고성 향상 가능 |
copy_paste |
float |
(0.0, 1.0) |
복사-붙여넣기 증강을 사용할 확률. 인스턴스 세분화 성능 개선에 도움 |
사용자 지정 검색 공간 예제
검색 공간을 정의하고 다음과 같은 방법으로 model.tune()
메서드를 활용하려면 Tuner
클래스를 사용하여 30개 에포크에 대한 COCO8의 YOLO11n 하이퍼파라미터 튜닝을 위해 AdamW 옵티마이저를 사용하고 최종 에포크 이외의 플로팅, 체크포인트 및 유효성 검사를 생략하여 더 빠르게 튜닝할 수 있습니다.
예
from ultralytics import YOLO
# Initialize the YOLO model
model = YOLO("yolo11n.pt")
# Define search space
search_space = {
"lr0": (1e-5, 1e-1),
"degrees": (0.0, 45.0),
}
# Tune hyperparameters on COCO8 for 30 epochs
model.tune(
data="coco8.yaml",
epochs=30,
iterations=300,
optimizer="AdamW",
space=search_space,
plots=False,
save=False,
val=False,
)
결과
하이퍼파라미터 튜닝 프로세스를 성공적으로 완료하면 튜닝 결과를 캡슐화한 여러 파일과 디렉터리를 얻게 됩니다. 다음은 각각에 대한 설명입니다:
파일 구조
결과의 디렉토리 구조는 다음과 같습니다. 다음과 같은 교육 디렉터리 train1/
에는 개별 튜닝 반복, 즉 하나의 하이퍼파라미터 세트로 학습된 하나의 모델이 포함되어 있습니다. 그리고 tune/
디렉터리에는 모든 개별 모델 트레이닝의 튜닝 결과가 포함되어 있습니다:
runs/
└── detect/
├── train1/
├── train2/
├── ...
└── tune/
├── best_hyperparameters.yaml
├── best_fitness.png
├── tune_results.csv
├── tune_scatter_plots.png
└── weights/
├── last.pt
└── best.pt
파일 설명
best_hyperparameters.yaml
이 YAML 파일에는 튜닝 과정에서 발견된 가장 성능이 좋은 하이퍼파라미터가 포함되어 있습니다. 이 파일을 사용하여 최적화된 설정으로 향후 트레이닝을 초기화할 수 있습니다.
- 형식: YAML
- 사용법: 하이퍼파라미터 결과
-
예시:
# 558/900 iterations complete ✅ (45536.81s) # Results saved to /usr/src/ultralytics/runs/detect/tune # Best fitness=0.64297 observed at iteration 498 # Best fitness metrics are {'metrics/precision(B)': 0.87247, 'metrics/recall(B)': 0.71387, 'metrics/mAP50(B)': 0.79106, 'metrics/mAP50-95(B)': 0.62651, 'val/box_loss': 2.79884, 'val/cls_loss': 2.72386, 'val/dfl_loss': 0.68503, 'fitness': 0.64297} # Best fitness model is /usr/src/ultralytics/runs/detect/train498 # Best fitness hyperparameters are printed below. lr0: 0.00269 lrf: 0.00288 momentum: 0.73375 weight_decay: 0.00015 warmup_epochs: 1.22935 warmup_momentum: 0.1525 box: 18.27875 cls: 1.32899 dfl: 0.56016 hsv_h: 0.01148 hsv_s: 0.53554 hsv_v: 0.13636 degrees: 0.0 translate: 0.12431 scale: 0.07643 shear: 0.0 perspective: 0.0 flipud: 0.0 fliplr: 0.08631 mosaic: 0.42551 mixup: 0.0 copy_paste: 0.0
best_fitness.png
이것은 반복 횟수에 대한 적합성(일반적으로 AP50과 같은 성능 지표)을 표시하는 플롯입니다. 시간이 지남에 따라 유전 알고리즘이 얼마나 잘 수행되었는지 시각화하는 데 도움이 됩니다.
- 형식: 형식: PNG
- 사용법: 성능 시각화
tune_results.csv
튜닝 중 각 반복에 대한 자세한 결과가 포함된 CSV 파일입니다. 파일의 각 행은 하나의 반복을 나타내며, 사용된 하이퍼파라미터뿐만 아니라 적합도 점수, 정확도, 재접속률과 같은 메트릭이 포함됩니다.
- 형식: CSV
- 사용법: 반복당 결과 추적.
- 예:
fitness,lr0,lrf,momentum,weight_decay,warmup_epochs,warmup_momentum,box,cls,dfl,hsv_h,hsv_s,hsv_v,degrees,translate,scale,shear,perspective,flipud,fliplr,mosaic,mixup,copy_paste 0.05021,0.01,0.01,0.937,0.0005,3.0,0.8,7.5,0.5,1.5,0.015,0.7,0.4,0.0,0.1,0.5,0.0,0.0,0.0,0.5,1.0,0.0,0.0 0.07217,0.01003,0.00967,0.93897,0.00049,2.79757,0.81075,7.5,0.50746,1.44826,0.01503,0.72948,0.40658,0.0,0.0987,0.4922,0.0,0.0,0.0,0.49729,1.0,0.0,0.0 0.06584,0.01003,0.00855,0.91009,0.00073,3.42176,0.95,8.64301,0.54594,1.72261,0.01503,0.59179,0.40658,0.0,0.0987,0.46955,0.0,0.0,0.0,0.49729,0.80187,0.0,0.0
튠_분산_플롯.png
이 파일에는 다음에서 생성된 분산형 차트가 포함되어 있습니다. tune_results.csv
를 사용하여 다양한 하이퍼파라미터와 성능 지표 간의 관계를 시각화할 수 있습니다. 0으로 초기화된 하이퍼파라미터는 다음과 같이 조정되지 않습니다. degrees
그리고 shear
아래에 있습니다.
- 형식: 형식: PNG
- 사용법: 탐색적 데이터 분석
가중치/
이 디렉터리에는 하이퍼파라미터 튜닝 프로세스 중 마지막 반복에 대해 저장된 PyTorch 하이퍼파라미터 튜닝 프로세스 중 마지막 및 최상의 반복에 대한 모델이 저장되어 있습니다.
last.pt
: 마지막.pt는 훈련의 마지막 시기의 웨이트입니다.best.pt
: 최고의 피트니스 점수를 달성한 반복에 대한 best.pt 가중치입니다.
이러한 결과를 사용하여 향후 모델 훈련 및 분석에 대해 보다 정확한 정보를 바탕으로 의사 결정을 내릴 수 있습니다. 이러한 아티팩트를 참조하여 모델이 얼마나 잘 수행되었는지, 어떻게 더 개선할 수 있는지 알아보세요.
결론
Ultralytics YOLO 의 하이퍼파라미터 튜닝 프로세스는 돌연변이에 초점을 맞춘 유전 알고리즘 기반 접근 방식 덕분에 단순하면서도 강력합니다. 이 가이드에 설명된 단계를 따르면 모델을 체계적으로 튜닝하여 더 나은 성능을 달성하는 데 도움이 됩니다.
추가 읽기
더 깊은 인사이트를 얻으려면 다음을 살펴보세요. Tuner
클래스 소스 코드와 함께 제공되는 설명서를 참조하세요. 질문이나 기능 요청이 있거나 추가 지원이 필요한 경우 다음 주소로 언제든지 문의해 주세요. GitHub 또는 불화.
자주 묻는 질문
하이퍼파라미터 튜닝 중에 Ultralytics YOLO 의 학습 속도를 최적화하려면 어떻게 해야 하나요?
Ultralytics YOLO 에 대한 학습 속도를 최적화하려면 먼저 다음을 사용하여 초기 학습 속도를 설정합니다. lr0
매개변수입니다. 일반적인 값의 범위는 다음과 같습니다. 0.001
에 0.01
. 하이퍼파라미터 튜닝 프로세스 중에 이 값은 최적의 설정을 찾기 위해 변경됩니다. 하이퍼파라미터 튜닝 과정에서 model.tune()
메서드를 사용하여 이 프로세스를 자동화할 수 있습니다. 예를 들어
예
자세한 내용은 Ultralytics YOLO 구성 페이지에서 확인하세요.
YOLO11 에서 하이퍼파라미터 튜닝에 유전 알고리즘을 사용하면 어떤 이점이 있나요?
유전 알고리즘( Ultralytics YOLO11 )은 하이퍼파라미터 공간을 탐색하는 강력한 방법을 제공하여 고도로 최적화된 모델 성능을 이끌어냅니다. 주요 이점은 다음과 같습니다:
- 효율적인 검색: 돌연변이와 같은 유전자 알고리즘은 대규모 하이퍼파라미터 세트를 빠르게 탐색할 수 있습니다.
- 로컬 최소값 피하기: 무작위성을 도입하여 로컬 최소값을 피하고 더 나은 글로벌 최적화를 보장합니다.
- 성능 지표: AP50 및 F1 점수와 같은 성능 메트릭을 기반으로 조정됩니다.
유전 알고리즘이 하이퍼파라미터를 최적화하는 방법을 알아보려면 하이퍼파라미터 진화 가이드를 확인하세요.
하이퍼파라미터 튜닝 프로세스는 얼마나 걸리나요 Ultralytics YOLO ?
Ultralytics YOLO 하이퍼파라미터 튜닝에 필요한 시간은 데이터 세트의 크기, 모델 아키텍처의 복잡성, 반복 횟수, 사용 가능한 계산 리소스 등 여러 요인에 따라 크게 달라집니다. 예를 들어, COCO8과 같은 데이터 세트에서 30개 에포크에 대해 YOLO11n을 튜닝하는 데는 하드웨어에 따라 몇 시간에서 며칠이 걸릴 수 있습니다.
튜닝 시간을 효과적으로 관리하려면 사전에 명확한 튜닝 예산을 정의하세요(내부 섹션 링크). 이렇게 하면 리소스 할당과 최적화 목표의 균형을 맞추는 데 도움이 됩니다.
하이퍼파라미터 튜닝 중 모델 성능을 평가하려면 어떤 메트릭을 사용해야 하나요 YOLO?
YOLO 에서 하이퍼파라미터를 조정하는 동안 모델 성능을 평가할 때 몇 가지 주요 지표를 사용할 수 있습니다:
- AP50: IoU 임계값 0.50의 평균 정밀도입니다.
- F1-점수: 정밀도와 회상률의 조화 평균입니다.
- 정확도 및 회수율: 오탐과 미탐을 식별하는 모델의 정확도를 나타내는 개별 메트릭으로, 오탐과 미탐을 구분하는 정확도를 나타냅니다.
이러한 메트릭은 모델 성능의 다양한 측면을 이해하는 데 도움이 됩니다. 종합적인 개요는 Ultralytics YOLO 성능 지표 가이드를 참조하세요.
레이 튠을 사용하여 YOLO11 고급 하이퍼파라미터 최적화에 사용할 수 있나요?
예, 고급 하이퍼파라미터 최적화를 위해 Ultralytics YOLO11 Ray Tune과 통합할 수 있습니다. 레이 튠은 베이지안 최적화 및 하이퍼밴드와 같은 정교한 검색 알고리즘과 병렬 실행 기능을 제공하여 튜닝 프로세스의 속도를 높입니다.
YOLO11 레이 튠을 사용하려면, 간단히 use_ray=True
매개변수의 model.tune()
메서드를 호출합니다. 자세한 내용과 예제는 레이 튠 통합 가이드.