다음은 데이터 학습을 진행할 것입니다.
데이터 학습에 앞서 저희는 폭력에 대한 이미지를 어떻게 찾을까 계속 고민을 하였는데요.
실생활에서 폭력을 접하기에는 매우 어렵다는 생각을 하였습니다.
그래서 youtube에 게시되어있는 폭력동영상을 활용 하기로 하였습니다.
1. 먼저 폭력이 일어나기 전 행동
2. 폭력이 일어나면서 취하는 행동
3. 폭력이 끝나고 난 뒤의 행동
이 세가지를 중점으로 이미지 파일로 만들었습니다. 이때 주의할 점으로는 이미지의 확장자 명이 .jpg이여야 합니다.
(.JPG, .JPEG, .jpeg 이 세가지는 인식이 안됩니다.)
이미지를 모았다면 이미지에 라벨링을 해줘야합니다. 저는 YOLO-mark를 사용하였습니다.
혹은 https://github.com/AlexeyAB/Yolo_mark 에 접속 하셔서 직접 받으셔도 됩니다.
설치를 하셨다면 해당 폴더에 가셔서 명령을 실행해주세요.
명령어를 작성해 주셨다면 해당 창이 실행될겁니다.
여기서 키패드 0~9까지 눌러주시면 해당 오브젝트 이름이 적용이 됩니다. 스페이스바는 다음 이미지, c는 해당 이미지에 있는 라벨링들을 초기화 시켜주는 키입니다.
해당 경로에 들어가주시면 기존의 이미지 파일들이 있습니다. 기존의 이미지들은 삭제해주세요.
-
yolo_mark/x64/Release/data/img
저는 폭력을 감지해야하기 때문에 싸우는 이미지들을 해당 위치에 넣었습니다. (2,000장 후에 5,000장으로 늘렸습니다.)
-
yolo_mark/x64/Release/data
경로에 obj.data 파일이 있습니다.
저희는 싸움이 일어나기 전 ready와 싸울때 fight를 감지해야 하기위해서 classes의 값을 2로 했습니다.
-
yolo_mark/x64/Release/data
경로에 obj.names 파일이 있습니다.
저는 싸우기 전과 싸울때의 ready, fight를 입력했습니다. 그렇기에 obj.data에 classes = 2로 해줬습니다.
현 상황에서 img폴더에 이미지들을 다 넣으셨고 obj.data에서 classes를 바꾸셨고 obj.names에서 이름을 설정해주셨으면
yolo_mark 디렉토리로 이동해주세요.
해당 명령어를 입력해주세요.
안된다면
둘 중 하나 입력해주시면 됩니다.
해당 작업이 다 끝나면 아래와 같이 *.jpg와 *.txt 이 생성이 됩니다.
*.txt 파일에 들어가보시면 라벨링 하셨던 좌표값 들이 들어가있습니다.
이제 거의다 끝났어요!
자신이 만든 이미지로 학습 데이터를 만드시면 됩니다.
-
yolo_mark/x64/Release
경로로 이동해주시고 명령어를 입력해주세요.
입력하셨다면 파일 내용에 이런 내용이 있을겁니다.
-
batch : 한번에 몇 장을 처리할지 정합니다.
-
subdivisions : batch를 이 값만큼 나누어서 처리합니다.
-
height, width : 입력되는 이미지의 크기입니다.
※ width와 height의 변화에 따른 검출 FPS 변화 표입니다. (클릭시 URL로 이동)
밑에 내리시다 보면 [convolutional]에 filters, [region]에 classes를 찾아주세요.
yolov2 버전에서는
filters=(classes + 5)*5 으로 계산해주시면 됩니다.
yolov3 버전에서는
filters=(classes + 5)x3 으로 계산해주시면 됩니다.
classes에는 obj.names에 입력해주신 이름의 개수를 적어주시면 됩니다.
-
yolo_mark/x64/Release/
디렉 토리에 있는 yolo-obj.cfg는 darknet/data/ 경로로 옮겨주세요.
-
yolo_mark/x64/Release/data/
디렉토리 안에 있는 obj.data, obj.names, train.txt 이 세개의 파일을
-
darknet/data/ 해당 경로로 옮겨주세요.
※tarin.txt 내용이 이런식으로 있습니다.
저는 yolo_mark/x64/Release/data/img/ 경로에 있는 *.jpg, *.txt를 darknet/data/로 옮겼기 때문에 x64/Release/ 이 부분을 다 잘라냈습니다. →
*.jpg, *.txt 파일 들은
-
darknet/data/img/ 해당 경로로 옮겨주세요.
darknet 디렉토리 안에서 명령어를 입력해주세요.
혹은 http://pjreddie.com/media/files/darknet53.conv.74
다운로드가 완료되면 해당 명령어를 통해 데이터 학습을 시켜주세요.
저는 yolov3가 아닌 yolov2로 작성해서 Pretrained Convolutional Weights 파일명이 다릅니다. 위의 파일이 최신 버전입니다.
위의 그림 마지막줄에 1: 212.628067, 212.628067 avg, 여기에서 212.628067 avg는 손실율을 의미합니다. (참조)
많은 데이터학습에도 손실율이 줄어들지 않는다면 학습을 중지하셔도 좋습니다.
backup
데이터 학습이 진행되면 100~900 백업 파일이 darknet/backup/ 에 자동으로 저장되고 그 다음에는 10000씩 저장 됩니다.
중간에 데이터 학습이 멈춘다고 걱정하지마세요.
.backup 파일은 100단위 마다 자동으로 저장이 됩니다.
명령어를 입력해주시면 멈췄던 단계부터 학습이 진행됩니다.
학습을 다 진행하셨다면
이미지 파일은 해당 명령어로 실행해주세요.
동영상 파일은 해당 명령어로 실행해주세요.
Webcam 실행은 해당 명령어로 실행해주세요.
학습을 완료하고 동영상을 실행해보았습니다.
결과는 저희가 생각했던 수준보다 더 좋게 나와서 만족했습니다!
※ 도와주신 개발자 이상현님 감사합니다.
'IT > YOLO' 카테고리의 다른 글
[7] YOLO Bounding Box 좌표를 서버로 전송하기 (9) | 2018.06.25 |
---|---|
[6] Ubuntu 16.04 APM(Apache2, PHP, Mysql) 설치 (0) | 2018.06.25 |
[4] Ubuntu 16.04 YOLO 설치 (13) | 2018.06.16 |
[3] Ubuntu 16.04 Opencv3.2 설치 (2) | 2018.06.16 |
[2] Ubuntu 16.04(64bit), CUDA 8.0, cuDNN 5.1 설치 (0) | 2018.06.16 |
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!