Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Real-Time Object Detection-YOLO V1学习笔记

Real-Time Object Detection-YOLO V1学习笔记

作者头像
YoungTimes
发布于 2022-04-28 05:11:55
发布于 2022-04-28 05:11:55
5850
举报

YOLO之前的Object Detection方法主要是通过Region Proposal产生大量的Bounding Box,再用Classifier判断每个Bounding Box是否包含Object,以及Object所属类别的Probability。

YOLO提出了一种新的Object Detection方法,它将Object Detection作为一个空间分离的Bounding Box和对应Class Probability的Regression问题来处理。YOLO使用单个神经网络直接从整幅图像预测Bounding Box和Class Probability,也正因为整个检测过程是单个神经网络组成的,所以YOLO可以直接端到端的优化物体检测表现。

YOLO物体检测方法的速度非常快,Base版本可以达到45帧/秒,Fast YOLO版本可以在保证mAP达到其它实时检测系统2倍情况下,检测频率仍然达到155帧/秒。相对于其它state-of-the-art的检测方法,YOLO产生更多的Localization Error,但在背景中预测出不存在的物体的情况会比较少。同时,YOLO学习到General的Object Representation,因为相对于其它物体检测方法(如DPM和R-CNN),YOLO从Natural Images泛化到其它领域(如Artwork)的表现更好。

The YOLO Detection System

1.Introduction

人类看一眼图像,就会立刻知道图像中有哪些物体,它们在哪里,以及它们是如何相互作用的。人类的视觉系统快速、准确,允许我们执行诸如驾驶车辆等复杂的任务。快速精确的Object Detection算法能够向人类用户传递实时的场景信息,并释放通用的响应式机器人系统的潜力。 当前目标检测系统主要使用分类器的方法做目标检测。为了检测物体,这些系统使用目标分类器在测试图像的不同位置和不同尺度上进行目标检测和评估。比如Deformable Parts Models(DPM)系统使用滑动窗口方法,使用分类器在整副图像上均匀进行目标查找。

最近的R-CNN系统使用Region Proposal的方法,首先对图像生成潜在的Proposed Bounding Box,然后在Proposed Bounding Box上运行分类器,分类后,使用post-processing来refine bounding box,消除重复检测,并根据场景中的其他物体重新评估Boxes的得分。由于每个单独的模块都需要独立训练,所以这种组合Pipeline不仅速度慢,而且优化难度非常大。 YOLO将Object Detection重新定义为直接从图像像素到Bounding Box坐标和Class Probability的Regression问题。使用YOLO系统,只需查看一次图像,就可以预测存在哪些对象以及它们在哪里。

与滑动窗口技术和基于Region Proposal的技术不同,YOLO在训练和测试时对整幅图像进行处理,因而可以隐含的对分类的上下文信息和物体的外表进行编码,所以在物体检测时,有更好的全局性。在顶级的检测方法Fast RCNN中由于不能看到更大的上下文信息,因而会把背景误识别为物体,YOLO可以背景的的误识别率降低一半。

YOLO的泛化能力也远超DPM和RCNN,所以当把YOLO模型应用于新的领域或者遇到预期之外的输入时,它也能很好的进行处理。

YOLO的不足在于它的精度仍低于目前state-of-the-art的检测系统,并且对于小物体的检测定位效果不佳。

2.Unified Detection

YOLO使用整幅图像作为输入,同时预测物体的Bounding Box和Class,把Object Detection过程统一为单个神经网络的统一过程。YOLO的这种设计使得它在保持很高AP的情况下,仍然可以进行端到端的Training和达到实时的检测速度。

Confidence Score

YOLO系统将输入图像分成S x S的网格,如果Object的中心落在哪个网格中,该网格就负责检测该Object。每个网格预测B个Bounding Box和对应的Confidence Score。

