YOLOv3설치까지 마쳤습니다.
이제는 기본 가중치가 아닌 저희의 가중치를 이용해봐야겠죠?
그러기 전에는 labeling 단계가 필요합니다.
이 단계는 저희가 학습시킬 데이터를 표시해주는 단계입니다.
시작하겠습니다 !
저희팀은 '아가뭐해?-가정 내 영유아 위험 탐지 알림 시스템' 입니다.
그래서 저희는 아이의 행동을 네가지로 분류하였습니다.
-
장난감 등 위험 물건 삼킴 사고
-
수면 중 엎드려 질식하는 사고
-
원목 침대같은 울타리 침대에서의 낙상 사고
-
선풍기 손가락 끼임 사고
이 행동들을 구글 이미지검색, 유튜브 영상, 지인들에게 부탁을 통하여 데이터들을 확보했습니다.
먼저 동영상 프레임을 나누는 단계를 알려드리겠습니다!
저는 두가지의 방법을 사용하였습니다.
첫번째, FreeVideoToJPGConverter 라는 프로그램을 통하여 프레임을 나누기
https://www.dvdvideosoft.com/products/dvd/Free-Video-to-JPG-Converter.htm
Free Video to JPG Converter - make snapshots from video files
Subscribe to our newsletter More than 200,000 subscribers!
www.dvdvideosoft.com
두번째, 터미널을 통하여 ffmpeg 로 프레임 나누기
1. sudo apt-get install ffmpeg
2. 동영상 경로로 이동
3. ffmpeg -i [ 동영상 제목.확장자 ] -vf fps=[ 1초당 몇 프레임으로 자를지 수 ] [ 저장되는 이름과 첫번호 (ex eat 0) ]%d.jpg
이제는 라벨링 하는 방법을 알려드리겠습니다 !
1. 터미널을 통해 Yolo_mark를 git에서 다운받습니다.
git clone https://github.com/AlexeyAB/Yolo_mark
cd Yolo_mark
2. 다음 명령어들을 입력합니다.
cmake .
make
chmod u+x ./linux_mark.sh
./linux_mark.sh
3. 그러면 다음과 같은 창이 뜰 것입니다.
ctrl+c를 통해 창을 닫고 이 이미지는 필요가 없으므로 지워줘야합니다.
=> Yolo_mark/x64/Release/data/img 다음의 경로를 통해 다 지워 주세요.
다 지우셨으면 이제 우리가 라벨링 할 이미지들을 같은 경로에 다시 넣어줍니다 !!!
4. 그다음 cd.. 의 명령어를 통해, Yolo_mark/x64/Release/data 이 경로로 들어가 vi obj.data 를 열어 수정합니다.
아래의 사진처럼 저는 4가지 클래스로 분류하였기 때문에 classes=4로 바꿔주었습니다 ! 변경 후 저장해주세요 :wq
5. 같은 폴더에 obj.name을 열어 클래스 명들을 적어줍니다
저희 팀 같은 경우에는 다음과 같이 저장하였습니다.
이와같이 한 이유는 이름을 간단히 하고자 하였고, 알파벳 순으로 저장하였습니다.
fan은 나중에 저장되었기에 맨 아래에 추가하였습니다.
6.여기까지 하셨다면 라벨링 단계입니다 .
다시 Yolo_mark의 경로로 돌아와서 ./linux_mark.sh 의 명령어를 입력해주세요.
여기서 몇가지 기능을 알려드리겠습니다.
-라벨링은 아시다시피 드래그를 통해 하시면 됩니다.
-0은 첫번째 클래스, 1은 두번째 클래스 숫자를 눌러서 클래스를 지정해줍니다.
-스페이스를 누르면 다음으로 넘어가고, n을 누르면 라벨링을 하나 할때마다 자동으로 넘어가집니다.
-c를 누르면 현재 이미지의 라벨링이 초기화됩니다.
라벨링을 다 하셨다면 ctrl+c로 종료해주세요.
7.다음은 조금 헷갈리는 단계입니다.
터미널을 통해 cd opencv/opencv-4.0.1/build/darknet 다음과 같이 darknet 경로로 이동하여 줍니다.
다음으로 vi yolov3.cfg 을 통해 파일을 열어줍니다.
이부분이 어렵습니다 !!! 집중하세요!!
:set number (엔터) //번호줄이 생기고
603 (엔터) //이 번호로 이동
603번째 줄과 610번째 줄의 filters와 classes를 수정합니다.
추가로 689, 696 번째 줄, 776, 783 번째 줄도 같이 수정합니다.
YOLOv2 버전에서는 filters=(classes + 5)*5 으로 계산
YOLOv3 버전에서는 filters=(classes + 5)*3 으로 계산
저같은 경우에는 classes는 4 ,filters는 27로 수정합니다!
다 수정하셨으면 :wq 저장하고 나갑니다.
8. 다음은 학습을 하기위해 다크넷 경로로 파일들을 복사해줄겁니다.
Yolo_mark/x64/Release/data 경로에 있는 img 폴더 및 obj.data, obj.names, train.txt 파일들을 darknet/data 복사합니다!!!
복사를 한 후 darknet/data로 이동된 train.txt의 경로들을 치환해줘야합니다.
- vi train.txt 파일을 열어줍니다.
- : 를 누르고 %s/x64\/Release\///i 를 입력합니다 //여기서 파일의 경로가 순식간에 data/img로 바뀝니다!
저장하고 나가시면 됩니다.
++ 저같은 경우는 학습을 학교 gpu를 이용할 거였기 때문에 doker에 옮겨주었습니당 !
여기까지 학습을 하기 전 labeling하기 였습니다!
참고 블로그: https://developer-thislee.tistory.com/18?category=818795
'2020_capstone' 카테고리의 다른 글
[11] 가정 내 영유아 위험 행동 알림 시스템 구현&알람 기능 (0) | 2020.06.30 |
---|---|
[10] YOLOv3 데이터 학습하기 (1) | 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 |