YOLOV1阅读笔记

简述

  • 将目标检测作为回归问题
  • 用整张图片作为输入,得到bounding boxes和相关的类别概率

优势

  • 快。base YOLO model实时处理图片45帧/秒;Fast YOLO达到了155帧/秒,并且mAP是其它实时监测器的2倍。
  • 背景类别分类正确率更高
  • 泛化性更强

主要思想

本文将目标识别的组件统一到单个卷积网络中,使用整张图片的特征来预测每个bounding box,并且一张图片上所有bounding boxes的预测是同时进行的。YOLO在保持较高平均精度的同时实现了端到端的训练和实时的速度

  • 将输入的图片划分成 S × S S\times S S×S的网格。如果一个object的中心落在某个网格中,那么这个网格负责这个object的检测

  • 每一个网格预测B个bounding boxes和这些boxes的confidence score。这些confidence score表明了

    • 这个box包含一个object的可信度大小
    • 这个box预测结果的准确度大小

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

    • 如果网格中不存在object, P r ( O b j e c t ) = 0 Pr(Object)=0 Pr(Object)=0,即confidence score等于0
    • 否则, P r ( O b j e c t ) = 1 Pr(Object)=1 Pr(Object)=1,此时confidence score等于预测box与ground box之间的IoU
  • 每个bounding box包含5个预测值:x,y,w,h和confidence:

    • 其中(x,y)表示相对于网格边界的box的中心
    • width(w)和height(h)相对于整张图片预测
    • confidence同上所述
  • 每个网格还预测C个条件类别概率 P r ( C l a s s i ∣ O b j e c t ) Pr(Class_i|Object) Pr(ClassiObject),表示在网格包含Object时类别为 C l a s s i Class_i Classi的概率

所以这些预测的输出是一个 S × S × ( B ∗ 5 + C ) S\times S\times (B*5+C) S×S×(B5+C)的tensor.

设计细节

img

网络结构借鉴于GoogLeNet。有24个卷积层+2个全连接层。用 1 × 1 1\times 1 1×1的reduction layer后边紧跟 3 × 3 3\times 3 3×3的卷积层替代了GoogLenet中使用的inception modules,用来减少嵌满层得到的特征空间。

  • 最后一个层预测类别概率和bounding box坐标。使用图像的宽和高归一化bounding box的宽和高,使用特定网格位置的offset归一化bounding box 的x,y坐标。

  • 最后一层使用线性激活函数,其他层的激活函数使用leaky ReLu

  • 为了优化方便,本文使用了sum-squared error来设计损失函数,这样导致的问题是:

    • 会使得定位误差和分类误差同等重要,这样是不理想的
    • 因为很多网格中不包含任何object,这些网格中box的confidence便会等于0,这会使得模型不稳定

    为了解决这些问题,采取的方法是:

    • 增加bounding box坐标预测的loss,减少不包含object的box的confidence预测的loss,使用了两个参数 λ c o o r d λ_{coord} λcoord λ n o o b j λ_{noobj} λnoobj来实现,并设置 λ c o o r d = 5 λ_{coord}=5 λcoord=5 λ n o o b j = 0.5 λ_{noobj}=0.5 λnoobj=0.5.
  • 由于比起大box的小偏移,小box的小偏移更应该引起重视,但是在sum-squared error下这两种情况是没有区别的。所以本文采取直接预测bounding box宽和高的平方根。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qu5mmBop-1570797907441)(YOLOV1.assets/1570796236983.png)]

  • YOLO在每个网格中预测多个bounding box,在训练阶段只想要一个bounding box预测器负责一个类别,因此让一个预测器屈服一个类别(预测结果与ground truth之间的IOU最高的类别)。(Ps:个人不理解)

局限性

  • 由于一个网格只能预测两个box并且只能有一个class,这种限制了可以预测的相邻物体的数量。在成群出现的小物体预测上表现不够好,比如鸟群。
  • 对于新的、不常见的纵横比的泛化性不好
  • 本文的损失函数对于小的bounding box和大的bounding box的损失是一样的,但是应该来说,小错误在大的box上一般来说是良性的,但是在小box上会对IOU有一个很大的影响。这导致了定位的准确性偏低。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值