본문 바로가기

프로그래머스 데브 코스/TIL

[6기] 프로그래머스 인공지능 데브코스 94일차 TIL

1203

[15주차 - Day5] Visual Recognition

Custom YOLO v3 제작 과제

# 강의에서 배운 Custom YOLO제작방법과
# 유튜브(https://www.youtube.com/watch?v=saDipJR14Lc)에 나오는 OpenCV를
# GPU와 같이 사용하는 방법을 같이 이용하여
# 로컬에서 GPU로 동작하는 Custom YOLO v3를 제작해보기

# 예를 들어 ‘총’을 들고 있는 사람을 인지하는 실시간 위험감시 프로그램 제작

# GPU로 OpenCV가 돌아가지 않으면 CPU로라도 제작

 

드디어 실습 과제 수행

# darknet 불러오고 데이터셋 다운로드받는 건 이전 포스팅과 동일한 방식
# 대신 클래스를 'Beer' 데이터셋 하나로 줄여서 수행

# cfg 파일을 내가 만들고 싶은 데이터의 클래스 수에 맞춰서 변형
# 이번 실습 과제에서는 클래스를 하나만 쓸 거라서
# max_batches = 4000 (클래스 하나라고 해도 최소 4000)
# steps = 320, 360
# classes = 1
# filters = 18  (클래스 수 + 5) * 3


# 커스텀 .cfg 파일을 다시 클라우드로 올림
!cp /mydrive/dl/yolov3_custom.cfg ./cfg

 

 

!cp /mydrive/dl/obj.names ./data
!cp /mydrive/dl/obj.data  ./data

- names 내용을 'Beer' 하나로 바꾸고 data 내용의 클래스 수를 1로 수정

 

 

# generate_train.py 실행한 뒤
# 사전학습된 convolutional layer weights를 다운로드하기
!wget http://pjreddie.com/media/files/darknet53.conv.74

# 커스텀 detector를 학습시키기. 기존에 학습하다 말았으면 backup에 있는 weight를 불러서 학습하는 셀로 이동하기
!./darknet detector train data/obj.data cfg/yolov3_custom.cfg darknet53.conv.74 -dont_show

 

 

~ 아홉 시간 학습 시작 ~

 

 

# 구글 드라이브로 원하는 영상을 업로드한 후에 커스텀 detector를 돌리기. 여기서 -thresh 0.3은 Accuracy가 0.3이하가 되는 Object의 Bounding Box는 보이지 않게 하겠다는 뜻임
!./darknet detector test data/obj.data cfg/yolov3_custom.cfg /mydrive/backup/yolov3_custom_last.weights /mydrive/images/test.jpg -thresh 0.3
imShow('predictions.jpg')

- 내 드라이브에 images라는 폴더를 만들어 test.jpg 파일을 넣어서 실행하면 내 모델이 잘 작동하는지 확인할 수 있다.