卷积神经网络—目标检测 学习笔记(中)

70 阅读3分钟

「这是我参与11月更文挑战的第11天,活动详情查看:2021最后一次更文挑战」。

3.4 滑动窗口的卷积实现(Convolutional implementation of sliding windows)

滑动窗口算法计算成本高的主要原因是有许多重复计算,如下图所示: pandas 在滑动过程中,红框和绿框重叠区域会被计算多次,这浪费了很多计算时间,因此要改进滑动窗口就要避免重复计算。 先看一下滑动窗口算法的结构: sliding windows 由于使用全连接层,每次处理只能输出一个结果。而如果我们想共享重叠部分的计算,很自然想到一次处理得到所有窗口的结果,全连接层难以胜任,所以我们要使用卷积层代替全连接层。如下图所示: conv 注意,这里是以四分类为例,所以最后得到的是一个1*1*4的结果,分别代表每种分类的概率。 这样便完成了全连接层向卷积层的转换,接下来要实现一次处理得到所有窗口: one 如上图所示,假设我们对28*28大小的图片截取8*8个窗口,最终的分类结果有四种。由于图像位置关系都是一一对应的,所以原图中(1,1)处的窗口对应处理后(1,1)处的结果,原图中(i,j)处的窗口对应处理后(i,j)处的结果。 这样便实现了一次处理得到所有窗口的结果。 滑动窗口的卷积实现已经很高效,但缺点是边界框不够准确。 因为边界框完全由窗口大小及步长决定,很难使所有的目标恰好在窗口中。

3.5 Bounding Box Prediction

主要描述了YOLO(You Only Look Once)算法:

  1. 将输入图像划分成N*N 的网格。
  2. 对N*N个网格使用定位分类

image

需要注意一下几点:

  • YOLO使用的是卷积实现,可以一次处理N*N个网格。
  • 目标的中点位于哪个网格,那么就认为目标位于该网格。
  • 每个网格都会产生一个定位分类中的Y(维度为8),所以算法最后的输出是一个N*N*8的结果。
  • 对于目标中心的指定,以目标所在网格的左上为(0,0),右下为(1,1)来进行表示。当物体跨越多个网格时,bh,bwb_{h}, b_{w} 会大于1。

当网格内的目标不超过一个时,YOLO算法表现很好,可以达到实时检测。当一个网格出现多个目标时,可以考虑使用更稠密的网格。

3.6 交并比(intersection over union)

为了衡量定位精确度,引入了交并比的概念。 顾名思义,交并比是两个集合交集 比 它们的并集。以下图为例 IoU 紫色框区域为预测的目标位置,红色框区域为目标的真实位置,二者的交并比为黄色区域比绿色区域。 一般交并比≥0.5时,我们就认为定位结果是可以接受的。IoU越大,说明定位精度越高。