일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 빅분기실기
- 가운데 글자 가져오기 python
- 나누어 떨어지는 숫자 배열 python
- 최단 경로 알고리즘
- 청년 AI Big Data 아카데미 13기
- docker remove
- 빅데이터분석기사
- docker 삭제
- 최소 스패닝 트리 자바
- 트리의 지름 자바
- 청년 Ai Big Data 아카데미
- codeup 1020 java
- codeup 1020 자바
- 코드업 1020 자바
- m1 docker install
- m1 docker
- 핸즈온 머신러닝
- 가운데 글자 가져오기 파이썬
- 트리의 지름 java
- 최소 스패닝 트리
- 프로그래머스 가운데 글자 가져오기 파이썬
- 나누어 떨어지는 숫자 배열 java
- 코드업 1020 java
- 프로그래머스 나누어 떨어지는 숫자 배열 자바
- 프로그래머스 나누어 떨어지는 숫자 배열 파이썬
- 프로그래머스 가운데 글자 가져오기 python
- 가운데 글자 가져오기 java
- docker 완전 삭제
- 가운데 글자 가져오기 자바
- 프로그래머스 가운데 글자 가져오기 자바
- Today
- Total
NineTwo meet you
Yolov3 환경 세팅 및 데이터 학습 진행 튜토리얼 본문
0. 환경 세팅
yolov3을 위해서는 Nvidia driver와 cuda를 설치하는 것이 좋다.
1. Darknet ( AlexeyAB) 버전 설치
https://github.com/AlexeyAB/darknet.git
$ git clone https://github.com/AlexeyAB/darknet.git
$ cd darknet
위에서 설치한 driver와 cuda를 이용해 GPU를 사용할 수 있도록 Makefile을 수정한다.
$ gedit Makefile
기존 파일
GPU=0
CUDNN=0
CUDNN_HALF=0
OPENCV=0
AVX=0
:
수정된 파일
GPU=1
CUDNN=1
CUDNN_HALF=1
OPENCV=1
AVX=0
:
$ make
2. Pre-trained weights 다운로드
$ wget https://pjreddie.com/media/files/darknet53.conv.74
3. 폴더 구조화
custom디렉터리와 data아래 Test_image, Train_image 디렉토리를 각각 생성합니다.
darknet
- darknet53.conv.74
- custom
- custom.data
- custom.names
- custom_yolov3.cfg
- test.txt
- train.txt
- data
- Test_image
- 1.jpg
- 1.txt
:
- Train_image
- 101.jpg
- 101.txt
:
:
4. 이미지 및 주석 파일 설정
앞서 data 디렉토리 안에 Test_image와 Train_image 디렉토리를 생성했다.
각 디렉토리 안에 다음 사진처럼 이미지와 label 된 txt 파일을 같은 디렉터리 안에 저장한다.
5. test.txt & train.txt
다음 파이썬 파일을 실행하여 /Train_image과 /Test_image에 있는 jpg 또는 PNG 파일의 경로를 custom/train.txt 파일과custom/test.txt로 변환하여 custom디렉터리 안에 저장한다.
[TrainTxt.py]
import os
path_dir = '/home/XXX/darknet/data/Train_image'
file_list = os.listdir(path_dir)
f = open("/home/XXX/darknet/custom/train.txt", 'w')
for i in file_list:
if i[-4:] != '.txt':
f.write('/home/XXX/darknet/data/Train_image/'+i+'\n')
f.close()
[TestTxt.py]
import os
path_dir = '/home/XXX/darknet/data/Test_image'
file_list = os.listdir(path_dir)
f = open("/home/XXX/darknet/custom/test.txt", 'w')
for i in file_list:
if i[-4:] != '.txt':
f.write('/home/XXX/darknet/data/Test_image/'+i+'\n')
f.close()
6. custom.names
검출하고자 하는 목록을 custom.names라는 이름으로 custom디렉터리에 저장한다.
7. custom.data
학습을 위한 class의 개수를 지정하고 train.txt의 경로, valid.txt의 경로, custom.names의 경로, weight를 저장할 디렉터리를 입력하고 custom.data라는 이름으로 custom 디렉토리에 저장한다.
8. custom_yolov3.cfg
darknet/cfg 디렉토리 아래 yolov3.cfg을 custom 디렉터리로 복사해 사용하도록 한다.
아래 명령어는 darknet 디렉터리에서 실행한다.
$ cp cfg/yolov3.cfg custom/custom_yolov3.cfg
custom_yolov3.cfg 파일은 모델의 구조 및 train에 대한 설정이 들어있는 파일이다.
Ctrl + f를 이용해 "[yolo]"를 검색하면 3개가 나온다. 3개 모두 다음과 같이 설정을 바꿔야 한다.
[yolo]를 기준으로 아래 있는 classes와 바로 위에 있는 filters 값을 조정한다.
classes = 검출하고 자 하는 class 수
filters = 필터 수 = (4 + 1 + 클래스 수) * 3
다음은 기본 net 설정 값에 대한 설명이다.
batch = 기본 값 64
subdivisions = 기본값 8, Out of memory에러시 16, 32, 64로 조절 후 학습 시도
width 및 height = 기본 값은 416, 608로 변경해 학습 가능
learning_rate = 기본값 0.001, multi-gpu 사용 시 0.001 / gpu 수만큼 조절 가능
burn_in = 기본값 1000, multi-gpu 사용 시 1000 * gpu 수 만큼 조절
max_batches = 보통 class 수 * 2000 + 200으로 설정 (200은 알맞은 가중치를 얻기 위한 값)
steps = max_batches 사이즈의 80% 와 90%를 설정 (200을 더하지 않은 상태의)
# epoch = max_batches * batch / len(image)
9. train
$ ./darknet detector train custom/custom.data custom/custom_yolov3.cfg darknet53.conv.74 | tee backup/train.log
iteration마다 생성되는 loss값을 확인하고 싶다면 다른 terminal창에서 다음 코드 입력 시 iteration: loss(iou), loss(classify), learning rate, iteration time, 훈련 이미지 개수 순서로 확인이 가능하다.
$ grep “avg” backup/train.log
10. Object Detection!
test를 진행하기 전에 이전에 만든 cfg 파일을 복사해 test를 위한 cfg 파일을 생성한다.
$ cp ./custom/custom_yolov3.cfg ./custom/custom_yolov3_test.cfg
새로 생성된 custom_yolov3_test.cfg의 batch와 subdivisions의 값을 1로 바꾼다.
test를 진행한다.
$ ./darknet detector test custom/custom.data custom/custom_yolov3.cfg backup/custom_yolov3_000.weights
다음과 같이 Enter Image Path라는 문구가 나오면 Object Detection을 보고 싶은 사진의 경로를 입력한다.
:
Enter Image Path:./data/Test_image/*. jpg
[mAP & IoU check!!]
./darknet detector map custom/custom.data custom/custom_yolov3.cfg backucustom_yolov3_final.weights
참고 자료
'기타' 카테고리의 다른 글
HRCenterNet 환경 세팅 및 데이터 학습 진행 튜토리얼 (0) | 2021.08.24 |
---|---|
이클립스 깃허브 연동 (0) | 2021.08.11 |
SSD Mobilenet 환경 세팅 및 데이터 학습 진행 튜토리얼 (0) | 2021.08.09 |
Yolo v5 환경 세팅 및 데이터 학습 진행 튜토리얼 (0) | 2021.07.21 |
[GitHub] Github README로 Profile 꾸미기(4) (1) | 2021.07.18 |