目标检测算法之YOLOv3及YOLOV3-Tiny

Posted wx61de9b3447ec7

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了目标检测算法之YOLOv3及YOLOV3-Tiny相关的知识,希望对你有一定的参考价值。


前言

昨天稍微填上了YOLOv2损失函数的坑,然后我在知乎关注了一个有趣的问题,地址是:https://www.zhihu.com/question/357005177 。

这是我在上面写的一个回答:

目标检测算法之YOLOv3及YOLOV3-Tiny_损失函数

因此,这一节我们只用关注YOLOv3算法本身,训练的时候将它的损失函数认为和YOLOv2一样就好,Darknet以及很多开源代码都是这样来做的。

算法原理

YOLOv3应该是现在YOLO系列应用的最广泛的算法了,基本就很少有人做工程还用V2了。而YOLOv3的算法原理也很简单,就引入了2个东西,一个是残差模型,一个是FPN架构。FPN我们已经介绍过了,推文在这:​​目标检测算法之FPN​​ 残差结构后面梳理经典网络的时候应该会再介绍一遍。

残差模型Darknet-53

YOLOv3在YOLOv2提出的Darknet-19的基础上引入了残差模块,并进一步加深了网络,改进后的网络有53个卷积层,命名为Darknet-53,网络结构如下:

目标检测算法之YOLOv3及YOLOV3-Tiny_目标检测_02

同时为了说明Darknet-53的有效性,作者给出了在TitanX上,使用相同的条件将 256 × 256 256\\times 256 256×256的图片分别输入到以Darknet-19,Resnet-101,以及Resnet-152以及Darknet-53为基础网络的分类模型总,实验结果如下表:

目标检测算法之YOLOv3及YOLOV3-Tiny_损失函数_03

从结果来看,Darknet-53比ResNet-101的性能更好,而且速度是其1.5倍,Darknet-53与ResNet-152性能相似但速度几乎是其2倍。同时,Darknet-53相比于其它网络结构实现了每秒最高的浮点数计算量,说明其网络结构可以更好的利用GPU。

YOLOV3结构

一张非常详细的结构图,其中YOLOv3有三个输出,维度分别是:

( b a t c h s i z e , 52 , 52 , 75 ) (batchsize,52,52,75) (batchsize,52,52,75)

( b a t c h s i z e , 26 , 26 , 75 ) (batchsize,26,26,75) (batchsize,26,26,75)

( b a t c h s i z e , 13 , 13 , 75 ) (batchsize,13,13,75) (batchsize,13,13,75)

这里的75介绍过,代表的 3 × ( 20 + 5 ) 3\\times (20+5) 3×(20+5),其中20代表的是COCO数据集目标类别数,5代表的是每个目标预测框的 t x , t y , t w , t h , t o t_x,t_y,t_w,t_h,t_o tx​,ty​,tw​,th​,to​,3代表的是某一个特征图的Anchor,也即先验框的数目。所以YOLOv3一共有9个Anchor,不过被平均分在了3个特征层中,这也实现了多尺度检测。。。一不小心就讲完了?

目标检测算法之YOLOv3及YOLOV3-Tiny_深度学习_04

多尺度检测?

上一节讲完了。。。总结一下,YOLOv3借鉴了FPN的思想,从不同尺度提取特征。相比YOLOv2,YOLOv3提取最后3层特征图,不仅在每个特征图上分别独立做预测,同时通过将小特征图上采样到与大的特征图相同大小,然后与大的特征图拼接做进一步预测。用维度聚类的思想聚类出9种尺度的anchor box,将9种尺度的anchor box均匀的分配给3种尺度的特征图。

补充:YOLOv3-Tiny

或许对于速度要求比较高的项目,YOLOV3-tiny才是我们的首要选择,这个网络的原理不用多说了,就是在YOLOv3的基础上去掉了一些特征层,只保留了2个独立预测分支,具体的结构图如下:

目标检测算法之YOLOv3及YOLOV3-Tiny_目标检测_05

这个是工程下更加常用的。

后记

YOLOv3和YOLOv3-Tiny就讲完了,感觉就是水文,后面有机会就更新一下如何使用NCNN部署YOLOv3或者YOLOv3-tiny模型,如果我还记得住这件事情的话,哈哈。顺便说一句,目标检测系列的讲解还远远没有结束,不信可以看我公众号work那一栏里面的深度学习里的目标检测学习路线,还有超多坑需要慢慢填!!!


欢迎关注我的微信公众号GiantPadaCV,期待和你一起交流机器学习,深度学习,图像算法,优化技术,比赛及日常生活等。

目标检测算法之YOLOv3及YOLOV3-Tiny_损失函数_06



以上是关于目标检测算法之YOLOv3及YOLOV3-Tiny的主要内容,如果未能解决你的问题,请参考以下文章

opencv进阶-YOLOV3-tiny模型-实时物体检测

目标检测-YOLOv3

基于Python的智能视频分析之人数统计的多种实现

如何入门yolo目标检测?

如何入门yolo目标检测?

基于yolov3的行人目标检测算法在图像和视频中识别检测