본문 바로가기
개발 이야기/머신러닝, 딥러닝

Colab환경 YOLOv4 커스텀 데이터 학습 중 오류 발생 및 해결

by AI 동키 2021. 7. 13.
반응형

YOLOv4 커스텀 데이터 학습 중 오류 발생 및 해결

 

YOLOv4 학습 중 100 epoch 후에 중간 저장을 하는 중 아래와 같은 오류로 진행이 안되는 문제가 발생했습니다.

이의 원인을 분석하고 해결한 방법을 공유 드립니다.

 

개발환경

- Google Colab


문제 발생

custom dataset 학습을 진행 하는 중 epoch 100개를 넘어가면서 중단되는 상황 발생.

 

에러메세지는 아래와 같다.

 

Saving weights to mydrive/yolov4-obj_last.weights

Couldn't open file: mydrive/yolov4-obj_last.weights


 

원인 별 해결방법

 

문제의 원인은 무조건 경로에 있다. darknet에서 중간 저장을 진행하며 weight파일을 정상적으로 저장하지 못했기 때문에 불러오지도 못하는 것이다. 

이의 경우 경로를 깔끔하게 설정하여 해결해야 한다.

 

1. 데이터셋의 obj.data 파일에 경로 설정을 잘 못 한 경우

classes = 14
train = data/train.txt
names = data/obj.names
backup = mydrive/yolov4/backup/

 과 같이 backup 경로의 마지막에 "/" 를 넣게 되면 저장 경로에 /가 중복으로 추가되어 backup// 와 같이 되며 오류가 발생할 수 있다. 그러므로 마지막에는 / 를 빼주어야 한다.

 

2. 내 구글 드라이브를 연동하고, 내 구글 드라이브에 백업을 받고 싶은 경우.

기본적으로 VM에서 darknet을 실행할 때, darknet 폴더에서 실행을 하게 되므로 내 구글드라이브, 즉 my drive 경로를 darknet 하위 경로로 설정해 두어야 깔끔하게 인식을 하게 된다.

아래와 같이 설정 가능하다.

구글코랩 VM이 Linux기반이므로, 리눅스의 ln 명령어를 사용하여 다크넷 내부에 디렉토리 링크를 생성해주면 됩니다. ln 명령어는 link의 약어로 직접 복사하지 않더라도 링크를 통해 원하는 위치에 폴더를 연결할 수 있는 리눅스 파일시스템의 기능입니다.

먼저 구글 드라이브에 backup을 저장하고자 하는 폴더를 생성합니다.

그 후 다크넷 폴더로 이동합니다.

%cd darknet 

# this creates a symbolic link so that now the path /content/gdrive/My\ Drive/ is equal to /mydrive
!ln -s /content/gdrive/My\ Drive/ /content/darknet/mydrive
!ls /content/darknet/mydrive

 

오우예!


 

요렇게 잘 저장이 되었고 학습도 잘 진행 되었습니다! 너무 행복해요! 

여러분도 잘 해결되셨길 바랍니다! 

 

 

반응형

댓글