Confidence Score反映了: 1) Bounding Box是否包含Object,即多大程度上确信Bounding Box包含了Object;2) Bounding Box对自身坐标预测精度的评估。如果一个网格中没有Object存在,它的Confidence Score应该为0;反之,Confidence Score的值等于Predicted Box和Ground Truth的IOU。

The Model. Our system models detection as a regres- sion 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.

Coordinate

每个Bounding Box包含5个预测值:x,y,w,h和confidence。(x,y)表示Box的中心点坐标(相对于网格边界);w,h时Bounding Box的宽度和高度(相对于整个图像);Confidence表示Predicted Box和Ground Truth Box的IOU。

如下图所示,图像的大小为448 x 448,Grid Cell的大小为149 x 149;待检测的Object的宽度为224,高度为143,中心点为(220,190);与待检测的Object的IOU最大的Grid Cell的左上角坐标为(149, 149)。

x=(Object中心点x坐标 - Grid Cell左上角x坐标)/Grid Cell的宽度 = (220-149)/149 = 0.48

y=(Object中心点y坐标 - Grid Cell左上角y坐标)/Grid Cell的高度 = (190-149)/149 = 0.28

w=Object的宽度 / 图像的宽度 = 224 / 448 = 0.5

h=Object的高度 / 图像的高度 = 143 / 448 = 0.32

Classification

每个网格还要预测C个条件分类概率

,不管每个网格预测多少个Bounding Box,YOLO只预测一组分类概率。

在测试阶段,将每个网格的conditional class probabilities与每个bounding box的 confidence相乘:

上述乘积既反映了预测bounding box中class的 probability信息,也反映了预测bounding box是否含有Object和bounding box坐标的准确度。

在PASCAL VOC数据集上测试YOLO时, 我们设置S = 7, B = 2,PASCAL VOC包含20个标签分类,因此C = 20。最终的预测结果是一个7 × 7 × (2 * 5 + 20) = 7 x 7 x 30的tensor.

2.1. Network Design

YOLO网络架构受到GoogleNet的启发,但是未使用Inception Module,而是使用1x1 reduction layer + 3x3 convolutional layers替代。完整的网络结构如下图所示,它包含24个卷积层+2个全连接层。

The Architecture. Our detection network has 24 convolutional layers followed by 2 fully connected layers. Alternating 1 × 1 convolutional layers reduce the features space from preceding layers. We pretrain the convolutional layers on the ImageNet classification task at half the resolution (224 × 224 input image) and then double the resolution for detection.

2.2 Loss函数

YOLO的Loss函数使得coordinate(x,y,w,h),confidence,classification三方面达到很好的平衡。由于均方和(sum-squared error)误差更容易优化,所以YOLO模型把均方和(sum-squared error)误差作为优化目标。

表示第i个Cell是否包含Object;

判断第i个Cell的第j个Bounding Box是否负责预测该Object,与Object的GoundTruth的IOU最大的Bounding Box负责预测该Object。

损失函数中的Coordinate部分

Coordinate采用(x,y,w,h)的均方误差来衡量Loss。预测的Bounding Box的宽(w)和高(h)的绝对偏差并不能衡量预测的准确度,比如同样的偏差,小的Bounding Box受到的影响比大的Bounding Box要大,为了缓和这个问题,作者采用width和height的平方根替代width和height计算均方误差。

如下图所示,对相同的

,w的值越大,

的差值变化越小。

损失函数中的Confidence部分

Confidence误差也采用均方差的形式。在Object Detection过程中,不包含Object的Grid Cell往往比包含Object的Grid Cell要多很多,使得它们的Confidence Loss的贡献要大于包含Object的Grid Cell,为了解决这个问题,降低不包含Object的Grid Cell的的影响,设置两个权重常数:

原文中描述如下:

in every image many grid cells do not contain any object. This pushes the “confidence” scores of those cells towards zero, often overpowering the gradient from cells that do contain objects. This can lead to model instability, causing training to diverge early on.

