ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

读论文(2)——YOLO原作者本人的后续改进

2021-10-21 15:58:31  阅读:275  来源: 互联网

标签:box YOLO 原作者 IOU 论文 v3 v2 作者


前言

YOLO发表一年后,论文作者提出YOLO的改进版YOLO v2和YOLO9000,之后又提出YOLO v3,随后便宣布退出计算机视觉的研究领域,现在我们看到的YOLO v4和v5版本都是其他人进行更新的。本文主要简单写写对v2和v3版本论文的一些理解,然后如果之后有时间再去研究v4和v5版本。

YOLO v2与YOLO9000

原始论文题目为《YOLO9000:Better,Faster,Stronger》,这个在arxiv和IEEE explore中都能找到。从题目中就可以看出,作者写v2的目的就是为了让YOLO变得Better(精度更好),Faster(速度更快),而写9000的目的是Stronger(能力更强、分类更多)。

Better

来看看作者在Better上做出的尝试和取得的成果:
在这里插入图片描述
由这个表,可以看出为了提高模型的mAP,作者做了很多很多的尝试,并且写出了做这些尝试对结果的影响,下面来展开说明。
1.批标准化(Batch Normalization)
简单来说就是在卷积层后引入了一种正则化方法,使得网络不需要dropout也可以防止过拟合。
对数据做标准化的好处是使得在输出值在输入激活函数前就被搞到0附近,避开sigmoid函数等激活函数的饱和区,让梯度不接近0,加速训练。但是如果对每个样本数据都计算方差和均值然后再归一化显然计算量特别大,因此就改为在训练过程中对每个神经元的输出响应按预先设置好的batch_size做批归一化,对每个神经元单独训练一组参数 γ β \gamma\beta γβ,满足:
y ( k ) = γ ( k ) x ^ ( k ) + β ( k ) y^{(k)}= \gamma^{(k)}\hat{x}^{(k)}+\beta^{(k)} y(k)=γ(k)x^(k)+β(k)
然后在测试时,均值、方差、 γ \gamma γ、 β \beta β全用训练阶段全局求出的常数们,这就相当于做了线性变换。
这个处理提升了2%的mAP。

2.高分辨率分类器
原来的目标检测训练过程,其分类器都是在小分辨率输入中进行训练的,而目标检测任务则是在大分辨率输入下进行的,因此这中间有一个转化的过程,YOLO v2就抛弃了这种转化的过程,在v1的基础上做fine tune(微调),直接在大分辨率(448*448)上运行10个epoch,让卷积核适应高分辨率的输入,专心去搞目标检测任务。
这个处理提升了4%的mAP。

3.Anchor Boxes的引入
作者借鉴了Faster R-CNN等网络的思想,预先根据要识别的东西,事先确定出和其形状相似的框,用这些框去做目标检测得到bounding box,这样就避免了v1的bounding box进行野蛮的生长,让识别更加稳定也更加准确。引入后,预测框的个数大大增加了,能多达 1000 多个。
这里还做了把图片缩到416x416的操作,这是为了让feature map尺寸为奇数,中心可以落在一个cell里;下采样间隔32,输出13*13的feature map。
这个操作使得mAP略有降低,但是大大提高了recall,也算是提升了性能。

4.尺寸聚类——得到Anchor Box
Anchor Box既然非常好,那么怎么得到呢?传统的方法是根据人工经验来选,但是这样网络自主学习的效果就差了,所以改用自动选取的手段来选Anchor Box,这里作者想到了k-means。通过kmeans,就能得到k个尺寸比例。然后就要选聚类的度量依据了,欧氏距离对尺寸敏感,对大小框不能做到一视同仁,所以提出如下的一种距离:
d ( b o x , c e n t r o i d ) = 1 − I O U ( b o x , c e n t r o i d ) d(box,centroid)=1-IOU(box,centroid) d(box,centroid)=1−IOU(box,centroid)
这里的IOU指的是某个标好的框与聚类中心框的IOU。
最后k值通过实验取k=5比较好,这是对复杂性和recall做的权衡后得出的结果。实验表明,手工选取时聚9类的结果的平均IOU才和直接k-means聚5类时差不多,因此k-means的引入是很成功的。

5.直接定位预测
引入Anchor Box之后,还有一个问题需要解决——模型的稳定性。
模型的不稳定性来源于中心坐标(x,y)的预测,一般来说,x,y经过如下计算获得:
x = ( t x ∗ w a ) + w a , y = ( t y ∗ h a ) + h a x=(t_x*w_a)+w_a , y=(t_y*h_a)+h_a x=(tx​∗wa​)+wa​,y=(ty​∗ha​)+ha​
概括为一句话,预测框中心等于输出偏移量与Anchor尺寸的乘积再加上Anchor中心,这样会使得预测框中心可以在图中任意位置出现,大大降低了稳定性。
因此我们要想办法给他限定在当前cell中,作者给出方法:
在这里插入图片描述
其中cx是cell的左上角坐标, σ ( t x ) \sigma(t_x) σ(tx​)代表对偏移量tx作用了一个sigmoid函数,这样bx就被限制在cell中了。bw无所谓大小,因为表示的预测框的尺寸,pw是Anchor的尺寸。
所以实际上,作者还是借助YOLOv1的做法,继续使用 bounding box 相对于 cell的偏移这样一个思想去做,所以可以限制中心让他不乱跑。

