主要内容

用于对象检测的锚盒

利用深度学习神经网络进行目标检测可以快速、准确地预测图像中目标的位置和大小。理想情况下,网络会及时返回有效对象,而不考虑对象的规模。锚盒的使用提高了深度学习神经网络框架检测部分的速度和效率。

什么是锚箱?

锚箱是一组具有一定高度和宽度的预定义边界框。这些方框的定义是为了捕获您想要检测的特定对象类的比例和宽高比,通常是根据训练数据集中的对象大小选择的。在检测期间,预定义的锚框被平铺在图像上。该网络预测每个平铺锚框的概率和其他属性,如背景、IoU和偏移量。这些预测被用来细化每个单独的锚盒。您可以定义多个锚框,每个锚框对应不同的对象大小。锚盒是固定的初始边界盒猜测。

该网络并不直接预测边界框,而是预测与平铺锚框对应的概率和细化。网络为定义的每个锚盒返回一组唯一的预测。最后的特征图表示每个类的对象检测。锚盒的使用使网络能够检测多个对象、不同规模的对象和重叠的对象。

使用锚盒的优点

当使用锚框时,您可以一次评估所有对象预测。锚盒消除了用滑动窗口扫描图像的需要,滑动窗口在每个可能的位置计算一个单独的预测。使用滑动窗口的检测器的例子是那些基于聚合通道特征(ACF)或梯度直方图(HOG)特征的检测器。使用锚盒的物体探测器可以一次处理整个图像,使实时物体检测系统成为可能。

由于卷积神经网络(CNN)可以以卷积的方式处理输入图像,因此输入图像中的空间位置可以与输出图像中的空间位置相关联。这种卷积对应意味着CNN可以一次提取整个图像的图像特征。然后,提取的特征就可以与它们在图像中的位置相关联。锚盒的使用取代并大大降低了从图像中提取特征的滑动窗口方法的成本。使用锚盒,您可以设计有效的深度学习对象检测器,以包含基于滑动窗口的对象检测器的所有三个阶段(检测、特征编码和分类)。

锚盒是如何工作的?

锚盒的位置是通过将网络输出的位置映射回输入图像来确定的。对每个网络输出复制该过程。结果在整个图像中生成一组平铺锚框。每个锚框表示一个类的特定预测。例如,在下图中,有两个锚框用于对每个位置进行两次预测。

每个锚框被平铺在图像上。网络输出的数量等于平铺锚盒的数量。这个网络产生对所有输出的预测。

本地化错误和改进

的距离,或者,在平铺锚盒之间是一个函数的向下采样目前在CNN的数量。向下抽样因子在4到16之间是常见的。这些向下采样因素会产生粗糙的锚盒,从而导致定位错误。

为了修复定位错误,深度学习对象检测器学习偏移量,以应用于每个平铺锚盒,从而细化锚盒的位置和大小。

通过去除下采样层可以减少下采样。要减少下采样,请降低“属性的卷积或最大池化层,(例如convolution2dLayer(深度学习工具箱)maxPooling2dLayer(深度学习工具箱))。您还可以在网络的前面选择一个特征提取层。网络早期的特征提取层具有更高的空间分辨率,但与网络更深层的层相比,提取的语义信息可能更少

生成对象检测

为了生成最终的目标检测,将删除属于背景类的平铺锚盒,并通过其置信度评分过滤其余锚盒。使用非最大抑制(NMS)选择置信度得分最高的锚盒。关于网管的详细信息,请参见selectStrongestBboxMulticlass函数。

锚箱的大小

多尺度处理使网络能够检测出不同大小的目标。要实现多尺度检测,必须指定不同大小的锚盒,如64 × 64、128 × 128和256 × 256。指定与训练数据中对象的比例和高宽比密切相关的尺寸。有关估计大小的示例,请参见根据训练数据估计锚盒

相关的例子

更多关于