YOLO v1--You Only Look Once: Unified, Real-Time Object Detection

YOLO(You Only Look Once)是一种不同于传统物体检测方法的算法,它将物体检测视为回归问题,直接从整张图像预测bounding box坐标、物体置信度和类别。与滑动窗口和R-CNN等方法相比,YOLO速度快,能够利用上下文信息避免背景错误,但在小物体检测和精度上存在不足。YOLO的损失函数包括位置、置信度和类别预测三部分,通过调整权重平衡训练。
摘要由CSDN通过智能技术生成

首页:https://blog.csdn.net/u014236392/article/details/86767950
论文:You Only Look Once: Unified, Real-Time Object Detection
official code - c:https://pjreddie.com/darknet/yolo/

1.

YOLO 之前的物体检测方法主要是通过 region proposal 产生大量的可能包含待检测物体的 potential bounding box,再用分类器去判断每个 bounding box里是否包含有物体,以及物体所属类别的 probability 或者 confidence,如 R-CNN, Fast R-CNN, Faster R-CNN等。YOLO 不同于这些物体检测方法,它将物体检测任务当做一个 regression 问题来处理,使用一个神经网络,直接从一整张图像来预测出bounding box 的坐标、box中包含物体的置信度和物体的probabilities。因为 YOLO 的物体检测流程是在一个神经网络里完成的,所以可以end to end来优化物体检测性能。

2. 与滑动窗口技术对比

(1)利用滑动窗口技术实际将检测问题转为图像分类问题。基本原理就是采用不同大小和比例的窗口在整张图片上以一定的步长进行滑动,然后对这些窗口对应的区域做图像分类,这样就可以实现对整张图片的检测了。但是,并不知道目标的大小,所以要设置不同大小和比例的窗口去滑动,而且还要选取合适的步长,这又导致会产生很多的子区域,并且都要经过分类器去做预测,需要很大的计算量,而要保证速度分类器就不能太复杂。
(2)R-CNN改进思路:利用SS来找到最有可能包含目标的子区域Region proposal,从而减少要分类的子区域。
(3)可以使用CNN实现更高效的滑动窗口方法。结合卷积运算的特点以及图片的空间位置信息保持不变性,一次CNN计算就可以实现窗口滑动的所有子区域的分类预测,尽管卷积过程使得图片变小,但是位置对应关系保存。R-CNN借鉴这个思路诞生了Fast R-CNN。
(4)以上虽然减少了计算量,但只是针对固定大小和步长的窗口。YOLO解决了这个问题:直接将原始图片分割成互不重合的小方块,然后通过卷积生成这样大小的特征图,可以认为特征图上的每个元素都对应原始图片的一个小方块,再利用每个元素来预测那些中心点落在该小方格内的目标。

3. 损失函数

YOLO的损失函数包含3部分,分别是位置坐标损失函数,置信度损失函数和类别预测损失函数(注意置信度跟类别预测的区别,置信度是7×7个小区域里预测出来2个分类的置信度,共有7×7×2个,类别预测是7×7个小区域整体上分别属于20个类别的概率,共有7×7×20。那么为什么不干脆只记录每个小区域所属的最大概率对应的类别呢,这样是不是数据维度是7×7×1就ok了?这是为了在最后做整体上的综合整合),如何在这3部分损失函数之间找到一个平衡点,YOLO主要从以下几个方面考虑:
(1) 坐标损失函数方面。每个小区域上输出的8维位置坐标偏差的权重应该比20维类别预测偏差的权重要大,因为首先从体量上考虑,20维的影响很容易超过8维的影响,导致分类准确但是位置偏差过大,再者最后还会在整体的分类预测结果上综合判断物体的类别,所以单个小区域的分类误差稍微大一点不至于影响最终的结果。最终设置位置坐标损失和类别损失函数的权重比为5:1。
(2)置信度损失函数方面。在不含有目标物体的网格上,物体的置信度是0,并且图像上大部分区域都是不含目标物体的,这些过多的置信度为0对梯度的贡献会远远大于含目标物体的网格对梯度的贡献,这就容易导致网络不稳定或者发散,也就是说网络会倾向于预测每个小网格不含有物体,因为大部分情况下这种预测都是正确的。所以需要减弱不含目标物体的网格的贡献,取权重系数为0.5,含目标物体的网格的权重正常取1。
(3)目标物体大小不等方面。考虑到目标物体有大有小,对于大的物体,坐标预测存在一些偏差无伤大雅,但是对于小的目标物体,偏差一点可能就是另外一个东西了。为了解决这个问题,作者将位置坐标的W和H分别取平方根来代替原本的W和H,以达到值越小,对同等大小改变的相应越大的目的。

4. 优缺点

4.1 优点

(1)YOLO检测物体非常快。
因为没有复杂的检测流程,只需要将图像输入到神经网络就可以得到检测结果,YOLO可以非常快的完成物体检测任务。标准版本的YOLO在Titan X 的 GPU 上能达到45 FPS。更快的Fast YOLO检测速度可以达到155 FPS。而且,YOLO的mAP是之前其他实时物体检测系统的两倍以上。
(2)YOLO可以很好的避免背景错误,产生false positives。
不像其他物体检测系统使用了滑窗或region proposal,分类器只能得到图像的局部信息。YOLO在训练和测试时都能够看到一整张图像的信息,因此YOLO在检测物体时能很好的利用上下文信息,从而不容易在背景上预测出错误的物体信息。和Fast-R-CNN相比,YOLO的背景错误不到Fast-R-CNN的一半。
(3)YOLO可以学到物体的泛化特征。
当YOLO在自然图像上做训练,在艺术作品上做测试时,YOLO表现的性能比DPM、R-CNN等之前的物体检测系统要好很多。因为YOLO可以学习到高度泛化的特征,从而迁移到其他领域。

4.2 缺点

(1)YOLO的物体检测精度低于其他state-of-the-art的物体检测系统。
(2)YOLO容易产生物体的定位错误。
(3)YOLO对小物体的检测效果不好(尤其是密集的小物体,因为一个栅格只能预测2个物体)。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值