[TIL]KDT팀프로젝트2021/03/24
노션에 칸반보드 업데이트된 것 확인하고, 전에 찾은 1프레임별 사진으로 저장된 CCTV데이터셋으로 추론 진행해보았다.
성능이 생각보다 좋지 않았다. 모든 프레임을 볼 필요 없이 1초에 약 30프레임으로 구성된다 가정하고 1/10/15/30 프레임으로 끊어서 추론해보았다. 이미지 파일은 그대로 두고, csv파일 annotation만 잘라서 적용하면 된다.
best model 찾는 것은 early stop을 이용하기로 했다. 저번에 validation loss도 그렇고 early stop도 그렇고 Detectron2에서 지원하는게 하나도 없다. 손수 다 만들어야 한다. Detectron2를 안쓰면 그냥 옵션 하나만으로 해결되는 일이 조금 번거로워졌다..
처음에는 detectron2의 공식 깃헙의 이슈의 질의응답을 참고하여 커스텀 hook와 trainer를 만들어 validation을 계산할 수 있도록 했다. 오버피팅을 시각적으로 확인할 수 있는 방법이 필요하다고 생각했고, 훈련에 validation을 포함하여 loss를 계산했다.
처음 코드에서는 best loss를 자동으로 저장하지 않고 iteration을 지정한 만큼 무조건 훈련을 수행했다. 10000 iteration 단위로 weight결과인 pth 파일을 저장했고, AP 및 total/validation loss 그래프 분석 결과 30000 iteration 이후부터 오버피팅이 발생하는 것을 확인할 수 있었다. 따라서 20000 iteration부터 이어서 학습을 진행하되 best loss에서 early stop하도록 했다.