概述
Darknet-YOLOv3 部署测试笔记
1. 安装部署
安装部署在Linux环境,windows环境安装部署见参考1
git clone https://github.com/pjreddie/darknet
cd darknet
make -j $(nproc)
获取已经训练好的权值:
wget https://pjreddie.com/media/files/yolov3.weights
2. 检测示例
2.1 检测图片
1) 检测一张图片:
./darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg
./darknet detector test cfg/coco.data cfg/yolov3.cfg yolov3.weights data/dog.jpg
2) 检测多张图片:
./darknet detect cfg/yolov3.cfg yolov3.weights
接下来需要手动输入图片路径
4) 设置检测时的阈值
./darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg -thresh 0
Darknet会输出检测的目标,对应的置信度和所用的时间。
因为Darknet编译的时候没有使用OpenCV,所以没法直接可视化展示检测结果,结果会保存在 predictions.png。
在CPU上处理每张图片大约需要6-12秒(官网上写的,怀疑怎么会这么慢)
2.2 检测视频
1) 使用摄像头检测,使用 -c <num> 可以更改不同的摄像头。
./darknet detector demo cfg/coco.data cfg/yolov3.cfg yolov3.weights
2)检测离线视频
./darknet detector demo cfg/coco.data cfg/yolov3.cfg yolov3.weights <video file>
3. 训练YOLO - 使用PASCAL数据集
3.1 获取Pascal VOC 数据
wget https://pjreddie.com/media/files/VOCtrainval_11-May-2012.tar
wget https://pjreddie.com/media/files/VOCtrainval_06-Nov-2007.tar
wget https://pjreddie.com/media/files/VOCtest_06-Nov-2007.tar
tar xf VOCtrainval_11-May-2012.tar
tar xf VOCtrainval_06-Nov-2007.tar
tar xf VOCtest_06-Nov-2007.tar
解压后,将会得到一个VOCdevkit/文件夹
3.2 生成VOC格式的标签
darknet 需要的数据格式,是每张图片对应一个txt,内容如下:
<object-class> <x> <y> <width> <height>
其中x,y,width,height是相对于图像width和height 的值。 可以使用scripts/voc_label.py脚本进行生成。
wget https://pjreddie.com/media/files/voc_label.py
python voc_label.py
执行完上面脚本,标签文件会生成在VOCdevkit/VOC2007/labels/和VOCdevkit/VOC2012/labels/ 下:
ls
2007_test.txt VOCdevkit
2007_train.txt voc_label.py
2007_val.txt VOCtest_06-Nov-2007.tar
2012_train.txt VOCtrainval_06-Nov-2007.tar
2012_val.txt VOCtrainval_11-May-2012.tar
把2007数据和2012数据合并到一起
cat 2007_train.txt 2007_val.txt 2012_*.txt > train.txt
3.3 修改训练的配置文件 cfg/voc.data
1 classes= 20
2 train = <path-to-voc>/train.txt
3 valid = <path-to-voc>2007_test.txt
4 names = data/voc.names
5 backup = backup
3.4 修改训练的配置文件 cfg/yolov3.cfg
filters=(classes+5)x3
如classes=1 时,filters=18
classes=2 时,filters=21
classes=80 时,filters=255
3.5 修改训练的配置文件 data/voc.names
修改成自己想要训练的类别,每一类占一行
3.6 下载预训练的卷积权值
在ImageNet上预训练的网络模型:
wget https://pjreddie.com/media/files/darknet53.conv.74
3.7 开始训练模型
./darknet detector train cfg/voc.data cfg/yolov3-voc.cfg darknet53.conv.74
# 训练时将控制台中的输出内容存储到.log文件中
./darknet detector train cfg/voc.data cfg/yolov3-voc.cfg darknet53.conv.74 2>&1 | tee xxx.log
# 多GPU训练,并且续训练
./darknet detector train -gpus 0,1,2,3 cfg/voc.data cfg/yolov3-voc.cfg xxx.backup 2>&1 | tee xxx.log
4. 验证测试模型
验证模型并计算AP值
./darknet detector valid cfg/voc.data cfg/yolov3-voc.cfg backup/VOC/yolov3-voc_final.weights -out "" -gpu 0 -thresh .5
注意:-out “” 双引号其实可以加内容的,但建议初次使用时不要加自定义内容,网上很多教程都加了,其实一点用都没有。之后可以再慢慢探索。
运行结束后,在results文件夹下每个类别会对应生成一个.txt文件。然后见参考2。
生成预测结果
./darknet detector valid <data_cfg> <test_cfg> <weights> <out_file>
<test_cfg> 文件中batch和subdivisions两项必须为1。
结果生成在 <data_cfg> 的results指定的目录下以 <out_file> 开头的若干文件中,若 <data_cfg> 没有指定results,那么默认为 <darknet_root> /results。
计算recall
./darknet detector recall <data_cfg> <test_cfg> <weights>
<test_cfg>文件中batch和subdivisions两项必须为1。
输出在stderr里,重定向时请注意。
RPs/Img、IOU、Recall都是到当前测试图片的均值。
detector.c中对目录处理有错误,可以参照validate_detector对validate_detector_recall最开始几行的处理进行修改。
参考
- Yolo-v3 and Yolo-v2 for Windows and Linux
- YOLOv3 mAP计算教程
最后
以上就是害羞毛巾为你收集整理的Darknet-YOLOv3 部署测试笔记Darknet-YOLOv3 部署测试笔记参考的全部内容,希望文章能够帮你解决Darknet-YOLOv3 部署测试笔记Darknet-YOLOv3 部署测试笔记参考所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复