학습을 하기 전 참고로 저는 도커를 통해 학교 GPU에서 학습을 진행하였습니다 !
portainer.io에서 컨테이너를 만들어 이용했습니다.
저는 nvidia GeForce GTX 830M 였고, 학교는 nvidia GeForce RTX 2080 X 2 였기에 학습속도가 매우 빨랐습니다.
FileZilla를 통해 이미지들과 train.txt, obj.name, obj.data파일들을 전송하여 이용하시면 매우 간편합니다.
학습한 가중치도 FileZilla를 통해서 다시 가져왔습니다.
데이터 학습
1) 터미널을 통해 darknet 경로로 이동합니다.
cd ~~~~~~~/darknet
2) 다음의 코드를 입력해주세요.
wget https://pjreddie.com/media/files/darknet53.conv.74
3) detector.c 를 수정 (가중치의 저장단위 변경)
darknet/examples 폴더 안에 있는 detector.c 를 수정합니다.
:set number 입력 후, 138번째 줄로 이동합니다.
if (i%10000==0 || (i<1000&&i%100==0)){
학습 횟수가 1000보다 작을때는 가중치를 100단위 그 이상일땐 10000단위로 저장이 됩니다.
-> if (i%100==0 || (i<1000&&i%100==0)){
10000을 100으로 수정하여 100단위로 저장되게 하였습니다.
:wq로 저장 후 나가주면 됩니다.
4) 저장을 한 후 컴파일을 반드시 하셔야 합니다.
make
5) 학습을 위한 명령어를 입력합니다.
./darknet detector train data/obj.data cfg/yolov3.cfg darknet53.conv.74 -gpu 0
저같은 경우는 학교컴퓨터의 GPU가 2개였기 때문에 0,1이라고 입력했습니다.2개를 사용하실 시에 0,1로 해주세요 !!
위 사진을 조금 살펴보자면 1583: 0.392320, 0.418447 avg ~~~~~~~ 에서 1538은 학습 횟수를 의미하고 avg는 손실률을 의미합니다.학습을 중단할 때에는 ctrl+c를 눌러주세요.손실률이 어느정도에서 떨어지지 않는다면 중단해 주시면 됩니다.
6) darknet 폴더에서 backup 폴더로 학습 가중치가 저장이 됩니다. 저는 이 가중치를 제 노트북으로 다시 가져와서 테스트 하였습니다!
다음의 사진은 window cmd창에서 도커를 통해 학습 중이던 backup 파일 저장을 확인한 것입니다.
ls 명령어를 통해 저장을 볼 수 있습니다.
7) 학습한 데이터를 테스트 하기 위해서는 다음과 같은 명령을 써주세요. 여러개의 가중치 중 가장 인식률이 높은 것을 이용하시면 됩니다.
이미지 파일 테스트
./darknet detector test data/obj.data cfg/yolov3.cfg backup/(가중치 파일) (이미지 경로)/(이미지파일)
./darknet detector test data/obj.data cfg/yolov3.cfg backup/yolov3_30000.weights data/img/eat_acc.jpg
동영상 파일 테스트
./darknet detector demo data/obj.data cfg/yolov3.cfg backup/(가중치 파일) (동영상 경로)/(동영상 파일)
./darknet detector demo data/obj.data cfg/yolov3.cfg backup/yolov3_30000.weights data/video/acc.mp4
웹캠 테스트
./darknet detector demo data/obj.data cfg/yolov3.cfg backup/(가중치 파일)
./darknet detector demo data/obj.data cfg/yolov3.cfg backup/yolov3_30000.weights
다음과 같이 학습 결과를 확인 할 수 있습니다.
참고 블로그: https://developer-thislee.tistory.com/19?category=818795
'2020_capstone' 카테고리의 다른 글
[11] 가정 내 영유아 위험 행동 알림 시스템 구현&알람 기능 (0) | 2020.06.30 |
---|---|
[9] Yolo_mark 이용하여 labeling하기 (0) | 2020.06.29 |
[8] Ubuntu에 YOLOv3 설치하기 (0) | 2020.06.29 |
[7] Ubuntu에 OpenCV 4.0.1 설치하기 (2) | 2020.06.28 |
[6] cuda10.2와 cudnn7.6.5 설치하기 (0) | 2020.06.26 |