YOLO:实时快速目标检测

简介: 论文笔记:You Only Look Once: Unified, Real-Time Object Detection 评论:基于深度学习方法的一个特点就是实现端到端的检测。相对于其它目标检测与识别方法(比如Fast R-CNN)将目标识别任务分类目标区域预测和类别预测等多个流程,YOLO将目标区域预测和目标类别预测整合于单个神经网络模型中,实现在准确率较高的情况下快速目标检测与识别,更加适合现场应用环境。
论文笔记:You Only Look Once: Unified, Real-Time Object Detection

评论:基于深度学习方法的一个特点就是实现端到端的检测。相对于其它目标检测与识别方法(比如Fast R-CNN)将目标识别任务分类目标区域预测和类别预测等多个流程,YOLO将目标区域预测和目标类别预测整合于单个神经网络模型中,实现在准确率较高的情况下快速目标检测与识别,更加适合现场应用环境。后续研究,可以进一步优化YOLO网络结构,提高YOLO准确率。YOLO类型的端到端的实时目标检测方法是一个很好的研究方向。(预告:后续文章中,将对YOLO的tensorflow源码实现进行详解,敬请关注)

简介:YOLO为一种新的目标检测方法,该方法的特点是实现快速检测的同时还达到较高的准确率。作者将目标检测任务看作目标区域预测和类别预测的回归问题。该方法采用单个神经网络直接预测物品边界和类别概率,实现端到端的物品检测。同时,该方法检测速非常快,基础版可以达到45帧/s的实时检测;FastYOLO可以达到155帧/s。与当前最好系统相比,YOLO目标区域定位误差更大,但是背景预测的假阳性优于当前最好的方法。

1 前言

人类视觉系统快速且精准,只需瞄一眼(You Only Look Once,YOLO)即可识别图像中物品及其位置。

传统目标检测系统采用deformable parts models (DPM)方法,通过滑动框方法提出目标区域,然后采用分类器来实现识别。近期的R-CNN类方法采用region proposal methods,首先生成潜在的bounding boxes,然后采用分类器识别这些bounding boxes区域。最后通过post-processing来去除重复bounding boxes来进行优化。这类方法流程复杂,存在速度慢和训练困难的问题。

本文中,我们将目标检测问题转换为直接从图像中提取bounding boxes和类别概率的单个回归问题,只需一眼(you only look once,YOLO)即可检测目标类别和位置。

YOLO采用单个卷积神经网络来预测多个bounding boxes和类别概率,如图1-1所示。本方法相对于传统方法有如下有优点:

一,非常快。YOLO预测流程简单,速度很快。我们的基础版在Titan X GPU上可以达到45帧/s; 快速版可以达到150帧/s。因此,YOLO可以实现实时检测。

二,YOLO采用全图信息来进行预测。与滑动窗口方法和region proposal-based方法不同,YOLO在训练和预测过程中可以利用全图信息。Fast R-CNN检测方法会错误的将背景中的斑块检测为目标,原因在于Fast R-CNN在检测中无法看到全局图像。相对于Fast R-CNN,YOLO背景预测错误率低一半。

三,YOLO可以学习到目标的概括信息(generalizable representation),具有一定普适性。我们采用自然图片训练YOLO,然后采用艺术图像来预测。YOLO比其它目标检测方法(DPM和R-CNN)准确率高很多。

YOLO的准确率没有最好的检测系统准确率高。YOLO可以快速识别图像中的目标,但是准确定位目标(特别是小目标)有点困难。

v2-05fd24d03c6b91fb86b25fd84f8c8738_hd.j 图1-1 YOLO目标检测系统

2 统一检测(Unified Detection)

作者将目标检测的流程统一为单个神经网络。该神经网络采用整个图像信息来预测目标的bounding boxes的同时识别目标的类别,实现端到端实时目标检测任务。

如图2-1所示,YOLO首先将图像分为S×S的格子(grid cell)。如果一个目标的中心落入格子,该格子就负责检测该目标。每一个格子(grid cell)预测bounding boxes(B)和该boxes的置信值(confidence score)。置信值代表box包含一个目标的置信度。然后,我们定义置信值为Pr(Object)\ast IOU_{pred}^{truth}。如果没有目标,置信值为零。另外,我们希望预测的置信值和ground truth的intersection over union (IOU)相同。

