【YOLOv1】《You Only Look Once: Unified, Real-Time Object Detection》

在这里插入图片描述
在这里插入图片描述

CVPR-2016


部分内容参考引用借鉴学习修改摘抄自

【1】图解YOLO by 晓雷
【2】YOLO算法的原理与实现 by 叶虎
【3】YOLO详解 by 赵丽丽
【4】YOLO实时目标检测系统 by 黄月红



1 核心思想:

“We frame object detection as a regression problem to spatially separated bounding boxes and associated class probabilities.”(从 loss 中很容易看出来)

从 R-CNN 到 Fast R-CNN 一直采用的思路是先生成region proposal,然后再对 proposal 进行分类和回归,精度已经很高,但是速度还不行。 YOLO 提供了另一种更为直接的思路: 直接在输出层回归 bounding box 的位置和 bounding box 所属的类别(整张图作为网络的输入,把 Object Detection 的问题转化成一个 Regression 问题)。

2 特点:

这里写图片描述

2.1 优点

  1. YOLO is extremely fast – no complex pipeline
  2. Twice the mean average precision of other real-time systems
  3. YOLO reasons globally about the image – less background errors
  4. YOLO learns generalizable representations of objects – new domain and unexpected input (art works).

2.2 缺点

  1. 识别物体位置精准性差
  2. 召回率低
  3. YOLO 对相互靠的很近的物体(挨在一起且中点都落在同一个格子上的情况),还有很小的群体(eg:flocks of birds,落在一个格子里)检测效果不好,这是因为一个网格中只预测了两个框(两个目标),并且只属于一类
  4. 测试图像中,当同一类物体出现的不常见的长宽比和其他情况时泛化能力偏弱
  5. 对于小物体,YOLO 的表现会不如人意。这方面的改进可以看 SSD,其采用多尺度单元格。也可以看 Faster R-CNN,其采用了 anchor boxes

3 Unified Detection

3.1 Network Design

这里写图片描述

在这里插入图片描述

24 个 conv 2 个 FC(fast yolo 版本 24 conv 被缩减为了 9 conv)

下面的图在 FC 结构上更直观

这里写图片描述

input: 448×448

output: S × S × (B * 5 + C),下面看看输出的 tensor

这里写图片描述

把图片分为S × S个grid,每个 grid 里面负责预测 B个(YOLOv1中B为2)bounding box 和 C 种类别之一,每个 bounding box 由5个参数构成,分别是p,x,y,w,h

p: These confidence scores reflect how confident the model is that the box contains an object and also how accurate it thinks the box is that it predicts.

P = P r ( O b j e c t ) ∗ I O U p r e d t r u t h P = Pr(Object)*IOU_{pred}^{truth} P=Pr(Object)IOUpredtruth

  • P r ( O b j e c t ) Pr(Object) Pr(Object): 如果 ground truth 落在这个grid cell里,取 1,否则取 0

  • I O U p r e d t r u t h IOU_{pred}^{truth} IOUpredtruth: predict 的 bounding box 与 ground truth的 IOU

  • x , y x,y x,y :bounding box的中心坐标,在某个grid中,所以是相对每个grid的,grid的左上角为(0,0),右下角为(1,1)

  • w , h w,h w,h:bounding box的长宽,是相对整张图的
    所以 x , y , h , w x,y,h,w x,y,h,w都是0~1之间的

  • C 个类别为 C conditional class probabilities P r ( C l a s s i ∣ O b j e c t ) Pr(Class_i | Object) Pr(ClassiObject). These probabilities are conditioned on the grid cell containing an object,一个 cell 只能预测一个类别

eg :下图把图片分为 7×7 个 grid,每个 grid 两个bounding box 是 2*5,二十个类别是 20

output: 7×7×(2*5+20) = 7×7×30

这里写图片描述
这里写图片描述

3.2 Training

预训练分类网络: 在 ImageNet 1000-class competition dataset 上预训练一个分类网络,分类网络仅用前 20 个 conv ,输入是 224*224

训练检测网络:在与训练网络的结构基础上添加 4个卷积层和 2个全链接层,随机初始化权重。检测要求细粒度的视觉信息,输入是 448*448。

采用是的是 LReLU 激活函数函数

在这里插入图片描述

损失函数

如何判断一个 grid cell 中是否包含 object 呢?答案是:如果一个 object 的 ground truth 的中心点坐标在一个 grid cell 中,那么这个 grid cell 就是包含这个 object,也就是说这个 object 的预测就由该 grid cell负责。

虽然每个格子可以预测 B 个bounding box,但是最终只选择只选择 IOU 最高的 bounding box 作为物体检测输出(YOLO在训练中不是每个预测框都要与GT 计算误差,这里选择的是 IOU 值最大的与 GT 边框求误差,也就是说每个网格只有一个边框与真实值求误差,并反向传播)
这里写图片描述

I i o b j \mathbb{I}_{i}^{obj} Iiobj denotes if object appears in cell i i i and I i j o b j \mathbb{I}_{ij}^{obj} Iijobj denotes that the j j j th bounding box predictor in cell i i i is “responsible” for that prediction

  • 首先区分定位误差分类误差
  • 然后其区分不包含目标的边界框含有目标的边界框的置信度

