目标检测:YOLO V1 思想总结

目标检测:YOLO V1 思想总结

  • YOLO V1
    • Introduction(模型介绍)
    • Network Design(网络设计)
      • Backbone(骨干网络)
      • Grid Cell(单元格)
      • Loss Function(损失函数)
    • Training
    • 小结

YOLO V1

目标检测:YOLO V1 思想总结_第1张图片

Introduction(模型介绍)

  1. YOLO V1在当时的速度非常快,FastYOLO可以达到150FPS。
  2. 它的背景误判率小于Faster RCNN,由于它直接提取全图的特征(前景与背景的关系),而后者则是提取候选框的特征。
  3. 迁移学习效果好。
  4. 在小目标上表现不佳。

Network Design(网络设计)

目标检测:YOLO V1 思想总结_第2张图片

Backbone(骨干网络)

目标检测:YOLO V1 思想总结_第3张图片
yolo的骨干网络是一个很简单网络,总体类似于VGG,采用3 * 3的卷积,最后全连接层输出4096维的向量,然后在跟一个全连接 (7 * 7 * 30)1430维的向量, 然后把它 resize成 7 * 7 * 30的一个tensor,这里面的每一个channel维就对应了一个单元格。

Grid Cell(单元格)

它把输入的一张图像分成 S * S 的网格(原文S=7),如果标注框的中心落在其中的一个 单元格,那么这个单元格就负责预测这个标注框对应的类别。每个单元格预测B个bounding box,每个bounding box 包含 四个坐标(x,y,w,h),和一个confidence。

其中这四个坐标为:x ,y 是bounding box的中点,用gird cell 左上角的偏移量表示,wh是相对于原图的大小,它们都是被归一化的。
目标检测:YOLO V1 思想总结_第4张图片

confidence 的公式为:
目标检测:YOLO V1 思想总结_第5张图片
其中 Pr(object)为gird cell是否包含物体中心的概率,非0即1,后者表示如果gird cell 负责预测某一类别,它的标注框与预测框的IOU。
其中每个gird cell还会预测每个类别的概率,公式为:
在这里插入图片描述
其中第一项就这个gird cell在负责预测某一类别的情况下,所有类别的softmax概率。
那么我们用什么样的feature来代表gird cell 呢?
目标检测:YOLO V1 思想总结_第6张图片
根据骨干网络输出的feature,每一个channel维就是每一个 gird cell 的 feature。

那么最终模型会输出 S * S *(5B+C)shape 的 tensor。

Loss Function(损失函数)

均方误差对需要细粒度的目标检测任务比较敏感,所以大部分都采用均方误差。
目标检测:YOLO V1 思想总结_第7张图片

这里我们首先解释 λ \lambda λ,由于作者发现大部分的 gird cell 不负责预测物体,那么它们就没有坐标,只有背景的confdence,而这部分占大多数,就会掩盖住有物体的gird cell 所产生的loss,所以把下标为 coord的lambda 设为5,noobj设置为0.5,以便均衡两者。
目标检测:YOLO V1 思想总结_第8张图片
其中对不同尺度的IOU而言,当他们的偏移量一致的时候,小的bounding box 产生的误差要更大,所有为 w h 去根号,小的wh 会获得较小的loss,反之较大。

Training

首先把骨干网络 在Image Net上跑一遍,达到了很好的精度后,然后把权重拿到yolo,把input size 改为 448 * 448 因为检测任务对feature map 细粒度要求大。
激活函数采用 Leaky relu,根据训练epoch衰减lr, dropour =0.5. 数据增强。

小结

YOLO以速度见长,处理速度可以达到45fps,其快速版本(网络较小)甚至可以达到155fps。这得益于其识别和定位合二为一的网络设计,而且这种统一的设计也使得训练和预测可以端到端的进行,非常简便。
不足之处是小对象检测效果不太好(尤其是一些聚集在一起的小对象),对边框的预测准确度不是很高,总体预测精度略低于Fast RCNN。主要是因为网格设置比较稀疏,而且每个网格只预测两个边框,另外Pooling层会丢失一些细节信息,对定位存在影响。 更多细节请参考原论文。

你可能感兴趣的:(深度学习理论,目标检测,深度学习,人工智能)