每一个bounding box包含5个值:x,y,w,h和confidence。(x,y)代表与格子相关的box的中心。(w,h)为与全图信息相关的box的宽和高。confidence代表预测boxes的IOU和gound truth。

每个格子(grid cell)预测条件概率值C(Pr(Class_{i} |Object))。概率值C代表了格子包含一个目标的概率,每一格子只预测一类概率。在测试时,每个box通过类别概率和box置信度相乘来得到特定类别置信分数:Pr(Class_{i} |Object)\ast Pr(Object)\ast IOU_{pred}^{truth} =Pr(Class_{i} )\ast IOU_{pred}^{truth}

这个分数代表该类别出现在box中的概率和box和目标的合适度。在PASCAL VOC数据集上评价时,我们采用S=7,B=2,C=20(该数据集包含20个类别),最终预测结果为7×7×30的tensor。

v2-7f0fc344ece87d797f433aba5f03d5f9_hd.j

图2-1 模型

2.1 网络结构

模型采用卷积神经网络结构。开始的卷积层提取图像特征,全连接层预测输出概率。模型结构类似于GoogleNet,如图3所示。作者还训练了YOLO的快速版本(fast YOLO)。Fast YOLO模型卷积层和filter更少。最终输出为7×7×30的tensor。

v2-ee4db90336d60d251d7254f9918c3a48_hd.j 图2-2 网络结构

2.2 训练方法

作者采用ImageNet 1000-class 数据集来预训练卷积层。预训练阶段,采用图2-2网络中的前20卷积层,外加average-pooling 层和全连接层。模型训练了一周,获得了top-5 accuracy为0.88(ImageNet2012 validation set),与GoogleNet模型准确率相当。然后,将模型转换为检测模型。作者向预训练模型中加入了4个卷积层和两层全连接层,提高了模型输入分辨率(224×224->448×448)。顶层预测类别概率和bounding box协调值。bounding box的宽和高通过输入图像宽和高归一化到0-1区间。顶层采用linear activation,其它层使用 leaky rectified linear。作者采用sum-squared error为目标函数来优化,增加bounding box loss权重,减少置信度权重,实验中,设定为\lambda _{coord} =5  and  \lambda _{noobj}=0.5

训练阶段的总loss函数如下:

v2-99be5fd97cee75068fbbe82f8c381275_hd.j v2-6480fc7fc2383cace63679dc12dbc4be_hd.j


作者在PASCAL VOC2007和PASCAL VOC2012数据集上进行了训练和测试。训练135轮,batch size为64,动量为0.9,学习速率延迟为0.0005. Learning schedule为:第一轮,学习速率从0.001缓慢增加到0.01(因为如果初始为高学习速率,会导致模型发散);保持0.01速率到75轮;然后在后30轮中,下降到0.001;最后30轮,学习速率为0.0001.
作者还采用了dropout和 data augmentation来预防过拟合。dropout值为0.5;data augmentation包括:random scaling,translation,adjust exposure和saturation。

2.3 预测
对于PASCAL VOC数据集,模型需要对每张图片预测98个bounding box和对应的类别。对于大部分目标只包含一个box;其它有些面积大的目标包含了多个boxes,采用了Non-maximal suppression(非最大值抑制)来提高准确率。

2.4 Limitations
一,YOLO的每一个网格只预测两个boxes,一种类别。这导致模型对相邻目标预测准确率下降。因此,YOLO对成队列的目标(如 一群鸟)识别准确率较低。
二,YOLO是从数据中学习预测bounding boxes,因此,对新的或者不常见角度的目标无法识别。
三,YOLO的loss函数对small bounding boxes和large bounding boxes的error平等对待,影响了模型识别准确率。因为对于小的bounding boxes,small error影响更大。

3 效果对比

文中比较了YOLO和其它目标检测方法(Deformable parts models,R-CNN,Faster R-CNN,Deep MultiBox,OverFeat,MultiGrasp)


4 实验结果

4.1 与其它检测方法效果对比

如表4-1所示,在准确率保证的情况下,YOLO速度快于其它方法。

表4-1 PASCAL VOC 2007数据集测试

