目标检测CNN经典网络(五)YOLO系列(V1、V2)

YOLO(You Only Look Once)是与R-CNN系列不用的一种目标检测方法,其实在我看R-CNN系列文章时,我就思考能不能直接输入一张图像,就卷积最后得到x,y,w,h,c五个参数啊,直接让它暴力预测!嘿嘿,yolo就是这么干的!

YOLO-V1

我理解的YOLO-V1相当于采取比较暴力的检测方案,网络结构如下图所示,其只用了一个卷积网络实现,更加简单。

网络结构

首先输入一行图片,这里它把它resize得到更大的尺寸图片(两倍分辨率),其目的是为了将物体方法更利于目标的检测。
之后就是经过一个类似于GoogLeNet的卷积网络最后它得到一个7*7*30的块,这个时最关键的。
这个块反映什么含义呢?目标分类中我们直接让他输出1*10对应一个10分类问题,那10个元素就是对应的分值。7*7*30反应什么呢?作者这样定义,7*7个部分,代表着把原图分成7*7份,每个份代表着以该区域为中心区域找物体,哈哈你会想是不是太少了,这么大的图分这么几份,确实是,最后V1版本发现搞出来对于小目标分类不太好!!!尼玛每个部分30个值啥意思呢?这30个值分别是2*(4+1)+20,20代表20个类别的打分,就是说这个区域要是有目标属于每个目标的分值多少!2呢?2代表以前面说的区域中心,展开上下,左右两个区域检测,每个展开对应着4+1分别是X,Y,W,H,还有一个是置信度,它属于目标的可信程度~,着好像看着分的挺好,实际上把目标函数设计好,程序就能按照这个训练!

目标检测CNN经典网络(五)YOLO系列(V1、V2)_第1张图片

损失函数

损失函数定义如下图所示(该图从原文中截取),一共五行。
第一行计算坐标的欧式距离,把两个展开区域一起求和,前面有个系数代表权重;
第二行是对于宽度高度的计算同上;
第三行和第四行都是可信度的损失,分别是物体的可信度损失和非物体的可信度误差;
第五行是分类结果的损失;
其中S表示网格数,在这里是7x7。B表示每个单元格预测框的个数,这里是2。

目标检测CNN经典网络(五)YOLO系列(V1、V2)_第2张图片

总结

总体来说,YOLO-V1给出了更好的端到端的一种目标检测方案,实现了不错的效果,检测实时性更高,但是对于小目标,群体目标检测的性能不是很好。

YOLO-V2

V2版本在V1版本上做了很多优良,引入了当前比较优良的方案,实现了在准确率与精确度比较折中的方法。

1BatchNormalization
BN能够给模型收敛带来显著地提升,同时也消除了其他形式正则化的必要。作者在每层卷积层的后面加入BN后,在mAP上提升了2%。BN也有助于正则化模型。有了BN便可以去掉用dropout来避免模型过拟合的操作。BN层的添加直接将mAP硬拔了2个百分点,这一操作在yolo_v3上依然有所保留,BN层从v2开始便成了yolo算法的标配。
2

3、Convolutional With Anchor Boxes
在RPN网络中有一个Anchor的概念,在YOLO-V2版本引入了Anchor概念。YOLO(指YOLO v1)只能在每张图给出98个预测框,但是使用了anchor boxes机制之后模型能预测超过1000个框。这使得准确率小幅度降低,但召回率大大提高。
4、Dimension Clusters
在3中提到引入Anchor的思想,但是多少个框怎么设置呢,尺寸呢?在FasterR-CNN是设计固定的框,固定的比例。这里YOLO-V2采取用K-means聚类的方法,最终得到下图结果。其对两个数据集进行了测试,选区几个框效果好,最后YOLO-V2选择了5个框,比例如右图所示。

这里我理解的应该是拿来数据集,标注数据的目标X,Y,W,H四个值,然后实验给出一堆我们要考察的框即使W*,H*,然后去考察IOU,对数据集每一个数据(X,Y,W,H),去看它与框(X,Y,W*,H*)哪个距离最近。离谁进就分到那一拨,完事分好了就聚类就可以了。

目标检测CNN经典网络(五)YOLO系列(V1、V2)_第3张图片
作者采用的5种anchor(Cluster IOU)的Avg IOU是61,而采用9种Anchor Boxes的Faster RCNN的Avg IOU是60.9,也就是说本文仅选取5种box就能达到Faster RCNN的9中box的效果,所以在不提升计算量的情况下用5就很好。

5

6、Fine-Grained Features
这里主要是添加了一个层:passthrough layer。其实就是把26*26的feature map和最后一层13*13的feature map进行连接,有点像ResNet。其实就是对于一个小的目标来说卷积到最后特征可能都消失了,把前面的特征引导到最后一层预测可能也能有较好的性能对于预测小目标。

7、Multi-Scale Training
为了让YOLOv2模型更加robust,作者引入了Muinti-Scale Training,简单讲就是在训练时输入图像的size是动态变化的,这样能够提高网络的鲁棒性,感觉类似数据增强。

参考文献

[1]YOLO-V1论文原文
https://arxiv.org/pdf/1506.02640.pdf
[2]YOLO系列之yolo v1
https://blog.csdn.net/leviopku/article/details/82588059
[3]YOLO-V2论文原文
https://arxiv.org/pdf/1612.08242v1.pdf
[4]YOLO v2算法详解
https://blog.csdn.net/u014380165/article/details/77961414

你可能感兴趣的:(计算机视觉,计算机视觉CV)