yolo1 思想与输出的形式

Catalogue
  1. 1. 只说结论
  2. 2. 非极大值抑制算法(non maximum suppression, NMS)
  3. 3. 滑动窗口与CNN
    1. 3.1. 滑动窗口
      1. 3.1.1. 介绍
      2. 3.1.2. 缺点
    2. 3.2. CNN
      1. 3.2.1. 缺点
  4. 4. yolo如何做的
    1. 4.0.0.1. 思想
    2. 4.0.0.2. 具体点的
      1. 4.0.0.2.1. 置信度
      2. 4.0.0.2.2. 含有目标的可能性大小
      3. 4.0.0.2.3. 边界框的准确度
      4. 4.0.0.2.4. 因此置信度可以定义为
  • 4.1. 输出解释
    1. 4.1.1. 总输出
      1. 4.1.1.1. 一部分
      2. 4.1.1.2. 另一部分(分类问题)
      3. 4.1.1.3. 所以
  • 只说结论

    yolo1 将一张图片分割为S*S个单元格,每个单元格输出(Bx5+C)个值。

    解释:

    B:每个单元格将会预测B个边框。(就是圈B个框框)

    5:每个圈出来的框框有5个参数 [公式] ,其中前四个是相对于单元格的比例(就是0到1之间的数)。c代表该单元格的置信度。用该单元格含有目标的概率准确度乘积表示。

    C: one-hot编码的属于C个类别的预测值。

    所有单元格的就是S*S(Bx5+C)个值

    非极大值抑制算法(non maximum suppression, NMS)

    这个算法不单单是针对Yolo算法的,而是所有的检测算法中都会用到。NMS算法主要解决的是一个目标被多次检测的问题,如图11中人脸检测,可以看到人脸被多次检测,但是其实我们希望最后仅仅输出其中一个最好的预测框。

    首先从所有的检测框中找到置信度最大的那个框,然后挨个计算其与剩余框的IOU(个人理解为重合区域比例),如果其值大于一定阈值(重合度过高),那么就将该框剔除;然后对剩余的检测框重复上述过程,直到处理完所有的检测框。Yolo预测过程也需要用到NMS算法。

    滑动窗口与CNN

    滑动窗口

    介绍

    采用滑动窗口的目标检测算法思路非常简单,它将检测问题转化为了图像分类问题。其基本原理就是采用不同大小和比例(宽高比)的窗口在整张图片上以一定的步长进行滑动,然后对这些窗口对应的区域做图像分类,这样就可以实现对整张图片的检测了

    缺点

    但是这个方法有致命的缺点,就是你并不知道要检测的目标大小是什么规模,所以你要设置不同大小和比例的窗口去滑动,而且还要选取合适的步长。这样会产生很多的子区域,并且都要经过分类器去做预测,这需要很大的计算量,所以你的分类器不能太复杂,因为要保证速度。

    CNN

    可以使用CNN实现更高效的滑动窗口方法

    一种全卷积的方法,简单来说就是网络中用卷积层代替了全连接层

    输入图片大小是16x16,经过一系列卷积操作,提取了2x2的特征图,但是这个2x2的图上每个元素都是和原图是一一对应的,如图上蓝色的格子对应蓝色的区域,这不就是相当于在原图上做大小为14x14的窗口滑动,且步长为2,共产生4个子区域。

    之所CNN可以实现这样的效果是因为卷积操作的特性,就是图片的空间位置信息的不变性,尽管卷积过程中图片大小减少,但是位置对应关系还是保存的。

    缺点

    尽管可以减少滑动窗口的计算量,但是只是针对一个固定大小与步长的窗口

    yolo如何做的

    思想

    直接将原始图片分割成互不重合的小方块,然后通过卷积最后生产这样大小的特征图。可以认为特征图的每个元素也是对应原始图片的一个小方块,然后用每个元素来可以预测那些中心点在该小方格内的目标。

    具体点的

    具体来说,Yolo的CNN网络将输入的图片分割成S*S个单元格,然后每个单元格负责去检测那些中心点落在该格子内的目标

    每个单元格会预测 B个边界框(bounding box)以及边界框的置信度(confidence score)

    置信度

    所谓置信度其实包含两个方面,一是这个边界框含有目标的可能性大小,二是这个边界框的准确度。

    含有目标的可能性大小

    记为 [公式] ,当该边界框是背景时(即不包含目标),此时 [公式] 。而当该边界框包含目标时, [公式]

    边界框的准确度

    可以用预测框与实际框(ground truth)的IOU(intersection over union,交并比)来表征,记为 [公式]

    因此置信度可以定义为 [公式]

    输出解释

    边界框的大小与位置可以用4个值来表征: [公式] ,其中 [公式] 是边界框的中心坐标,而 [公式][公式] 是边界框的宽与高

    还有一点要注意,中心坐标的预测值 [公式] 是相对于每个单元格左上角坐标点的偏移值,并且单位是相对于单元格大小的,单元格的坐标定义如图6所示。而边界框的 [公式][公式] 预测值是相对于整个图片的宽与高的比例,这样4个元素的大小应该在 [公式] 范围。

    总输出

    一部分

    每个边界框的预测值实际上包含5个元素: [公式] ,其中前4个表征边界框的大小与位置,而最后一个值是置信度。

    另一部分(分类问题)

    每一个单元格其还要给出预测出 [公式] 个类别概率值,但yolo1每个单元格只预测一个类别。后来的版本会有改进,暂时不提。

    所以

    一个单元格会有[公式]个值

    总的S*S个会有 [公式]个值