v2-b0dd44bb3b108da3b5199c615b6b1575_hd.j


4.2 VOC2007 错误项目分析
文中比较了YOLO和Faster R-CNN的错误情况,结果如图4-1所示。YOLO定位错误率高于Fast R-CNN;Fast R-CNN背景预测错误率高于YOLO。
预测结果包括以下几类:
正确:类别正确,IOU>0.5
定位:类别正确,0.1<IOU<0.5
类似:类别相似,IOU>0.1
其它:类别错误,IOU>0.1
背景:IOU<0.1

v2-348273ce4be398ed4682e96aa5159641_hd.j 图4-1 错误项目分析

4.3 结合Fast R-CNN和YOLO

YOLO和Fast R-CNN预测错误类型不同,因此可以结合两类模型,提升结果。结果如表4-2所示。

表4-2 模型结合

v2-b56229ef352e422cf299ab13de6fc538_hd.j 4.4 VOC 2012结果

VOC2012数据集上测试结果如表4-3所示。

表4-3 VOC2012数据集测试结果

v2-c0dec4aabe08e18c14c16e84ab2ac36a_hd.j

4.5 普适性

我们在其它数据集(艺术品目标检测):Picasso Dataset和People-Art Dataset测试了YOLO的性能,结果如图4-2和图4-3所示。

图4-2 艺术品目标检测结果一

v2-8c6f09430c641632a3d165e88532d4e6_hd.j 图4-3 艺术品目标检测结果二
v2-1d5778885a6e53fa00240879d6dd06fb_hd.j


5 实时检测
作者测试了YOLO的实时检测效果,结果参见 YouTube channel: goo.gl/bEs6Cj .

6,结论

YOLO为一种基于单独神经网络模型的目标检测方法,具有特点可以高准确率快速检测,同时具有一定鲁棒性,可以适用于实时目标检测。


from:https://zhuanlan.zhihu.com/p/25045711

目录
相关文章
|
10天前
|
机器学习/深度学习 编解码 算法
目标检测舰船数据集整合
目标检测舰船数据集整合
|
2月前
|
机器学习/深度学习 计算机视觉 网络架构
YOLOv9实时目标检测新SOTA
【2月更文挑战第6天】YOLOv9实时目标检测新SOTA
89 2
YOLOv9实时目标检测新SOTA
|
5月前
|
传感器 数据采集 编解码
3D目标检测数据集 DAIR-V2X-V
本文分享国内场景3D目标检测,公开数据集 DAIR-V2X-V(也称为DAIR-V2X车端)。DAIR-V2X车端3D检测数据集是一个大规模车端多模态数据集,包括: 22325帧 图像数据 22325帧 点云数据 2D&3D标注 基于该数据集,可以进行车端3D目标检测任务研究,例如单目3D检测、点云3D检测和多模态3D检测。
102 0
|
8月前
|
机器学习/深度学习 算法 自动驾驶
目标检测之TextSnake
翻译:《TextSnake: A Flexible Representation for Detecting Text of Arbitrary Shapes》
|
8月前
|
机器学习/深度学习 固态存储 算法
目标检测之TextBoxes++
翻译:《 TextBoxes++: A Single-Shot Oriented Scene Text Detector》
|
8月前
|
机器学习/深度学习 PyTorch 算法框架/工具
基于 PyTorch 和 YOLO 的实时目标检测
基于 PyTorch 和 YOLO 的实时目标检测
|
9月前
|
机器学习/深度学习 人工智能 计算机视觉
【YOLOv8】实战一:手把手教你使用YOLOv8实现实时目标检测
【YOLOv8】实战一:手把手教你使用YOLOv8实现实时目标检测
9269 0
【YOLOv8】实战一:手把手教你使用YOLOv8实现实时目标检测
|
10月前
|
机器学习/深度学习 监控 算法
了解YOLO算法:快速、准确的目标检测技术
了解YOLO算法:快速、准确的目标检测技术
1463 0
|
11月前
|
算法 计算机视觉
目标检测系列 | 无NMS的端到端目标检测模型,超越OneNet,FCOS等SOTA!(一)
目标检测系列 | 无NMS的端到端目标检测模型,超越OneNet,FCOS等SOTA!(一)
237 0