[DEEP LEARNING] 윈도우 10에서 Darknet을 이용한 YOLOv3 데이터 학습 및 검출 방법

    이번에는 저번 학습전 세팅에 이어서 학습을 시키고 검출까지 진행해보겠습니다.


    세팅이 완료 됐다면 학습을 시켜주시면 됩니다

    darknet detector train data/obj.data cfg/crack.cfg darknet53.conv.74

     

    처음 학습전 가중치 파일은 다크넷에서 제공되는걸 썼습니다

    http://pjreddie.com/media/files/darknet53.conv.74

     

    (저는 학습을 끝낸후 재학습을 시키고 있는중이라 그래프가 0부터 시작하지 않은 것 입니다)

     

    학습을 시작하게되면 이런 그래프 화면(chart) 과 학습이 진행되고있는 창(프롬프트)이 있을겁니다

     

    Chart.png

    current avg loss : 손실률

    iteration : 반복 횟수

    time left : 남은 시간

    max_batches : 배치사이즈

     

    프롬프트

    Region 82 : 가장 큰 Mask, Prediction Scale 을 이용하는 레이어이지만 작은 객체를 예측 할 수 있음
    Region 94 : 중간 단계 Mask, Prediction Scale
    Region 106 : 가장 작은 Mask, Prediction Scale 을 이용하는 레이어이지만 마스크가 작을 수록 큰 객체 예측 가능
    Avg IOU : 현재의 subdivision에서 이미지의 평균 IoU, 실제 GT와 예측된 bbox의 교차율을 뜻함, 1에 가까울 수록 좋음
    Class : 1에 가까운 값일 수록 학습이 잘 되고 있다는 것
    No Obj : 값이 0이 아닌 작은 값이어야 함
    .5R : recall/conut
    .75R : 0.000000
    count : 현재 subdivision 이미지들에서 positive sample 들을 포함한 이미지의 수

     

    ※TIP

    YOLO는 첫 batch 실행시 CUDA 메모미 한계를 넘는지 체크하기 위해서 자신이 사용하는 가장 큰 이미지 크기로 리사이징 해서 학습을 돌리는 것으로 보입니다. 이때 사용하는 이미지 크기가 세팅된 네트워크 이미지 크기의 약 150%를 사용하는 것 같습니다. 예를 들어 네트워크 이미지 크기를 672x672 로 구성했을 경우 960x960 으로 리사이징해서 교육을 진행합니다. 때문에 교육용 이미지 사이즈의 약 2/3 정도로 네트워크 이미지 크기를 구성하면 원본크기를 손해를 보지 않으면서 학습 속도를 개선시킬 수 있는 것 같습니다. 계산하는 알고리즘을 정확히 확인해봐야 겠지만, 32x32로 사이즈가 떨어지는 특성에 맞춰서 계산을 하거나, 네트워크를 실제로 학습 시켜보면서 제일 먼저 나오는 학습 사이즈를 통해 원본 소스 사이즈를 확정할 수 있을 것 같습니다.

    (속도 개선 사항일뿐 성능의 개선은 아닙니다. width와 height가 크면 성능이 좋아진다고 하는데 이부분은 저도 정확히 모르겠습니다 혹시 아시는분 계시다면 댓글 부탁드립니다!) 

     

     

    학습 완료후 

     

    학습이 중간에 끊기거나, 완료후 재학습을 시키고 싶을때에는

    darknet detector train data/obj.data cfg/crack.cfg darknet53.conv.74

    파란 부분을 학습 시키고 싶은 가중치 파일을 넣어주시면 됩니다

     

    (저같은 경우는 crack_57000.weights 부터 학습을 이어서 시키는 중이었습니다)

    darknet detector train data/obj.data cfg/crack.cfg crack_57000.weights

     

    학습 후에는 아래 명령어로 어느 weights가 어느 정도의 성능을 보이는지 확인할 수 있습니다

    darknet.exe detector map data/obj.data cfg/crack.cfg backup/crack_59000.weights

    이렇게 성능을 확인 할 수 있습니다.

    (아직 한번 학습 시킨 상태라 성능이 썩 좋지는 않군요..)

     

    mAP-chart (학습을 시키면서 차트에서 mAP를 확인 할 수 있습니다)

    darknet.exe detector train data/obj.data cfg/crack.cfg crack_59000.weights -map

     

     

    검출

     

    학습 완료후 검출 방법입니다.

     

    이미지 파일은 해당 명령어로 실행해주세요.

    darknet detector test data/obj.data data/yolo-obj.cfg backup/*.weights data/<image file>

     

    (제가 학습시킨 crack_59000으로 실행 시켰을 때의 검출화면 입니다)

     

    동영상 파일은 해당 명령어로 실행해주세요.

    darknet detector demo data/obj.data data/yolo-obj.cfg backup/*.weights data/<video file>

     

    Webcam 실행은 해당 명령어로 실행해주세요.

    darknet detector demo data/obj.data data/yolo-obj.cfg backup/*.weights data

     

     

     

    여기까지 YOLOv3의 설치, 세팅, 학습, 검출까지 해봤습니다

    잘못된 점이나 궁금한 점 있으시면 댓글 남겨주세요

    댓글