yolo5→data→hyps
에 들어가면 필요한 파일이 다양하게 존재합니다. (Object365, VOC, scratch-high, scratch-low, scratch-med) 저는 VOC를 기준으로 하이퍼 파라미터에 대한 설명을 적어보도록 하겠습니다.실제 사용되는 obb 하이퍼파라미터
lr0: 0.01 # initial learning rate (SGD=1E-2, Adam=1E-3)
lrf: 0.1 # final OneCycleLR learning rate (lr0 * lrf)
momentum: 0.937 # SGD momentum/Adam beta1
weight_decay: 0.0005 # optimizer weight decay 5e-4
warmup_epochs: 3.0 # warmup epochs (fractions ok)
warmup_momentum: 0.8 # warmup initial momentum
warmup_bias_lr: 0.1 # warmup initial bias lr
box: 0.05 # box loss gain
cls: 0.3 # cls loss gain
cls_pw: 1.0 # cls BCELoss positive_weight
obj: 0.7 # obj loss gain (scale with pixels)
obj_pw: 1.0 # obj BCELoss positive_weight
iou_t: 0.20 # IoU training threshold
anchor_t: 4.0 # anchor-multiple threshold
# anchors: 3 # anchors per output layer (0 to ignore)
fl_gamma: 0.0 # focal loss gamma (efficientDet default gamma=1.5)
hsv_h: 0.015 # image HSV-Hue augmentation (fraction)
hsv_s: 0.7 # image HSV-Saturation augmentation (fraction)
hsv_v: 0.4 # image HSV-Value augmentation (fraction)
degrees: 0.0 # image rotation (+/- deg)
translate: 0.1 # image translation (+/- fraction)
scale: 0.9 # image scale (+/- gain)
shear: 0.0 # image shear (+/- deg)
perspective: 0.0 # image perspective (+/- fraction), range 0-0.001
flipud: 0.0 # image flip up-down (probability)
fliplr: 0.5 # image flip left-right (probability)
mosaic: 1.0 # image mosaic (probability)
mixup: 0.1 # image mixup (probability)
copy_paste: 0.1 # segment copy-paste (probability)
Evolve & Custome Hyper params
해당 값을 위처럼 하나하나 보고 조절해주어도 되지만 편의를 위해서 —evolve라는 옵션을 제작자들이 만들어 둔 것 같습니다. 해당 옵션은 GA 알고리즘이라는 방법을 사용하여 일정부분 훈련을 진행하고, 그에 맞게 하이퍼 파라미터를 자동으로 조절하여 최적의 값을 산출합니다. 해당 옵션을 사용해서 내가 훈련시키기 위한 모델의 하이퍼 파라미터를 미리 파악하고, 해당 값을 사용해서 더 좋은 모델을 훈련해도 좋을 것 같습니다. 물론 모델별로 최적의 하이퍼 파라미터를 가지는 것이 가장 베스트라고 생각하지만, 엄청나게 많은 시간과 자원을 소비합니다.
<aside> 📌 300 Epochs를 돌려 실험해본 결과 300번을 1회 돌고나니 계속해서 반복하는 것을 보았습니다. 이렇게 1G가 생성되어 최적의 하이퍼 파라미터를 산출하고, 계속해서 반복하여 최고의 값을 선출하는 것 같습니다.
</aside>