boostcampaitech4lv23cv1 / level2_objectdetection_cv-level2-cv-01

Object Detection Competition - 부스트캠프 AI Tech 4기
2 stars 2 forks source link

[EXP] YOLOv7 #12

Closed quasar529 closed 1 year ago

quasar529 commented 1 year ago

1-stage model인 YOLOv7 구동 및 실험.

KidsareBornStars commented 1 year ago

YOLOv7 실험

epoch을 고정했어야 했는데 마음이 급해서 이리저리 하다보니 조금씩 epoch이 다르다. + 처음에 시드 고정을 안함 => 다음 번에는 두 가지 먼저 신경쓰고 시작해야겠다(seed는 고정하고, epoch는 처음에 여러 개를 많은 epoch 돌리고 그 다음에 수렴하는 구간 잘 찾아서)

실험 Settings

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 # image copy paste (probability) paste_in: 0 # image copy paste (probability), use 0 for faster training loss_ota: 0 # use ComputeLossOTA, use 0 for faster training 빠른 실험을 위해 paste_in: 0, loss_ota:0 으로 함. 제출 시에는 각각 0.15, 1 (확인)

36 epochs of base augmentations

image 전체적으로 배경으로 오탐하는 경우가 많았고, 배경을 class로 탐지하는 경우도 조금 있다. main은 배경으로 오탐하는 것. 그 외에 class별 오탐은 미미한 수준인 듯 하다. 실험 mAP는 0.6까지 올라갔는데, inference 결과 0.55 정도의 결과가 나왔다

100 epochs of base augmentations + multi-scale

image 100epoch의 original CV 중에 base augmentations와 투탑으로 좋은 성능. focal loss나 weighted image training 등을 시도했었지만 성능이 떨어졌다. 어떠한 기법을 적용하기보다 그냥 yolov7 레퍼런스에서 내부적으로 적용한 augmentation이 가장 성능이 좋았다. 우리 데이터의 특성에 맞추어 augmentation 수치를 조정할 수 있으면 좋을지도 모르겠다 실험 mAP는 0.56까지 올라갔으나 inference 결과 0.51 정도의 결과가 나왔다 -> epoch 수와 seed가 차이나서 정확한 것은 아니지만 가설은 현재 cv로는 inference 시 0.5정도 mAP하락

100 epochs of newCV

image

사진 넓이에 대해 small, medium, large boxes의 기준을 바꾼 CV를 적용해 보았다. 원래 small=0.001, medium=0.009, large는 그 이상이었는데, small=0.01, medium=0.05로 만들었더니 아래 그림에서 확인할 수 있듯 Battery는 작은 Box들이 많이 포진되어 있는데, 위의 결과보다 오히려 예측을 잘 하지 못하는 문제가 발생했다. 실험 mAP는 0.52정도인데, inference 후에는 0.54 정도가 나왔다 -> 이 CV가 test dataset에 대해 더 fit한 것이 아닐까?

newplot

KidsareBornStars commented 1 year ago

Test with Pretrained Yolov7e6e with new CV

image 모델이 너무 커서 batchsize 4를 초과할 시 OOM이 떠버리는 상황. 4로 돌렸더니 18시간 걸려버렸다. mAP는 최대 0.6까지 올라가고, 그 근처에서 잘 오르지 않았다. inference 후 제출하니 0.5965의 mAP -> 이 CV의 validation이 괜찮다는 것을 알 수 있다.

quasar529 commented 1 year ago

수고하셨습니다.