1.这篇文章是在我上篇文章的基础上继续往下做,上篇博客,上篇博客在树莓派4B上实现了目标检测,这篇文章将实现在笔记本上行人检测权重,再放到树莓派里面。
2.我的笔记本配置系统Ubuntu16.04+cuda8.0+cudnn5.1
硬件7代cpu,显卡gtx1050,
3. 一共训练30000次,训练速度很快,10000次只要半小时左右就完成了,测试检测结果很好
4.参考 https://github.com/pascal1129/yolo_person_detect
git clone https://github.com/AlexeyAB/darknet.git
cd darknet/
wget https://pjreddie.com/media/files/yolov3-tiny.weights
权重文件直接下载速度挺慢,可以使用迅雷打开链接下载。
我下载了所有权重文件放在百度网盘了,需要的可以根据需要下载
链接:https://pan.baidu.com/s/18UCY-6-J9-SBOHCPZLvuAA
提取码:dhp6
为了使用GPU修改makefile文件,修改开头两行如下,我没有装opencv,装了的可以按照自己配置设置参数,opencv就是将检测结果显示出来,没装就会保存到目录下,手动查看。
GPU=1
CUDNN=1
运行测试
sudo ./darknet detect cfg/yolov3-tiny.cfg yolov3-tiny.weights data/dog.jpg
使用voc2007和voc2012数据集,也可以只用一个。
下载地址,官网很慢,推荐复制镜像站链接,去迅雷下载,速度很快。
官网: http://host.robots.ox.ac.uk/pascal/VOC/
镜像站:https://pjreddie.com/projects/pascal-voc-dataset-mirror/
行人检测就要抽取数据集中所有的人组成新的数据集,已经有人写好所有制作的Python文件。
git clone https://github.com/pascal1129/yolo_person_detect.git
下载完毕可以放在darknet目录下。
我使用的是voc2007和voc2012数据集,如图,就将数据集的vocdevkit文件放在这个位置
分别运行2007和2012抽取行人的代码,再运行voc_lable,py,转换成YOLO支持的格式
生成三个txt文件,里面存放的是数据集的地址。
是训练之后转移到树莓派上,可以不需要测试集
cat 2007_train.txt 2012_train.txt > train.txt
数据集制作完毕
在cfg目录下可以找到yolov3-tiny.cfg,打开修改
batch, sub按需修改
一共二个YOLO层,均需要修改:
classes=1
filters=18 3*(1+1+4)=18
# filters=(classes + coords + 1)*
在date目录下找到voc.name
person
将里面的路径改成自己数据集所在位置,这是我的
classes= 1
train = /home/hua/darknet/yolo_person_detect-master/make_yolo_dataset/YOLO_VOC2007_2012/train.txt
valid = /home/hua/darknet/yolo_person_detect-master/make_yolo_dataset/YOLO_VOC2007_2012/2007_test.txt
names = data/voc.names
backup = /home/hua/darknet/backup/
在darknet里面新建一个backup文件夹,用来存放训练好的权重
都改完之后,make
首先下载一个预训练的权重,tiny版使用的是yolov3-tiny.conv.15
wget https://pjreddie.com/media/files/yolov3-tiny.conv.15
下载很慢,我下载了放在网盘里,需要的自取
启动训练
sudo ./darknet detector train cfg/voc.data cfg/yolov3-tiny.cfg yolov3-tiny.conv.15 -gpus 0
每训练1000次保存一个权重,在backup目录
可以随时停止,下一次训练可以继续
只要将上面的预训练权重换成生成的权重就可以继续训练
训练过程不出现大量的nan,就训练成功了
训练的差不多,可以测试一下,能够显示运行时间,保存检测后的图
sudo ./darknet detector test cfg/voc.data cfg/yolov3-tiny.cfg backup/yolov3-tiny_last.weights data/person.jpg
sudo ./darknet detector map cfg/voc.data cfg/yolov3-tiny.cfg backup/yolov3-voc_last.weights
sudo ./darknet detector recall cfg/voc.data cfg/yolov3-voc.cfg backup/yolov3-voc_final.weights
我训练了30000次,测试的map为70.68,结果还不错