6.细粒度特征
这个细粒度特征的提取过程很有意思,一般来讲传统方法我们会用不同的大小的模板去提取特征来形成尺度金字塔,但是这里我们用的是神经网络,因此我们可以直接从前面的层提取较表层的特征然后给他接到最终的特征里。具体操作是从2626512的feature map中进行跨行跨列拆分,拆成13132048的feature map。
这个尝试让模型提升了1%的mAP。

7.多尺度训练
YOLO 作者不想让YOLOv2的模型只局限于416x416这单一尺寸的图片,所以训练过程当中,每经过10个epoch的训练,输入图像尺寸会发生变化。
多尺度训练使得 YOLOv2 可以在速度和精度上做一个很好的平衡。

Faster

快本身就是YOLO的最大优势,这一次作者也是带来了新模型——Darknet-19,这个模型大大减少了参数量和运算量,网络如下图所示:
在这里插入图片描述
YOLO v2的网络有如下特点:
(1)借助GooLeNet架构;
(2)借鉴VGG的3×3卷积核架构,并且在每个池化层之后,将卷积核的个数翻倍;
(3)借鉴NIN运用GAP层,在3x3卷积核之间插入1x1卷积层
(4)加入BN层,防止过拟合

Stronger

这里的Stronger就是YOLO9000这个名字的由来,作者提出了一种目标检测和目标分类联合训练的方法,这里略讲。
当遇到目标检测数据集中的图片时,模型反向传播更新整个损失函数。
当遇到目标分类数据集中的图片时,反向传播只更新分类的那一部分结构。
另外,将分类进行层次化处理,使得YOLO能够识别超过 9000 种类别,这就是YOLO9000。

YOLO v3

原始论文题目是《YOLO v3:An Incremental Improvement》,文章可以在arxiv上找到,原文很短,而且作者写的已经基本上放飞自我了。个人感觉比起论文,v3更像一篇随笔,而且作者自己在论文中说,是因为他的另一篇在投论文需要引用v3的改进,所以才写了这篇论文。
YOLO v3相比v2有所改进,但是个人感觉改进的不多,主要有以下几点:
1.新的置信度计算方法
在v1,v2中,我们用IOU去衡量置信度,但是实验表明,很多预测框与真正的标注框的IOU最高也就只有0.7,且IOU对像素偏移太过于敏感,不利于学习小目标的目标检测,因此对置信度算法做了改进。
新算法规定,用与标注框(Ground Truth)的IOU最大的预测框(bounding box)来拟合标注框,且将这个预测框的置信度标签值设为1。这样就能突出“榜样”的作用,更方便学习其中最典型的框,让模型效果更好。

2.分类时的算法改进
v3没用采用softmax去预测类别,而是对每个类别都用sigmoid函数去处理,据作者说这样效果更好。

3.多尺度目标检测方法
这是v3改动比较大的一个地方,这里的多尺度方法感觉有那么一点尺度金字塔的味道。这里用一个例子来说明这个多尺度方法:
以输入尺寸为416×416的图像为例,依次下采样32倍、16倍、8倍,得到三组分块,依次为13×13,26×26和52×52,他们用来检测的物体尺寸也依次由大到小,然后分别以这三种去生成用于检测的anchor,这样就解决了前两代对小目标检测效果不好的问题。

4.新的骨干网络
作者为v3版本升级了一个新的网络DarkNet-53,网络结构如下所示:
在这里插入图片描述

之后作者还列举了几个尝试了但是没用的方案,如focal loss、双IOU等等,并觉得v3已经到了一种“局部最优”的状态了。
文章的最后,作者还展开了对人工智能道德与伦理问题的思考,真的就是纯粹的在做记录、写随笔。不过即便如此,我们还是能透过作者那些俏皮话看到YOLO这个模型的魅力所在。虽然原作者退出了YOLO的研究,但是后继者们却仍然没有放弃对这个模型的改进,从20年的v4、v5再到21年的YOLOX,仍有很多人被这个模型深深的吸引,并愿意为之付出努力。YOLO是第一个可用且实时的目标检测方法,也是第一个将目标检测直接转化为单阶段、转化为回归问题的模型,它的提出即充满了“独到之处”又彰显着“大道至简”。

向Joseph Redmon致敬!

标签:box,YOLO,原作者,IOU,论文,v3,v2,作者
来源: https://blog.csdn.net/weixin_44226427/article/details/120866636

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有