目标检测-DarkNet使用引言1 .安装darknet2. yolo介绍与2.1focalloss相比,性能领先2.2以极低的成本运行速度和精度的trade-off2.3产业界的广泛应用DarkNet3.1
引言
本文是目标检测专栏的第一篇文章,首先从比较经典的DarkNet出发。 作为检测专栏的第一篇文章,本文的主要内容是DarkNet的应用,很少涉及代码原理水平。 随后,DarkNet核心码解密和Caffe&; &; 发表关于移植到Pytorch深度学习框架的博文。
1 .安装DarkNet安装DarkNet比Caffe简单。 由于篇幅所限和文章重点设计,此处不再赘述。 具体请参考DarkNet官方网站的安装手册。 如果有什么问题,欢迎交流信息。
2 .介绍2 . Yolo的DarkNet的第一位接触者可能有这样的疑问。 DarkNet是像Caffe一样的深度学习框架,还是像AlexNet一样的卷积神经网络? 答案都是看具体的使用场景。 例如,我即将发售的Yolov3将从DarkNet移植到Caffe和Pytorch。 此时,DarkNet是深度学习框架。 本文后面提到的YOLOV3的改进主要在于多尺度训练和性能更好的骨干网络DarkNet的提出,这种情况下是指CNN网络。 但我们认为,DarkNet作为深度学习框架的属性,只是YOLOV3作者为了实现自己的论文思想而反复制造车轮,获得了一个简单的深度学习框架,从出生开始就已经被淘汰。 因为大部分的APP应用都是移植到Caffe或这个Pytorch上使用。
总的来说,Yolo的特点是实时且性能出色。
onapascaltitanxitprocessesimagesat 30 fpsandhasamapof
57.9% on COCO test-dev。
这样说话可能会有点抽象,但可以从以下三个角度直观地理解Yolo的强度。
2.1与focalloss相比,性能的引领如图1所示,Yolov3-608是retina net-101-800 (与focalloss相比,我准备看我关于focalloss的这篇文章进行写作。 我打算写。 (在与mAP几乎相同的情况下,几乎快了4倍。
2.2 trade-off moreover,youcaneasilytradeoffbetweenspeedandaccuracysimplyby,以非常低的成本实现速度和精度
更改大小为of the model,no retraining required!
了解无需重新训练即可实现速度和精度的折衷。 可以用官方网站上的这句话来看:
yolo v3 usesafewtrickstoimprovetrainingandincreaseperformance、
including :http://www.Sina.com /,a better backbone classifier,and
模式。
多尺度预测是指可以通过自由调节前向网络的大小来改变网络的计算量,在一定程度上牺牲精度来提高速度。 另一方面,有趣的是,在可以自由调整网络大小的网络中,网络名称也以分辨率表示,不再根据主干网络的层数进行区分。 eg之前的产品包括RetinaNet-50、RetinaNet-101和RetinaNet-101。
2.3产业界的广泛应用RT应是目前产业界应用最广泛的检测网络。 SSD和Faster Rcnn基本上没有随访。
运行DarkNet 3.1以使用官方预迁移模型检测目标与外部网下载相关,可能会降低速度。 模型已经被我上传到百度云盘了。 需要的学生可以按照文章末尾的百度云盘链接1下载。
以上,在成功安装DarkNet后,以及获得正式的预培训模式后,请首先尝试“画出框架”并运行。
的双曲正弦值
./darknetdetectcfg/yolo v3.cfgyolov3. weights data/dog.jpg注意:
训练DarkNet只是用公式的模型、网络和数据画个框框,不能算是入门。 至少我们需要自己训练。 第四节介绍使用公共数据集VOC训练模型的一个例子。 重点理解培训所需的标签形式。
4.1数据集计划先下载voc数据,可从文章末尾的百度网盘链接2下载。
解冻包:
tarxfvoctrainval _ 11-may-2012.tartarxfvoctrainval _ 06-nov-2007.tartarxfvoctest _ 06-nov-2007
.tar 4.2标签制作总的来讲,训练需要两个标签文件:
文件列表的txt
含有目标类别和坐标信息的txt
<object-class> <x> <y> <width> <height>注: x, y, width, height是相对于原图坐标的归一化坐标,x和y是指目标坐标框中心。
这种通用的公开数据集,DarkNet已经提供了生成该格式文件的脚本工具"voc_label.py",获取并执行该脚本。
wget https://pjreddie.com/media/files/voc_label.pypython voc_label.py VOC作为一个分类、检测和分割都适用的数据集,数据集的目录结构和txt比较多,对于检测任务来讲,我们只需要其中的部分信息即可。
它的输入有:
它的输出有:
与脚本同级目录下的5个txtlabels文件夹下的类别-坐标txt
对于输出1,执行如下指令,将2007年份和2012年份,训练的文件列表进行合并
cat 2007_train.txt 2007_val.txt 2012_*.txt > train.txt 至此,训练图片文件列表和测试图片文件列表都已生成,分别为train.txt和2007_test.txt。该txt内部的内容大概是这样的情形:
对于输出2,每一个txt里面的类别和归一化坐标大概是这种情形:
至此数据集和标签已修改至训练框架所需格式
4.3 修改配置修改数据配置文件:cfg/voc.data,将数据路径修改至自己的数据路径
classes= 20train = /home/zht/data/train.txtvalid = /home/zht/data/2007_test.txtnames = data/voc.namesbackup = backup 4.4 训练开始训练
./darknet detector train cfg/voc.data cfg/yolov3-voc.cfg darknet53.conv.74 坑:在训练之前,先将yolov3-voc.cfg中的batchsize修改为训练模式,否则训练打印会全是nan。
训练log:
1.预训练模型
链接:https://pan.baidu.com/s/1oK-E56TE5LOxZCiL7sK1JQ
提取码:x05j
2.VOC数据集
链接:https://pan.baidu.com/s/1oK-E56TE5LOxZCiL7sK1JQ
提取码:x05j
1. DarkNet官网