[window10] yolov4 custom training

정또치·2022년 9월 5일

개발일기

목록 보기
3/13
post-thumbnail

해당 블로그를 왕왕 많이 참조했다.
https://reyrei.tistory.com/20
https://ctkim.tistory.com/82


0. YOLO Mark 다운

레이블링을 위한 것으로 labelme와 같은 다른 라벨링 툴에서 yolo 방식으로 레이블링 해도 무방할 것 같다 !

1. YOLO Mark 다운 : https://github.com/AlexeyAB/Yolo_mark

  • yolo_mark.sln 을 visual studio로 연다.

2. 빌드하기

  • 빨간 네모를 Release 로 변경 후 ctrl+F5 로 빌드한다.

  • yolo_mark 에서 우클릭으로 속성 -> 링커 -> 일반 -> 추가 라이브러리 디렉터리로 가서 opencv 경로를 추가한다.

3. 빌드확인

  • yolo_mark를 다운받은 경로로 가서 해당 경로를 따라가면 yolo_mark.cmd가 생성되었다.

1. YOLO Mark로 레이블링

1. data 폴더에 사진 추가

  • yolo-mark를 다운받은 경로로 간다. (C:\Yolomark-master\x64\Release)

  • data -> img 로 가면 air와 bird 사진과 레이블링 txt가 기본으로 들어있을 것이다.

  • 추가로 학습시키고 싶은 사진을 img 폴더에 추가한다.

2. obj.data, obj.names, yolo-obj.cfg 수정

2-1. data 폴더 안의 obj.data 수정

  • data 폴더 안의 obj.data를 메모장으로 열어 추가하는 class 개수를 수정한다.
    본인은 air, bird, fish 이기에 classes = 3이다.

2-3. data 폴더 안의 obj.names 수정

  • data 폴더 안의 obj.names를 메모장으로 열어 추가하는 class의 이름을 쓴다.

2-3. Release 폴더 안의 yolo-obj.cfg 수정

  • Release 폴더 안의 yolo-obj.cfg를 열고 맨 밑으로 스크롤한다.

  • filter와 classes를 수정한다.
    filter는 5*(classes+5)로 하여 5(3+5) = 40이 된다.

3. yolo_mark.cmd를 실행하여 레이블링

  • yolo_mark.cmd를 실행하여 추가한 사진을 레이블링한다.
  • 위의 object id를 변경해가며 레이블링한다.

  • 레이블링이 되었다면 해당 사진처럼 넣어준 사진 이름으로 txt 파일이 저장된다.

2. 학습

0. 모델 다운 : https://pjreddie.com/media/files/darknet53.conv.74

  • 모델 다운 후 darknet-yolo(C:\darknet-master\build\darknet\Release\data) 폴더로 가서 Release에 넣는다.

1. yolo-obj.cfg 이동

  • C:\Yolo_mark-master\x64\Release 에 있던 yolo-obj.cfg를 darknet-yolo 으로 옮긴다.

2. data 폴더 이동

  • data 폴더 안의 모든 것을 yolo-obj.cfg를 옮겼던 폴더로 옮긴다. (복사하는 것 추천)

  • 해당 형관펜처럼 파일들이 data안으로 옮겨진 것을 확인한다.

3. cmd 창에 명령어 입력

  • Release가 있는 폴더로 이동한 후 cmd창에 해당 명령어를 입력한다.

  • gpu 0를 안하면 cpu 사용

$ darknet detector train data/obj.data data/yolo-obj.cfg data/darknet53.conv.74 - gpu 0

  • 이어서 학습
    darknet detector train data/obj.data data/yolo-obj.cfg data/darknet53.conv.74 backup/{저장된 가중치}.weights - gpu 0

  • 그러면 해당 창이 뜨면서 학습 상태가 cmd창에 출력된다.

! 만약 Couldn't open file: backup//yolo-obj_last.weights 해당 오류가 난다면

  • backup 폴더를 지웠다가 다시 만들어보자. 

3. 학습확인

  • cmd 창에 해당 명령어를 입력해서 확인한다.

$ darknet.exe detect yolo-obj.cfg yolo-obj_last.weights data/dog.jpg

  • 사실 본인은 학습이 잘 되지 않았으나 그대는 잘 되었길.. epoch=100으로 해서 그런가.. 보통 1000번은 하는 것 같당
profile
ddochi

0개의 댓글