从0开始实现目标检测——实践篇

根据上一篇《从0开始实现目标检测——原理篇》的讲述,我们选择了YOLOv3作为模型,那么本篇文章将继续接着上篇的内容,自己动手基于YOLOv3实现模型训练和mAP的计算。 在自己动手的这个过程中,一边解决遇到的问题,一边体会YOLOv3的原理,让我们学习起来吧。

一. YOLOv3之初体验

YOLOv3使用参考官网教程:https://pjreddie.com/darknet/yolo/

1. 安装YOLOv3并体验VOC数据

(1). YOLOv3安装

首先就是下载YOLOv3项目并安装了,如下:

git clone https://github.com/pjreddie/darknet
cd darknet
make

接着就是下载YOLOv3已经提前训练好的一个模型体验下效果了:

wget https://pjreddie.com/media/files/yolov3.weights
./darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg

这个条命令运行后,可以看到在项目的安装目录下多了一个predictions.jpg的文件,这就是检查结果的图片。结果如图:

命令也输出了各个网络层的输入和输出,以及最后识别出多少个物体分类和属于这个分类的概率。如下图所示:

上图显示了卷积网络各层的计算过程,下图显示了整张图片检测的耗时,以及图中的物品类别和对应的概率。结果如图所示:

对着输出和结果图片,可以看到识别的准确率还是很高的,但是也相当耗时,耗费了18.66秒。YOLOv3提供了一个层数只有13层的tiny模型,识别速度会更快,下载体验下:

wget https://pjreddie.com/media/files/yolov3-tiny.weights
./darknet detect cfg/yolov3-tiny.cfg yolov3-tiny.weights data/dog.jpg

识别结果如下:

对于同样的图片,可以看到识别耗时从18.66秒直接降到了0.6秒,时间居然能下降97%,当然准确度也下降了。结果图片如图所示:

从结果中tiny的模型准确度可能的确不高,从图中能看出来把一辆truck识别成了2个car和一个truck的组合。

(2). 下载VOC数据

在体验了几次YOLOv3的检测效果后,开始思考如何才能训练自己的模型呢?很自然的想法是先按照YOLOv3开放的数据集做训练,跑通流程后再利用自己的数据集训练。接着就开始我们的第一步,利用开放的数据集进行训练。

首先使用在公开的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

下载完毕数据集后,我们还需要对转化数据集的标记格式为YOLOv3的标记方式,YOLOv3采用.txt文件来保存标记,格式如下:

<object-class> <x> <y> <width> <height>

其中object-class就是目标的种类index,x, y, width, height分别是图中目标的起始坐标和宽高。也就是之前《从0开始实现目标检测——原理篇》提到的。

YOLOv3也提供一个脚本程序,将VOC数据转化并标记为YOLO格式的标记,我们需要下载转化程序并进行转化:

wget https://pjreddie.com/media/files
  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

guohuang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值