损失函数中的Classification部分

YOLO中每个Grid Cell都会生成多个Bounding Box,但是不是每个Bounding Box都会预测一个Classification,而是每个Grid Cell对应一个Classification,这也是YOLO对于稠密小物体检测效果差的原因所在。

2.3 Trainning细节

我们在PASCAL VOC 2007 and 2012数据集上训练了135个Epochs,Training Batch Size=64,momentum=0.9,decay=0.0005。训练过程中Learning Rate的设置如下:第一个Epoch将Learning Rate从

缓慢增加到

,之所以要这么做,是因为如果一开始就设置一个很高的Learning Rate,我们的模型就会因为不稳定的梯度导致模型不收敛。然后使用Learning Rate=

训练75个Epoch,使用Learning Rate=

训练30个Epoch,使用Learning Rate=

训练30个Epoch。

为了避免过拟合,我们使用了Dropout和Extensive Data Augmentation;Dropout Rate=0.5;对20%的原始图像进行随机的缩放和平移,还随机调整图像的曝光和饱和度(在HSV颜色空间中最多调整1.5倍)以实现Data Augmentation。

实验显示在预训练的神经网络上增加卷积层和全连接层可以提升神经网络的表现。所以我们首先在ImageNet 1000-Class数据集上预训上图中的前20层卷积层 + Average-Pooling Layer + Fully Connected Layer,在经过一周的训练后,在ImageNet 2012验证集上得到了88%的准确率。然后在预训练的神经网络基础上增加4个卷积层和2个随机初始化权重的全连接层。Detection需要丰富的视觉信息,所以我们将网络的输入分辨率从224 x 224 增加到 448 x 448。

神经网络最后一层使用线性激活函数,其它层使用如下的Leaky rectified线性激活函数。

2.4 Inference

YOLO的Grid Cell的设计消除了空间预测的多样性,大多数情况下,Object落在哪个Grid Cell中都是非常明确的,因此一个Object都会只生成一个Bounding Box。但是对于比较大的Objects或者落在多个网格边界处的Object,多个Grid Cell都能产生不错的预测结果,因此需要采用非最大值抑制(NMS,Non-maximal suppression)解决重复预测的问题。

与R-CNN 或者 DPM不同,NMS对于YOLO不是关键流程,可以将YOLO的mAP提升2%~3%。

2.5 Limitations of YOLO

1、YOLO每个Grid Cell只预测两个Bounding Box,并且只能有一个Class,这种空间约束限制了YOLO模型预测成群出现的小物体(如鸟群)的能力。

2、由于YOLO模型从大量数据中学习边界框预测,所以它对没有见过的Object或者不常见姿势或者形态的Object的泛化能力不强。

3、YOLO使用Loss函数衡量模型表现,Loss函数处理小Bounding Box和大Bounding Box的误差处理逻辑相同,但实际上,Large Box上的小误差通常不会有实质性的影响,但是Small Box的小误差往往会对IOU的计算有更大的影响。YOLO的主要错误来源就是定位错误。

3 Experiments

Fast YOLO是目前已知的在PASCAL数据集上最快的Object方法,同时52.7%的mAP是其它实时检测系统的2倍以上。YOLO在保持实时表现的同时,mAP达到了63.4%。

Error Analysis: Fast R-CNN vs. YOLO

YOLO的Localization Error超过其它来源的Error之和;Fast RCNN的Localization Error较少,但是Background Error较大,是YOLO的Background Error的3倍之多。

Model combination experiments on VOC 2007

既然YOLO可以对Background Error的处理效果很好,因此将YOLO和Fast R-CNN结合起来,可以很好的弥补Fast RCNN的短板。实验显示,Fast RCNN在VOC 2007测试数据集上的mAP最高达到了71.8%,结合YOLO之后,mAP提升3.2%到75%;Fast RCNN与其它模型结合带来的提升则非常有限。

