YOLOv1(预测过程)

YOLOv1(预测过程)

输入:448 * 448 * 3图像

输出:7 * 7 * 30 张量

具体步骤:

输入:

一、图向分为7 * 7网格,每个小格称为一个grid cell

二、每个grid cell 能预测出如下:

  1. 2个bounding box,即2个预测框,这B个预测框的中心点都落在生成这个预测框的grid cell里(所以每张图片会生成7 * 7 * 2 = 98个bounding box)
  2. 对应每种类别的条件概率,即在这个grid cell生成的bounding box框住的是一个物体的前提下,这个物体对应每种类别的条件概率

三、每个bounding box包含如下参数:

  1. 置信度(即这个框框住的是一个完整物体的概率,置信度越大,证明框住的是一个物体的概率越大)
  2. 框的左上角X、Y坐标
  3. 框的长宽,即Height和Width

这样的话用上面提到的置信度 * 每种类别的条件概率,即可得到每个bounding box对应各个类别的概率

YOLOv1(预测过程)_第1张图片

  • 1号图中显示图片被分为7 * 7 = 49个grid cell
  • 2号图中显示每个grid cell生成2个bounding box(预测框),一共98个bounding box,框的粗细代表置信度大小,框越粗代表框住的是一个完整物体的概率越大
  • 3号图中用不同颜色表示每个grid cell所预测的物体最可能属于分类,如蓝色的grid cell生成的最可能bounding box最可能框住的是狗、黄色的grid cell最可能预测自行车…
  • 4号图为最终输出的显示效果

输出:

最终输出7 * 7 * 30的张量:7 * 7对应的是每张图片会分割成7 * 7 = 49个grid cell,那么每个grid cell对应输出即为一个1 * 1 * 30的张量

30维向量输出的是什么?

  1. 前10维分为2部分,每部分5维,分别对应这个grid cell生成的2个bounding box各自的5个参数(左上角X、Y坐标、Height和Width、置信度)
  2. 后20维是上面提到的该grid cell生成的 每种类别的条件概率

如图:
YOLOv1(预测过程)_第2张图片

每个grid cell只能预测出一个物体(即计算后对应概率最高的类别物体),也就说明了yolov1中一张图片最多只能预测出49个物体,这也是yolov1的缺点所在,即小目标、密集目标识别性能差

简答来说就是一张图片分成49个小格,每个小格能生成2个不一样的框,最终在2个框中选择一个框住一个完整物体可能性最大的框,并预测出框住的物体的最大可能类别,最终在得出的49个框中选择概率最高的几个框画出在图片上,作为最终显示出来的识别效果。

后处理:

主要是用于过滤掉低置信度的框,并且把重复的框去掉,只保留一个,从而得出最终的检测结果。

上面提到卷积神经网络最终会输出7 * 7 * 30维的张量,其中包括每个grid cell对应每种类别的条件概率,那么用每个grid cell所生成的2个bounding box的置信度分别乘以该grid cell对应20个类别的条件概率,即可得到全部98个bounding box对应20个类别的全概率,相当于98个1 * 20的张量。

如图:

YOLOv1(预测过程)_第3张图片

每个bounding box选择对应全概率最高的那个类别作为最终分类,可视化出来如下:

YOLOv1(预测过程)_第4张图片

其中不同的颜色代表不同的分类,框的粗细代表bounding box的置信度

那么怎么选择最合适的框输出呢?

还得拿上面提到的98个1 * 20的张量做文章。

假设这98个张量的1号位置的元素是表示物体是“狗”的概率,那么针对“狗”这个类别,需要做三件事:

  1. 设置一个概率值p,将98个张量的1号位置小于p的全部置0(假如p = 0.2,则将是狗的概率<0.2的这些概率全部置0),相当于认为这些框识别出来的分类不可能是“狗”了
  2. 将这98个张量按照1号元素的大小(是“狗”的概率)依次排序
  3. 进行非极大值抑制(Non-Maximum Suppression)

什么是非极大值抑制?

主要目的是去掉重复预测同一个物体的框,只保留最优的那个框

上面我们已经得到按照”狗“的概率大小排好序的98个张量,接下来操作如下:

  1. 将排在第一名的最大的那个概率对应的bounding box拿出来,依次和后面的概率对应的框做对比,比什么?比IOU(交并比,可以理解为体现两个框重合部分大小的一个量)
  2. 设置一个值i,如果两个框的IOU>i,则说明这两个框重合度很高,我们认为这两个框预测的是同一个物体,那么这两个框最终只能留一个,我们选择概率大的框留下,将概率小的框对应的概率值置0(淘汰)

如图:

橙色和绿色的框IOU太大,把概率较小的绿框淘汰

YOLOv1(预测过程)_第5张图片

  1. 将第一名跟后面比较完一遍,再将概率第二高的框(图中是0.2)按相同的规则依次和后面比,以此类推…
  2. 有上面3个步骤我们将1号位置:“狗”的分类情况过滤完成,后面要做的就是将剩余19个分类按照和以上3个步骤相同的方式完成。

最终,经过层层筛选,不断置0,淘汰,有一些框凭借优秀的精准度存活了下来,将最终留下的概率非0的框及所对应的类别画在图上,即得出最终的目标检测结果。

如图:

YOLOv1(预测过程)_第6张图片

你可能感兴趣的:(深度学习,人工智能,深度学习,计算机视觉,目标检测)