Deep Learning

Yolo V5 Validation.

해시브라우니 2024. 1. 15. 18:30

아마 Yolo v5 학습 및 예측 마지막 편이 될거 같습니다.

 

이번 3일동안 제 환경에서 학습을 시켰고,, 원래 300회를 해야한다는데 100회를 하는 것으로 마무리 지었습니다. 학습하는 방법은 이전 게시글을 참고하면 됩니다.

 

학습시킨 결과로 최적화된 weight 파일과 (best.pt) 여러 그래프들, 학습하면서 예측한 사진들을 얻었습니다.

당연히 결과는 그냥.. label에 비하면 엄청 안좋은 수치입니다. 

하지만 학습은 정상적으로 진행됨을 확인할 수 있었는게, 

그래프를 보면 Loss도 올바른 방향으로 감소하고 mAP, precision, recall 모두 상승하는 모습을 볼 수 있습니다. 100회가 아닌 300회였다면 또 어떻게 나왔을지 궁금하네요. 300회였다면 overfitting이 있었을까요??? 그런 부분도 있었을지 궁금했습니다. 

 

쨌든 이러한 학습을 마친 후에 얻은 모델로 Detect한 결과를 확인하는 것보다는 수치를 알아야하기 때문에 val.py를 사용하였습니다. 그리고 그전에 cocostylized.yaml을 수정했었고, test쪽 경로를 작성을 안했었기에 그 부분부터 수정하였습니다.

test는 다른 팀원분이 구성해주신 dataset으로 진행하였습니다. 경로를 위와 같이 해주고 ! 

val.py를 실행해줘야합니다. val.py의 argparse를 잘 확인하여 명령어를 입력해주면 됩니다. 

주의해야할건 task가 val로 default값이 정해져있기 때문에 앞서 설정한 yaml파일에서 test경로가 아닌 val경로로 들어가 있습니다. 그래서 명령어 할때 --task test로 작성해주어야합니다.

 

python val.py --task "test" --weights ./runs/train/exp4/weights/best.pt --data ./data/cocostylized.yaml --device 0

 

 

마지막에서 윗 줄에 수치를 확인할 수 있습니다. 처음에 학습을 시켰는데도 크게 안 나온것 같아서 조금 당황했는데, pre-trained model로 해봤을때랑 비교해보니 잘못된것은 아니었습니다.

 

pre-trained model로 test data를 넣으니 더 안좋은 결과를 얻은 것을 확인할 수 있습니다. 

한눈에 보기 편하게 정리하면

  Precision Recall mAP50 mAP50-95
Ours-CustomizedVal 0.427 0.254 0.251 0.139
Pretrain-CustomizedVal 0.418 0.212 0.208 0.12

 

이렇게 표로 정리할 수 있고. Robust(AdaIN+COCO)한 data로 100회 학습시킨 모델이 pre-trained된 모델보다 좋은 결과를 보여주는 것을 확인할 수 있었습니다! 

(Fatal 에러는 git 가 연관이 있는다고 합니다. 전 git을 사용하여 작업을 한 것이 아니기에.. 그리고 예측과 학습에 영향을 주지 않은것으로 알고 있습니다. 혹시 틀린정보라면 알려주세요..)

 

 

결과를 나타낸 사진은 이렇습니다. 

아쉬운 점은 300회를 돌려서 비교를 했으면 더 차이를 볼 수 있지 않았을까 하는 생각하고, 더 모델을 개선시킬만했는데 중간에 끊어버린 것 같아서 찝찝한 마음이 있네요.