YOLOv2论文理解

YOLOv2在YOLO的基础上引入了Batch Normalization、高分辨率分类器、Anchor Boxes等改进,提升了物体检测的精度和速度。通过联合训练方法,模型能同时处理分类和检测任务,识别类别大幅增加。文章详细探讨了YOLOv2的改进点,包括BN层的作用、高分辨率分类、Anchor Boxes的使用以及Multi-Scale Training等,并指出YOLO9000在实践中的挑战。
摘要由CSDN通过智能技术生成

YOLO9000:Better, Faster, Stronger

论文YOLO9000: Better, Faster, Stronger的主要内容有三点:
1、作者提出了YOLOv2。
YOLOv2在YOLOv1的基础上,使用新的网络结构(darknet19)和技巧(Batch Normalization、High Resolution Classifier、Convolutional With Anchor Boxes等),提高了检测速度和检测精度。
2、作者提出了一种联合训练方法,可以同时使用检测数据集和分类数据集来训练检测模型,用分层的观点对物体分类,用检测数据集学习准确预测物体的位置,用分类数据集来增加可识别的类别量,提升鲁棒性。
3、作者基于YOLOv2提出了YOLO9000,可以实时检测九千多种物体。

我参考论文和代码进行了实验,YOLOv2相对于YOLOv1有很明显的提升,但是YOLO9000使用感受并不好。YOLO9000的主要问题在于很难调整合适的分层阈值,同时很多物体的检测精度过低。

由于工作和学习中对YOLOv2的研究比较多,对YOLO9000的研究并不深入,所以本文仅记录对YOLOv2的理解。

Better

YOLO相较于其他的state-of-the-art的检测系统有一些缺陷,主要表现在两点:
1、和Fast R-CNN相比,YOLO会产生较多的bounding boxes的定位错误。
2、和基于region proposal的检测系统相比,YOLO的Recall较低。

机器视觉的发展有着神经网络越来越大、越来越深的趋势。现在的检测系统,更好的检测性能往往伴随着更大的神经网络或者是多个检测模型的集成。YOLO的目标是高精度实时检测,所以期望在不增大网络、精度不下降的前提下来对定位错误和低Recall进行改善,为此作者尝试了一系列方法(如图所示)。
这里写图片描述

Batch Normalization

BN在消除对其他正则项依赖的同时,在帮助模型收敛方面有显著作用。通过对每个卷积层添加BN,YOLO的mAP有了2%的提升。BN对模型的泛化很有帮助,加入BN后,去掉了dropout模型依旧没有过拟合。

High Resolution Classifier

所有state-of-the-art的检测方法都在ImageNet上对分类器进行了预训练。从AlexNet开始,多数分类器都把输入图像resize到256 * 256以下,这会容易丢失一些小物体的信息。
YOLOv1先使用224 * 224的分辨率来训练分类网络,在训练检测网络的时候再切换到448 * 448的分辨率,这意味着YOLOv1的卷积层要重新适应新的分辨率同时YOLOv1的网络还要学习检测网络。
现在,YOLOv2直接使用448 * 448的分辨率来fine tune分类网络,好让网络可以调整filters来适应高分辨率。然后再用这个结果来fine tune检测网络。
使用高分辨率的分类网络提升了将近4%的mAP。

Convolutional With Anchor Boxes

YOLOv1使用卷积层之后的全连接层来直接预测bounding boxes的坐标。Faster R-CNN的做法和YOLO不同,使用精心挑选的anchor boxes来预测bounding boxes的坐标。Faster R-CNN的region proposal network(RPN)使用全卷积网络来预测相对anchor boxes的offsets和confidences。因为预测层是个卷积层,RPN在一个特征图上预测所有bounding boxes的offsets。和直接预测坐标相比,预测offsets简化了问题,而且网络更容易学习。
YOLOv2去掉了全连接层,使用anchor boxes预测bounding boxes。
YOLOv2一个池化层,使得卷积层的输出有更高的分辨率。
YOLOv2将输入图像的尺寸从448 * 448缩减到416 * 416,这样特征图的输出就是一个奇数,有一个中心栅格。作者观察到,有很多物体,尤其是较大的物体往往会位于图像的中心。有一个中心栅格的话可以用中心栅格专门去负责预测这些中心落在图像中心附近的物体,而不需要图像中心附近的4个栅格去预测这些物体。YOLOv2对图像进行了32倍的降采样,最终输出的特征图尺寸是13 * 13。

使用anchor boxes预测坐标的同时,YOLOv2还对对conditional class probability的预测机制和空间位置(栅格)做了解耦。
在YOLOv1将输入图像划分为S*S的栅格,每一个栅格预测B个bounding boxes,以及这些bounding boxes的confidence scores。
每一个栅格还要预测C个 conditional class probability(条件类别概率):Pr(Classi|Object)。即在一个栅格包含一个Object的前提下,它属于某个类的概率。且每个栅格预测一组(C个)类概率,而不考虑框B的数量。
YOLOv2不再由栅格去预测条件类别概率,而由Bounding boxes去预测。在YOLOv1中每个栅格只有1组条件类别概率,而在YOLOv2中,因为每个栅格有B个bounding boxes,所以有B组条件类别概率。
在YOLOv1中输出的维度为S * S * (B * 5 + C ),而YOLOv2为S * S * (B * (5 + C))。
这里写图片描述

使用anchor boxes, 模型的的精度有一点点下降,但是Recall有大幅上升。没有anchor box,我们的中间模型的mAP为69.5,Recall为81%。使用anchor boxes 模型的mAP为69.2,Recall为88%。尽管mAP有轻微的下降,但是Recall的增加意味着模型有更多的改进空间。

Dimension Clusters

尝试在YOLO中使用anchor boxes的过程中遇到了两个问题,第一个问题是如何选择anchor boxes。Faster R-CNN的anchor boxes是手工精心挑选的,但未必是最好的。虽然神经网络在训练过程中会逐渐学着调整预测的bounding boxes,让预测更合理,但有好的anchor boxes帮助可以神经网络让预测更简单。
机器学习的本质是学习数据中的概率分布,手工挑选的anchor boxes未必很好的符合训练集ROI的概率分布,使用K-means从训练集中聚类得到的anchor boxes可能更好。
YOLOv2中的anchor boxes是通过k-means在训练集中学得的。值得注意的是,因为使用欧氏距离会让大的bounding boxes比小的bounding boxes产生更多的error,而我们希望能通过anchor boxes获得好的IOU scores,并且IOU scores是与box的尺寸无关的。
为此作者定义了新的距离公式:

d(box,centroid)=1IOU(box,centroid)

作者使用了一系列k的值运行k-means,并画出了平均IOU,如图所示:
这里写图片描述
和使用手工挑选的anchor boxes相比,使用K-means得到的anchor boxes表现更好。使用5个k-means得到的anchor boxes的性能(IOU 61.0)和使用9个手工挑选的anchor boxes的性能(IOU 60.9)相当。这意味着使用k-means获取anchor boxes来预测bounding boxes让模型更容易学习如何预测bounding boxes。
这里写图片描述

Direct location prediction

尝试在YOLO中使用anchor boxes的过程中遇到的第二个问题就是模型变得不稳定,尤其是在训练的早期迭代。不稳定的主要因素来自对bounding box中心坐标x,y的预测。在RPN中,网络预测出偏移量 tx ty ,计算对bounding box中心坐标x,y的公式为:

x=
  • 9
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值