损失函数的设计目标就是让坐标 (x,y,w,h)confidenceclassification 这个三个方面达到很好的平衡。简单的全部采用了sum-squared error loss来做这件事会有以下不足:

  • 分类和定位:8 维的 localization error 和 20 维的 classification error同等重要显然是不合理的;(It weights localization error equally with classification error which may not be ideal
  • cell 中有无目标:如果一个网格中没有 object(一幅图中这种网格很多),那么就会将这些网格中的 box 的 confidence push到 0,相比于较少的有 object 的网格,这种做法是overpowering 的,这会导致网络不稳定甚至发散。
  • 大目标与小目标:Sum-squared error also equally weights errors in large boxes and small boxes(大目标的小误差要比同样误差的小目标影响要小,一视同仁显然不好)

解决方案如下

  • 更重视 8 维的坐标预测,给这些损失前面赋予更大的loss weight, 记为 λ c o o r d \lambda_{coord} λcoord ,在 pascal VOC 训练中取 5(上图蓝色框)——坐标预测和类别预测是 5:1 的差别。

  • 对没有 object 的 bbox 的 confidence loss,赋予小的loss weight,记为 λ n o o b j \lambda_{noobj} λnoobj,在 pascal VOC 训练中取 0.5(上图橙色框)——有目标和没目标是 1:0.5 的差别。

  • 有 object 的 bbox 的 confidence loss (上图红色框) 和类别的 loss (上图紫色框)的 loss weight 正常取 1。

  • 对不同大小的 bbox 预测中,相比于大 bbox 预测偏一点,小 box 预测偏一点更不能忍受。而 sum-square error loss 中对同样的偏移 loss是一样。 为了缓和这个问题,作者用了一个比较取巧的办法,就是将 box 的width 和 height 取平方根代替原本的 height 和 width。 如下图:small bbox 的横轴值较小,发生偏移时,反应到 y 轴上的 loss(下图绿色)比 big box (下图红色) 要大。
    这里写图片描述

3.4 Inference

Test 的时候,每个网格预测的 class 信息 P r ( C l a s s i ∣ O b j e c t ) Pr(Class_i | Object) Pr(ClassiObject) 和 bounding box 预测的 confidence 信息 P r ( O b j e c t ) ∗ I O U p r e d t r u t h Pr(Object) \ast IOU^{truth}_{pred} Pr(Object)IOUpredtruth 相乘,就得到每个bounding box 的 class-specific confidence score.

These scores encode both the probability of that class appearing the box and how well the predicted box fits the object.

这里写图片描述

等式左边第一项就是每个网格预测的类别信息,第二三项就是每个 bounding box 预测的 confidence。这个乘积即 encode 了预测的 box 属于某一类的概率,也有该 box 准确度的信息。
这里写图片描述
这里写图片描述

  对每一个网格的每一个bbox执行同样操作: 7x7x2 = 98 bbox (每个bbox既有对应的class信息又有坐标信息)
这里写图片描述
这里写图片描述
这里写图片描述

  得到每个 bbox 的 class-specific confidence score 以后,设置阈值,滤掉得分低的 boxes,对保留的 boxes 进行NMS 处理,就得到最终的检测结果。

这里写图片描述

4 Experiments

4.1 VOC 2007 Error Analysis

这里看一下 YOLO 算法在 PASCAL VOC 2007 数据集上的性能,这里 YOLO 与其它检测算法做了对比,包括DPM,R-CNN,Fast R-CNN 以及 Faster R-CNN。与实时性检测方法 DPM 对比,可以看到 YOLO 算法可以在较高的 mAP 上达到较快的检测速度,其中 Fast YOLO 算法比快速 DPM 还快,而且 mAP 是远高于DPM。但是相比 Faster R-CNN,YOLO 的 mAP 稍低,但是速度更快。所以,YOLO 算法算是在速度与准确度上做了折中。

在这里插入图片描述

为了进一步分析 YOLO 算法,文章还做了误差分析,将预测结果按照分类与定位准确性分成以下 5 类:

  • Correct:类别正确,IOU>0.5;(准确度)
  • Localization:类别正确,0.1 < IOU<0.5(定位不准);
  • Similar:类别相似,IOU>0.1;
  • Other:类别错误,IOU>0.1;
  • Background:IOU<0.1 for any object

可以看到,YOLO 的 Correct 的是低于 Fast R-CNN。另外 YOLO 的 Localization 误差偏高,即定位不是很准确。但是 YOLO 的 Background 误差很低,说明其对背景的误判率较低。

4.2 Combining Fast RCNN and YOLO

“YOLO makes far fewer background mistakes than Fast R-CNN. By using YOLO to eliminate background detections from Fast R-CNN we get a significant boost in performance.”
在这里插入图片描述
用最好的 Fast RCNN 版本与其他版本进行 combine,结果是与 YOLO combine 的话 mAP 最高!

because YOLO makes different kinds of mistakes at test time that it is so effective at boosting Fast R-CNN‘s performance

4.3 VOC 2012 Results

在这里插入图片描述

fast R-CNN 和 YOLO combine 在一起还是有一战之力的

4.4 Generalizability: Person Detection in Artwork

在这里插入图片描述

Artwork and natural images are very different on a pixel level but they are similar in terms of the size and shape of objects, thus YOLO can still predict good bounding boxes and detectios

YOLO 在跨数据集上点掉的没那么夸张!

在这里插入图片描述
although it does think one person is an airplane,哈哈哈哈

5 Conclusion(Own)

附录——目标检测二十年

http://www.360doc.com/content/18/0320/11/52505666_738677892.shtml

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值