작성
·
994
0
수업을 다 듣고 혼자 공부하며 Custom dataset을 YOLO로 학습시키는 실습을 진행중입니다.
그런데 xBD란 데이터셋(질문내용에 그렇게 중요하진 않습니다.)을 YOLO에 학습시키니 정확도가 매우 낮게 나옵니다.
그런데 당장 제가 사용할 수 있는 코드인(기존 수업 내용 속 코드를 그대로 가져와서 경로만 바꿈)
!cd /content/yolov3; python train.py --img 640 --batch 8 --epochs 100 --data /content/xBD/xBD.yaml --weights yolov3.pt \
--project=/content/drive/MyDrive/xBD/YOLOv3 --name xBD_100E --exist-ok
위 코드에서는 배치사이즈 말고 정확도에 영향을 줄 수 있는 파라미터가 없는 것 같아 추가로 뭔가를 작성하여 optimizer를 바꾸고자 했습니다.
train.py 내용을 보니 adam도 지원하는 것 같던데 기본 베이스라인에서 adam을 쓰는건지 따로 지정을 해줘야 adam을 사용할지 일단 여쭤봅니다.
추가로 만약 따로 지정을 해줘야한다면 위 코드에 --optimizer ADAM 만 적으면 될지, 아니면 lr도 추가로 지정해줘야 할지(그때의 명령어는 또 어떻게 작성하는지?) 여쭤봅니다.
질문이 많아 죄송하지만 위 코드에 명령어를 추가하는 방식이 아니라 yml 파일에 작성을 해줘야 하는 부분이라면 어떻게 작성해야 하는지 알려주시면 감사하겠습니다.
항상 좋은 강의 해주시고, 정성스럽게 질문에 답변 해주셔서 감사합니다.
답변 2
1
안녕하십니까,
Ultralytics Yolo는 기본적으로 optimizer 변경을 별로 좋아하지 않습니다. 수행하려면 train.py를 직접 고치는 수밖에 없습니다.
github의 가셔서 train.py에서 https://github.com/ultralytics/yolov3/blob/c46e156ff8fa97577cecf0c49e68de17640ff19b/train.py#L91-L93
에 보시면 SGD로 optimizer 되어 있는 부분의 소스코드로 Adam으로 변경해 주시고 train.py를 실행해 주시면 됩니다.
감사합니다.
0