Generalization results on Picasso and People-Art datasets

用于Object Detection的Academic Dataset的训练集和测试集都服从相同的分布。在实际应用中,这种情况是很少见的。为了对比YOLO和其它Detection System的泛化能力,我们在Picasso Dataset和People-Art Dataset对Person Detection做了对比测试,试验证明,YOLO的泛化能力要远超其它Detection System。

Qualitative Results. YOLO running on sample artwork and natural images from the internet.

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-08-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 半杯茶的小酒杯 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
收藏 | YOLO系列综述:从V1到V4
这是继RCNN,fast-RCNN和faster-RCNN之后,rbg(RossGirshick)针对DL目标检测速度问题提出的另外一种框架。YOLO V1其增强版本GPU中能跑45fps,简化版本155fps。
小白学视觉
2022/02/14
5180
收藏 | YOLO系列综述:从V1到V4
YOLO系列:V1,V2,V3,V4简介
YOLO系列是基于深度学习的回归方法。 RCNN, Fast-RCNN,Faster-RCNN是基于深度学习的分类方法。
马上科普尚尚
2020/05/11
2.6K0
YOLO
YOLO核心思想:从R-CNN到Fast R-CNN一直采用的思路是proposal+分类 (proposal 提供位置信息, 分类提供类别信息)精度已经很高,但是速度还不行。 YOLO提供了另一种更为直接的思路: 直接在输出层回归bounding box的位置和bounding box所属的类别(整张图作为网络的输入,把 Object Detection 的问题转化成一个 Regression 问题)。 YOLO的主要特点: 速度快,能够达到实时的要求。在 Titan X 的 GPU 上 能够达到 45
MachineLP
2018/03/12
1.4K0
YOLO
YOLO,You Only Look Once论文翻译——中英文对照
You Only Look Once: Unified, Real-Time Object Detection Abstract We present YOLO, a new approach to
Tyan
2017/12/28
1.8K0
YOLO,You Only Look Once论文翻译——中英文对照
目标检测之YOLO-You Only Look Once(一)
简单流程图 YOLO检测的流程十分简单,如论文中的这张图所示: 1、将图像resize到448×448作为神经网络的输入 2、用卷积神经网络得到一些bounding box坐标、box中包含物体的置信度和class probabilities 3、进行nms(非极大值抑制),筛选Boxes
CristianoC
2020/06/02
1.9K0
【目标检测系列】个人整理目标检测框架yolo v1深入剖析
faster-RCNN在目标检测精度上已经能够达到一个很高的水准,但是作为RCNN系列的最巅峰,它提出了RPN网络产生推荐性区域,但是它依旧有着一些缺点,这些区域里面有大面积是重合的,影响了计算效率。为了更好地提升目标检测的计算效率,从DPM检测中获得了相关的灵感,于是yolo网络应运而生,现在yolo网络已经有了很多的版本,yolo v1、yolo v2、yolo v3、fast yolo 等系列算法,本文针对最原始的yolo v1算法。
小草AI
2019/05/31
1.7K0
【目标检测系列】个人整理目标检测框架yolo v1深入剖析
YOLO算法最全综述:从YOLOv1到YOLOv5
来源丨https://zhuanlan.zhihu.com/p/136382095
Datawhale
2020/10/23
2.8K0
YOLO算法最全综述:从YOLOv1到YOLOv5
专栏 | 目标检测算法之YOLOv1
今天开始分享一下 YOLO 系列的目标检测算法,前面介绍了 SSD 算法和 Faster-RCNN,现在公司用 Faster-RCNN 的似乎不是很多,主要集中在 YOLO,SSD 以及 CenterNet 等。我们的检测和宇宙和分割宇宙刚刚开始,之后会更新一些这些算法的代码实战等,敬请期待吧。
AI研习社
2019/11/29
6720
【转】目标检测之YOLO系列详解
YOLO将输入图像分成SxS个格子,若某个物体 Ground truth 的中心位置的坐标落入到某个格子,那么这个格子就负责检测出这个物体。
marsggbo
2019/05/26
1.8K0
【转】目标检测之YOLO系列详解
YOLO将输入图像分成SxS个格子,若某个物体 Ground truth 的中心位置的坐标落入到某个格子,那么这个格子就负责检测出这个物体。
marsggbo
2019/04/29
1.6K0
从YOLOv1到YOLOv3,目标检测的进化之路
这是继 RCNN,fast-RCNN 和 faster-RCNN之后,Ross Girshick 针对 DL 目标检测速度问题提出的另外一种框架。YOLO V1 其增强版本在 GPU 上能跑45fps,简化版本155fps。
AI科技大本营
2018/07/23
1.3K0
从YOLOv1到YOLOv3,目标检测的进化之路
Object Detection-深入理解YOLO v1
You Only Look Once: Unified, Real-Time Object Detection
YoungTimes
2022/04/28
6070
Object Detection-深入理解YOLO v1
一文看尽目标检测:从 YOLO v1 到 v3 的进化之路
http://www.mamicode.com/info-detail-2314392.html
小小詹同学
2019/05/15
7740
一文看尽目标检测:从 YOLO v1 到 v3 的进化之路
目标检测系列之四(YOLO V1、YOLO V2、YOLO V3)
前面文章我们介绍过两阶段Two-Stage算法(目标检测系列之二(R-CNN、Fast R-CNN、Faster R-CNN、Mask R-CNN)),先产生候选框再用SVM或者CNN进行分类,一阶段One-Stage算法(目标检测系列之三(SSD)),直接对输入图像学习候选框和类别和定位,下面继续介绍一代更比一代强的一阶段算法。
Minerva
2020/05/25
1.6K0
YOLO v1
Joseph Redmon和Ali Farhadi在2015年提出了YOLO目标检测深度网络,并在2017年和2018年进行了改进,这三个工作都发表在了当年的CVPR上。Joseph Redmon是华盛顿大学的博士,主要研究就方向为计算机视觉,这是Joseph Redmon的个人主页,Ali Farhadi是华盛顿大学的副教授,也是Joseph Redmon的导师,这是AIi Farhadi的个人主页。
狼啸风云
2019/01/18
1.1K0
目标检测(Object Detection)
目标检测(Object Detection)的任务是找出图像中所有感兴趣的目标(物体),确定它们的类别和位置,是计算机视觉领域的核心问题之一。由于各类物体有不同的外观、形状和姿态,加上成像时光照、遮挡等因素的干扰,目标检测一直是计算机视觉领域最具有挑战性的问题。
全栈程序员站长
2022/09/14
8K0
目标检测(Object Detection)
论文笔记1 --(YOLOv2)YOLO9000:Better,Faster,Stronger
《YOLO9000:Better,Faster,Stronger》 论文:https://arxiv.org/abs/1612.08242
对角巷法师
2022/05/07
5360
论文笔记1 --(YOLOv2)YOLO9000:Better,Faster,Stronger
目标检测(object detection)系列(五)YOLO:目标检测的另一种打开方式
版权声明:署名,允许他人基于本文进行创作,且必须基于与原先许可协议相同的许可协议分发本文 (Creative Commons)
chaibubble
2019/08/14
7730
目标检测- YOLO v1--You Only Look Once
You Only Look Once: Unified, Real-Time Object Detection
用户1148525
2019/05/26
4210
目标检测算法之YOLO
先假设一个场景,幼儿园老师给小朋友们出了一个题目,看谁能最快的找出笑的最美的那张脸?各位SIGAIer也可以试验下,和小朋友们比比测试下自己的辨识能力。
SIGAI学习与实践平台
2018/08/07
6950
目标检测算法之YOLO
相关推荐
收藏 | YOLO系列综述:从V1到V4
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档