YOLO

[YOLOv5] 하이퍼파라미터 튜닝하기(작성중)

devJua 2023. 8. 21. 21:35

YOLOv5를 이용하여 학습시키는 중 계속해서 오버피팅 현상이 일어났다.

그래서 이를 해결하고자 YOLO의 여러가지 기능들을 사용해보며

후기를 한 번 남겨보고자한다.

 

이번 포스팅에서는 cache와 evolve를 사용해보고 후기를 남겨보도록 하겠다.


https://github.com/ultralytics/yolov5/issues/607

 

 

Hyperparameter Evolution · Issue #607 · ultralytics/yolov5

📚 This guide explains hyperparameter evolution for YOLOv5 🚀. Hyperparameter evolution is a method of Hyperparameter Optimization using a Genetic Algorithm (GA) for optimization. UPDATED 28 March 20...

github.com

욜로에 대해 알아보던중 cache라는 것을 알게 되었다.

 

이는 YOLOv5의 프레임워크에서 데이터 로딩 및 전처리를 더욱 효율적으로 수행하기 위해 사용되는 것이다.

즉, 데이터 로딩과 전처리를 최적화하기 위해 메모리에 데이터를 캐싱하고 재사용하는 기능을 제공하는 것으로

해당 옵션을 사용하면 학습데이터가 처음 로드되고 전처리된 후에 해당 데이터가 메모리에 캐시된다고 한다.

이후 에포크나 배치간에 데이터를 다시 로드할 필요 없이 캐시된 데이터를 재사용함으로써 학습속도가 향상된다.

 

사용해본 결과 데이터를 캐싱하는 동안 메모리 사용량이 증가하는 것을 확인했고,

학습속도는 확실히 향상되는 것을 확인할 수 있었다.

 

 

--evolve 같은 경우 하이퍼파라미터 튜닝시 필요한 기능이다. 

이 옵션을 사용하게 되면 하이퍼파라미터 조합을 최적화하면서 여러번의 학습을 진행하게 된다.

이와 관련하여는 여러번의 실험 후 더 자세하게 써보도록 하겠다. 

 

 

1. 첫번째 실험 (m모델)

Epoch: 300

img size: 640

bacth: 12

 

결과: 오버피팅

 

2. 두번째 실험 (s모델)

Epoch: 100

img size: 640

bacth: 32

 

로 돌리면서 --evolve와 --cache 도 함께 넣어줬는데, 

evolve가 파라미터값을 바꾸면서 진행하는 건데

img size와 bacth 같은 파라미터값을 지정해서 넣어줘도 되는 것인가..?

더 알아볼 필요가 있다.

 

그리고 --hyp도 사용해줬다(23.08.21작성중)