인프런 커뮤니티 질문&답변

객체감지학생님의 프로필 이미지
객체감지학생

작성한 질문수

[개정판] 딥러닝 컴퓨터 비전 완벽 가이드

YOLOv3, v5에서 optimizer를 바꾸는 방법에 대해 알고싶습니다.

작성

·

1K

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

adamW도 지원하네요 요새는요

객체감지학생님의 프로필 이미지
객체감지학생

작성한 질문수

질문하기