关于YOLOv3目标检测算法的理解

算法介绍

YOLOv3是YOLOv1,v2的加强版,是one-stage的典型算法,在目标检测算法的思想上没并没有太多的改变,而是加入了当时最新的,表现最好的方案进行了融合。可能是作者当时沉迷推特有关,所以新加入的东西没用YOLOv2多。
先给出
关于YOLOv1目标检测算法的理解
关于YOLOv2目标检测算法的理解
强烈建议看完前面两篇再看YOLOv3,不然可能不知所云,而且v3作者写的很飘逸,当做你已经看过v1v2了,看原论文根本不可能看懂。
在此声明:
适度推特益脑,沉迷推特伤身。合理安排时间,享受健康生活。
在这里插入图片描述
在此值得一提的是,YOLOv3算法就2018年最顶尖算法之一,虽然它的论文写得特别随意,但不可否认它的价值。

主网络分析

YOLOv3主网络
本来想自己画图的,可是自己太懒了,然后我在博客上面发现了一张特别特别好的图,所以我就轻车熟路的操作了一波,这是图片来源,看不清的话就去看一下画这个图的作者的原博客。我觉得懂得主网络就懂得算法一半了。
在这里插入图片描述
整个网络分为两个部分:1.特征提取网络2.位置种类回归预测网络。特征提取网络是是采用Darknet-53,它比YOLOv2采用的Darknet-19特征的提取效果更好,详细看算法细节部分。
为了取得更好的目标检测效果,作者采取了类似SSD算法的多尺度思想来进行目标检测,一共分为3个尺度:大,中,小。Darknet网络一共将特征图缩小了32倍,先看最上面的那条网络,它连接的是Darknet的末端,特征图大小为13x13,擅长于大物体的预测。简单点来说,特征网络越深,那么提取的特征就越抽象,图片细节更少,而对整体概括性更好。而相对靠前的特征图,能够保留更多细节。
中间那条网络,(最下面那条网络同理)连接的是Darknet-53末端前一级的网络和最上面那条网络两条支路。第一条支路相对于末端网络保留了更多的细节。现在有一条疑问:为什么作者还有连接最上面那条支路呢?
先说concat操作,concat是拼接张量的函数,它并不是像残差网络一样各个元素之间相加,而是特征图的叠加。要保证图片大小一致,所以加了一个上采样用来还原图片大小。
作者之所以要连接最上面那条支路是因为经过上采样的那条支路特征图能够保留更多语义信息,而末端前一级的网络可以保留更多细节信息,两者结合,提取的效果会更好。
最下面那条网络也是这个道理,我就不赘述了。
至于输出大小为什么是13x13x255,26x26x255,52x52x255。YOLOv1讲的很清晰。
因为YOLO算法的处理思想是滑动窗口,并非传统的先滑动分块,如何再进行特征提取和分类,如果目标横跨两个滑块,大概率检测不出来,所以就得尽可能穷举,那么速度就会很慢很慢。
YOLO把整个目标检测过程看做一个回归,先进行特征提取,然后进行分块回归。简单点来说就是利用卷积的位置不变性和卷积的感受野特性,每进行一次3x3的卷积操作,形成的特征图上的每个点就来自于对于卷积前对应的9个点的值,而且位置相对不变。那么经过多次卷积之后,每个点提取的特征范围越来越大,呈现一种以中心提取为重点,逐渐往边缘扩散的趋势。例如13x13的特征图,就相当于对整张图片均匀进行上述操作,保证整个图片特征都被提取出来。那如何实现目标检测呢?
提取出来的特征在YOLOv1中是来全链接层来直接进行坐标与大小的回归,从YOLOv2以来都是用卷积来进行回归,作者为了提高训练效果,引入了先验框,这样大大提高了回归的效率。(具体请看我写的YOLOv2,详细介绍了先验框是如何产生的)
问题来了,那是不是同一个目标可能被相邻的两个先验框提取呢?当然了,所以作者为了避免这种情况采取了和YOLOv2一样的匹配策略。(看YOLOv2去!)
最后输出的结果13x13x255,其中255=3x(4+1+80),每个锚点会生成3个先验框,每个先验框预测x,y,w,h四个坐标预测值,及一个置信度还有80的种类。
其他的同理可得。

算法细节

