YOLO v1 论文总结 算法总结 You Only Look Once: Unified, Real-Time Object Detection

1. 论文主要内容

1.1. 摘要 Abstract

  • 提出了一种叫YOLO的目标检测算法,这种算法将检测问题看成是计算bounding boxes回归和class概率问题,这种end-to-end的方法一次性就可以实现边框和种类的预测。

  • 速度相当快,可以达到45 frames per second。快速版网络是每秒155帧,mAP是其他实时检测方法的2倍。和其他的state-of-the-art detection systems方法对比,YOLO有更多的位置检测(指的是位置上下或者左右变差,即IOU比较小)错误,更少的误检(将背景检测成物体的情况)。YOLO和其他算法(DPM和R-CNN)相比可以学到更加通用的特征(就是泛化能力强的意思)。

1.2. 简介 Introduction

人视觉是一眼就分辨出物体的,所以两阶段的检测方法不够合理,应该使用单阶段的检测方法。古老的DPM使用的是滑动窗口的检测方法,最近的(2016年的最近),像R-CNN使用region proposal的方法,他们都是先产生框,然后分类,之后再去除重复框。两阶段方法因为检测过程复杂(a complex pipeline)有两个缺点:检测时速度慢,训练时优化困难。

YOLO单阶段的检测方法(unified model),直接从像素点 一次性(同时) 预测出bounding box coordinates 和 class probabilities。这个方法有三个优点。

第一个,快(extremely fast)。Titan X 上是每秒45帧,0.025秒的延时。快版本(另一个小网络YOLO)可以实现150fps。

第二个,有全局特性(globally about the image/sees the entire image)。误检率只有R-CNN的一半。

第三个,泛化能力强(learns generalizable representations of objects)。在训练natural images和测试artwork时,YOLO的表现都比DPM和R-CNN好很多。
在这里插入图片描述

1.3. 单阶段检测 Unified Detection

原文:

The Model. Our system models detection as a regression problem. It divides the image into an S×S grid and for each grid cell predicts B bounding boxes, confidence for those boxes, and C class probabilities. These predictions are encoded as an S × S × (B ∗ 5 +C) tensor.

解读如下:

将图片均分成 7 * 7的网格(S × S grid),一共就有49个格子单元(grid cell),每个格子单元负责预测自己所在位置的所有物体,且每一个物体都只由一个格子单元负责预测(grid cell is responsible for detecting that object)。S = 7

每一个格子单元预测2个方框(B bounding boxes)和2个置信度(confidence),即Pr(Object) ∗ IOU,一共就有98个方框。如果这个方框框住了物体,置信度就是IOU的值,没有框住就是0。B = 2

一个方框需要预测5个数据来描述,即方框的位置信息(x, y, w, h)和置信度(confidence)。

一个网格单元有20个类别概率(C conditional class probabilities)即Pr(Classi|Object),这个类别概率只和物体种类有关,和B值无关。C = 20

在这里插入图片描述

测试时候的计算公式是:
Pr(Classi|Object) ∗ Pr(Object) ∗ IOU = Pr(Classi) ∗ IOU = 得分

Pr(Object) ∗ IOU:表示每一个方框(bbox)包含物体的概率(IOU),与物体种类(C = 20)无关。

Pr(Classi|Object):表示每一个网格单元(cell)有物体时,这个物体分别是这20种类别的概率,与方框(B=2)无关。

得分:同时表示了方框中的物体是20个类别的可能性,以及方框框的好不好的程度。可理解为类别概率 * IOU(即种类概率* 位置概率)。

在这里插入图片描述

1.4. 网络设计 Network Design

用神经网路实现的,其中24个卷积网络层提取特征,2个全连接层预测坐标和概率。最终输出是 7 * 7 * 30的张量。

快速版YOLO只使用了9个卷积层和更少的过滤器(fewer filter)。

在这里插入图片描述

1.5. 训练 Training

在ImageNet 1000类竞赛上预训练,预训练时只使用前20层,后面接一个pool层和一个全连接层。预训练一个星期。

预训练完之后添加缺失4个卷积层和2个全连接层(这6个层赋值随机权重),把图片大小从 224 * 224 增大到 448 * 448 继续训练。

算法需要方框的坐标信息x,y,w,h都转换成0到1之间的数。x,y通过与特性网格单元的坐标计算得到0,1之间的数,w,h通过除以图片的宽度和高度得到0,1之间的数。

激活函数使用的是:
在这里插入图片描述

Loss函数的设计过程:

在这里插入图片描述

问题 1:作者没有直接使用平方和误差的原因。第一个,直接使用平方和误差处理就是默认物体种类误差和位置误差的权重是相同的,实际上应该是有区别的。第二个,因为有大量网格单元没有物体,梯度计算过程就会更加偏重大量不重要的网格单元中没有物体的,并偏轻少量重要的网格单元中有物体的数据。

解决方法:为了平衡,作者在Loss中增加了坐标偏差的权重(λcoord = 5),减小了网格单元中没有物体的权重(λnoobj =0.5);网格单元中有物体的权重保持为1,类别概率的权重保持为1。

问题 2:作者没有直接使用平方和误差的原因。第三个,相同的距离偏差对不同大小的方框来说重要性是不相同的(同样的距离偏差对小方框的影响明显应该是大于对大方框的影响的),但这个特性没有在平方和误差中体现。

解决方法:作者提出了一个部分解决这个(partially address this)问题的方法,不直接使用宽度和高度计算平方和误差,而是先取宽度和高度根号后再计算平方和误差。(大于1的两个数分别开根号后,两者之间的差值会比原来小;小于1的两个数分别开根号后,两者之间的差值会比原来大,如4,9开根号前后的差是从5降到了1;0.09与0.04开根号前后的差是从0.05上升到了0.1)。x, y, w, h的值都是小于1的,但由于w, h 的差值比x, y的差值小很多,直接计算平方和误差不合理,所以需要将w, h做开根号处理来间接增大差值,赶上x, y的差值,从而保证梯度求解的过程中,x, y, w, h 四个数据同等重要,不会出现x, y 的差值明显大于w,h的差值的情况。

作者训练时,epochs = 135,batch size = 64,momentum = 0.9,decay = 0.0005

learning rate的设置方法:第一个 epochs 过程中学习率从10-3 慢慢增加到10-2 ,开始的 75个 epochs 学习率为10-2 ,中间的 30个 epochs 学习率为10-3 ,最后的 30个 epochs 学习率为10-4 。设置第一个 epochs 的原因是作者发现最开始时,将学习率设置大一点会发散,所有才从0.001慢慢增加到0.01的。

为避免过拟合作者在第一个全连接层后使用了 dropout(rate = 0.5) 和大量的数据增强(随机缩放、随机平移最大20%,在HSV空间随机调整曝光度、饱和度最高到1.5倍)

1.6. 推理 Inference

作者认为这种划分网格的方式,增强了bounding box在预测时的空间多样性。非极大抑制(Non-maximal suppression),去除重复检测的物体,可以提高2- 3% mAP,效果不如在R-CNN上明显。

1.7. 局限性 Limitations of YOLO

每一个grid cell最终只能预测一个物体,所以对成群的小目标检测困难。

模型从数据习得,所以对新目标,新尺寸物体泛化能力弱。希望习得更粗略的特征使用了下采样。

在Loss函数中,相同的位置偏差对小 bounding boxes 和大 bounding boxes 的作用相同这一问题,还没有从根本性解决。

1.8. 从原理上对比其他算法

1.9. 从实验结果上其他算法

1.10. 总结

论文主要内容和贡献

论文主要方法

代码实现

相关链接

英文博客

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值