1、上官网下载yolov2-tiny.weights,或者先不下载,在虚拟机下下载
https://pjreddie.com/darknet/yolo/
https://pjreddie.com/media/files/yolov2-tiny.weights
2、在虚拟几下安装darknet
git clone https://github.com/pjreddie/darknet
cd darknet
make
3、下载yolov2-tiny.weights
wget https://pjreddie.com/media/files/yolov2-tiny.weights
4、测试小狗
./darknet detect cfg/yolov2-tiny.cfg yolov2-tiny.weights data/dog.jpg
5、训练tiny yolov2
在darknet-master/scripts文件夹中新建文件夹VOCdevkit,
将D:\VOC2019整个目录
拷贝到ubuntu系统下的/home/k210、块10/darknet/scripts/VOCdevkit目录下,
6、通过voc_gj_label_2019.py生成数据集
python voc_gj_label_2019.py
运行结束后在darknet/scripts文件夹下将生产新的文件2019_test.txt,2019_train.txt和VOC2019/labels,如下图所示
7、中间暂时略去
(1)放置在cfg下面的
voc_gj_2019.data
(2)放置在data下面的
voc_gj.names
8、要注意的是需要修改yolov2-tiny.cfg 最后一层卷积层的大小,(linear)也就是第119行的filter和第125行的训练类别数,修改为
yolov2-tiny_gj_2019.cfg另存
###########
[convolutional]
batch_normalize=1
size=3
stride=1
pad=1
filters=1024
activation=leaky
[convolutional]
size=1
stride=1
pad=1
filters=60 #修改最后一层卷积层核参数个数,计算公式是依旧自己数据的类别数filter=num×(classes + coords + 1)=5×(7+4+1)=60
activation=linear
[region]
anchors = 0.57273, 0.677385, 1.87446, 2.06253, 3.33843, 5.47434, 7.88282, 3.52778, 9.77052, 9.16828
bias_match=1
classes=7#类别数,本例为7类
coords=4
num=5
softmax=1
jitter=.2
rescore=0
9、修改输入图片的尺寸
[net]
# Testing
#batch=1 #测试时候放出来
#subdivisions=1 #测试时候放出来
# Training
batch=64 #训练时候放出来
subdivisions=2 #训练时候放出来
width=320 #修改
height=240 #修改
channels=3
momentum=0.9
decay=0.0005
angle=0
saturation = 1.5
exposure = 1.5
hue=.1
10、消减模型,为了让模型更小,删除第93行到第113行,删除内容如下
[maxpool]
size=2
stride=1
[convolutional]
batch_normalize=1
filters=1024
size=3
stride=1
pad=1
activation=leaky
###########
[convolutional]
batch_normalize=1
size=3
stride=1
pad=1
filters=1024
activation=leaky
11、训练
(1)方法一、直接训练
./darknet detector train cfg/voc_gj_2019.data cfg/yolov2-tiny_gj_2019.cfg
(2) 如果用官网的预训练模型darknet.conv.weights做初始化,则训练命令为
./darknet detector train cfg/voc_gj_2019.data cfg/yolov2-tiny_gj_2019.cfg darknet19_448.conv.23
12、测试
./darknet detector test cfg/voc_gj_2019.data cfg/yolov2-tiny_gj_2019.cfg backup/yolov2-tiny_gj_2019_100.weights data/20190325145623.jpg
13、待测试
(1)安装darkflow
(2)安装Cython和opencv
pip3 install Cython
pip3 install opencv-python
(3)修改offset
找到目录 ./darkflow/utils/loader.py 文件,搜索 self.offset = 16 ,修改为
self.offset = 16+4
(4)
flow --model cfg/yolov2-tiny_gj_2019.cfg --load backup/yolov2-tiny_gj_2019_100.weights --savepb
(5)
python3 gen_pb_graph.py workspace/yolov2-tiny_gj_2019.pb