bounding boxes prediction(包围框预测)
YOLOv3采用YOLO9000类似的对anchor boxes(锚点框)进行 dimension cluster(尺度聚类)来预测bounding boxes。网络对每个包围框预测4个坐标 t x t_x tx, t y t_y ty, t w t_w tw, t h t_h th
有以下公式:
在这里插入图片描述
其中( c x c_x cx, c y c_y cy)是cell相对于图片左上角的的偏移值,而 p w p_w pw, p h p_h ph为先验bounding boxes的长宽。
训练的损失函数为平方和损失函数。(和YOLOv2一样)
YOLO使用逻辑回归来预测每个包围框的客观得分(objectness)。
如果一个真实框与某一个先验框的重叠部分的比例值大于其他任何一个先验框,那个它的得分为1。如果先验框与真实框的重叠部分比例值并不是最大的,但是他的值也大于了阈值0.5,那我们就忽视这个预测。算法为每一个真实目标都匹配一个先验框,如果一个先验框并没有与任何一个真实目标相匹配,那么这并不会造成位置与种类的损失,仅仅是客观得分。也就是说客观得分是来去除多余的先验框,仅仅保留最佳的先验框。

种类预测
每个框使用多标签分类来预测包围框的类,作者并没有使用softmax进行分类,作者说对于整个算法良好的表现来看softmax并不影响。在训练期间,作者采用二分类交叉熵作为损失函数
在这里插入图片描述

这个公式能够让我们进入更复杂的领域,比如开放数据集,在这个数据集里面有很多意思重叠的标签,比如女人和人类。所以多标签分类更适合这里,而不是softmax只能预测一个类。
置信度预测
本来我不想说这个的,可能是我学习YOLO算法的跨度太长,所以我给忘记了为什么有一个置信度预测,我还问了学长这是干嘛的,最后我在YOLOv1论文中找到了设立它的初衷。
置信度预测是来预测真实框和预测框的IOU的,因为种类预测预测是为真实框下种类的条件概率,在实际预测中,我们不一定每次都能完美预测真实框的位置。
P r ( C l a s s ( i ) ∣ O b j e c t ) ∗ P r ( O b j e c t ) = P r ( C l a s s ( i ) ) Pr(Class (i) |Object) ∗ Pr(Object) = Pr(Class (i) ) Pr(Class(i)Object)Pr(Object)=Pr(Class(i))
两者相乘的值为最终种类预测值

多尺度预测
YOLOv3预测一个框采用3种不同的尺度,所以使用类似于特征金字塔网络来进行多尺度预测。最后预测出一个三维编码向量:包围框,置信度,类别预测。以COCO为例子,我们每一个尺度预测三个框,每个框4个坐标、1个客观性分数、80个类别。所以一共NxNx(3*(4+1+80))。对于了主网络的y1,y2,y3。
网络多次对特征图进行了上采样,这样有利于获得更多语义信息。从早期的特征图中可以获得更多细粒度的信息。
尺度聚类:采用和YOLOv2一样的方法,为三个尺度聚类出9个不同的bounding boxes priors(先验包围框)。分别为:
(10x13)、(16x30)、(33x23)、(30x61)、(62x45)、(59x119)、(116x90)、(156x198)、(373x326)

特征提取网络
YOLOv3采用与YOLOv2的Dark-19不同的Dark-53。这个网络中大量采用了1x1和3x3卷积和,并且增加了(shortcut connection )快捷连接。(参照残差网络的思想)
在这里插入图片描述
以下是ResNet-101,ResNet-152与DarkNet-19,DarkNet-53的对比:

性能对比
由图可知,Darknet-53与ResNet-152对比,Darknet-53的 Top-1正确率仅仅比ResNet低0.4%,而Top-5的正确率相当。但是对比FPSDarknet53比ResNet-152高了一倍多。
也就是在性能相当的情况下,Darknet-53的运算速度是ResNet152的2倍。
作者在训练过程中还采用了常规方法,例如,数据扩充、批量标准化等等,诸如此类。

算法不足

最后,被RetinaNet吊打:
在这里插入图片描述
除了速度快了3.8倍,在识别率方面被吊打。
无论是YOLOv1还是YOLOv2,都是在大物体的识别方面很强,而在小物体识别方面就弱很多。所以作者致力于小物体识别率的提高上来,所以YOLOv3在小物体方面性能突出,但在大中物体上的性能就相对就差,很奇怪吧!作者也觉得哈哈。
差不多就上面这些,因为原作者论文省略的很多内容,所以我写这篇博客写的异常困难,要到处找资料,故我觉得的细枝末节我也不讲了。
最后,作者能力有限,如果有哪些地方不够清晰或者理解错误希望指正!
我要去学RetinaNet去了,他好像更牛逼耶!

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值