공부한 것을 다시 정리하기 위해서 작성했습니다 참고해주세요
참고 주소
- #011 TF YOLO V3 Object Detection in TensorFlow 2.0 (datahacker.rs)
1. 무료 GPU사용을 위한 Colab 설정하기
새 노트만든 뒤 런타임 -> 런타임유형 변경 후 GPU 설정
2. Train하기 위한 준비
!git clone https://github.com/AlexeyAB/darknet.git
%cd darknet
!ls
!sed -i 's/OPENCV=0/OPENCV=1/' Makefile
!sed -i 's/GPU=0/GPU=1/' Makefile
!make
!sed -i 's/OPENCV=0/OPENCV=1', !sed -i 's/GPU=0/GPU=1/'는 각 OPENCV 사용 및 GPU 사용하기 위한 설정입니다.
!wget https://pjreddie.com/media/files/darknet53.conv.74
사전학습모델 다운로드 명령어
!./darknet partial cfg/yolov3-tiny.cfg yolov3-tiny.weights yolov3-tiny.conv.15 15
yolov3-tiny 사전학습모델 구하는 법
3. 전처리 단계 및 다크넷 콘픽 수정
전처리 하기 전 라벨링 작업을 해서 학습할 데이터셋을 만들거나 데이터셋을 구해야합니다.
참고주소
- Create Labels and Annotations for Custom YOLOv3 Google Images Dataset | LabelImg Tutorial - YouTube
from glob import glob
img_list = glob('/content/darknet/data/custom_label/*.jpg')
from sklearn.model_selection import train_test_split
train_img_list, val_img_list = train_test_split(img_list,test_size=0.2,random_state=200)
with open('/content/darknet/data/train.txt','w') as f:
f.write('\n'.join(train_img_list)+'\n')
with open('/content/darknet/data/val.txt','w') as f:
f.write('\n'.join(val_img_list)+'\n')
train -> 80% test -> 20%
콘픽수정
1. darknet/cfg에서 yolov3.cfg의 내용을 복사해서 yolov3_custom.cfg 또는 아무이름.cfg로 저장
- 혹시 tiny를 사용하신다면 yolov3-tiny.cfg를 사용해주세요
[net]
# Testing
# batch=1
# subdivisions=1
# Training
batch=64
subdivisions=16
width=416
height=416
channels=3
momentum=0.9
decay=0.0005
angle=0
saturation = 1.5
exposure = 1.5
hue=.1
training을 위해서는 batch=64, subdivisions=16으로 설정
#max_batches = class * 2000 + 200
max_batches = 8200
#steps = max_batches * 0.8, 0.9
steps=6400,7200
max_batches는 클래스 갯수 * 2000 + 200
steps은 max_batches * 0.8, 0.9입니다.
그 후 [yolo]를 검색해서 다음과 같이 변경해주세요 (총 3번해야합니다. tiny같은 경우는 2개 잇습니다.)
[convolutional]
...
# filters = class + 5 * 3
filters=27
...
[yolo]
...
# classes = 4
classes=4
...
다 끝나셧으면 저장
darknet/data폴더로 이동 후 .names와 .data 파일을 찾아서 복사합니다. (아무 파일이나 복사해주세요 내용 다 변경예정)
classes= 4
train = data/train.txt
valid = data/val.txt
names = data/drink.names
backup = content/drive/MyDrive/
.data파일입니다. classes는 학습할 클래스 갯수, train은 전처리한 train의 위치, valid는 전처리한 test의 위치 names는 복사한 names의 위치 backup은 학습시 가중치를 백업할 곳의 위치
chilsung_can
sprite_can
chilsung_bottle
sprite_bottle
.names파일입니다. 라벨링할 때 사용한 classes를 넣어주세요
4. 학습시작
%cd /content/darknet/
!make
!./darknet detector train data/drink.data cfg/yolov3_Custom.cfg darknet53.conv.74 -map -show_img
.data, cfg, weight파일은 여러분이 지정한 이름으로 넣어주세요
5. 테스트
!./darknet detector test data/drink.data cfg/yolov3_Custom_test.cfg yolov3_Custom_best.weights test.jpg
from IPython.display import Image
Image('predictions.jpg')
테스트확인 전 yolov3_Custom.cfg파일에서 batch 및 subdivisions을 모두 1로 설정해주세요
'AI > 딥러닝' 카테고리의 다른 글
flask서버에서 yolov4 모델 실행하기 (0) | 2021.03.08 |
---|---|
BP 알고리즘 without tensorflow (0) | 2021.01.18 |
BP알고리즘 사용하기 with tensorflow (0) | 2020.12.30 |