传火:YOLO V1

YOLO V1

概览

YOLO是You Only Look Once的简称,和人眼识别物体一样,看一眼就能识别出来,YOLO力求实现端到端的目标检测,只用一个简单的神经网络结构,从单张图片就可以输出图中目标的位置和目标的种类,而且因为其没有其他检测网络的复杂结构(说的就是你,Faster RCNN),所以其检测速度很快,可以实现实时的目标检测。
YOLO结构


YOLO诞生之前 – 无火的时代

赞美太阳

Long May The Sunshine.

在YOLO之前,目标检测的方法是从图像分类衍化而来,毕竟检测的第一步确实是将图片中的目标弄出来,而弄出来靠的就是先分类再定位,最后再对分出来的目标进行识别。
比较经典的是RCNN,利用区域推荐去估计目标位置(bonding box),再用卷积网络提取特征,作为后续SVM分类bonding box的依据,最后用线性模型调整box的位置,非极大值抑制(NMS)来去除重复的框。
基于RCNN,还有提升了速度的Fast & Faster RCNN,所做的改进在于减少了重复计算以及将区域推荐也用网络来实现。
像RCNN这种具有复杂pipeline的目标检测方法自然是耗时冗长而无法用于实时检测的,尽管其精度很高,却也因此无法大规模用于实际场景。


YOLO的诞生 – 传火的钟声响起

YOLO的目标很明确–实现实时的目标检测。而为了速度,就必须舍弃无效的动作,一击制敌。所以YOLO将目标检测做成了回归的形式,输入是图片,输出就是图片中目标的位置、种类,这么复杂的任务似乎也需要同样复杂的网络,但是YOLO只用了卷积层和全连接层,实现了天下武功,唯快不破。

而背后的原因是什么呢?众所周知,神经网络可以在问题和答案之间探索最佳的拟合方式,从而实现问题到答案的完美映射,取代了以往人工的算法设计;而使用神经网络的人呢,需要钻研的,就是问题的提问方式和答案的表示方式,以确保问题与答案相对的解空间中存在合理的拟合(人为定义的合理),以及探索如何指导神经网络朝正确的方向拟合过去和拟合的好坏(损失函数的设计)。

那么对于YOLO来说,他的问题(输入)是一张图片,答案则是一个 ( S × S × ( 5 × B + C ) ) (S \times S \times (5 \times B + C)) (S×S×(5×B+C))的张量。为什么这么设计答案?其合理性在于将原图分为S*S个小块,每个块内都有B个(论文中是2个,互相垂直)预测框(bonding box)的同一中心,每个框有5个参数 ( x , y , w , h , c o n f i ) (x,y,w,h,confi) (x,y,w,h,confi),x,y是框的中心相对于小块中心的偏移,w,h是框的边长,congfi则是这个框预测结果的置信度,即预测框与真值框的IOU。同时对应于C个种类有C个预测值,如果一个目标的中心落在某个小块内,则这个块的框就负责该目标的预测。这些就构成了答案的维度。如下图所示。
YOLO示意图
图片来自传送门
如此定义,从问题到解空间就存在合理的映射,而如何指导网络学习这种映射,就涉及到损失函数的设计。
YOLO的损失函数采用的是平方和的形式,答案张量中的每一个部分都在损失函数中有所对应。如下图:
loss
loss的每个部分的对应如下:
loss_explain
图片来自传送门
loss的第一部分是预测框的中心和大小,第二部分是bonding box的IOU,第三部分是分类误差。值得注意的是该loss虽然是所有块loss的总和,但是因为0-1系数的存在,只有当块负责某个目标时,才会有类别loss,只有当bbox对应于真值框时,才会有位置loss,这里的对应指的是bbox与真值的IOU最大。
为了平衡loss的各个部分,作者还加入了多个权重。比如让位置loss和类别loss同等重要是不合理的,毕竟是位置要优先于类别判断,所以在位置loss前增加了权重调节(论文中为5)。对于不存在目标的bbox的IOU loss,我们希望它的IOU越小越好,但因为大多数块都没有目标,所以在前面加入一个缩小权重的系数(论文中为0.5)。
而对于大小目标的检测来说,小目标检测出现的位置偏移误差更为难以忍受,所以在计算的时候,作者对于框的大小(w,h)开了方,因为在w,h越小的时候,相同的 δ w , δ h \delta w, \delta h δw,δh w , h \sqrt w, \sqrt h w ,h 展现的loss更大,这点很巧妙。


YOLO的缺陷 – 阿克琉斯之踵

YOLO V1因为机制的原因,存在的缺陷也很好理解。

  • 无法检测大片的,靠近的目标,如鸟群。
  • 尽管用了平方根的方法,大小目标检测在loss中的差异不明显,导致位置预测仍是主要误差来源。
  • 输入是固定的,且因为下采样导致特征不精确。

更多YOLO的实现细节,可以移步传送门

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值