主要内容

用于对象检测的锚盒

使用深度学习神经网络的物体检测可以提供快速准确的方法来预测图像中物体的位置和大小。理想情况下,无论对象的大小如何,网络都能及时返回有效对象。锚盒的使用提高了深度学习神经网络框架检测部分的速度和效率。

什么是锚盒?

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

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

使用锚盒的优势

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

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

锚盒是如何工作的?

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

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

定位误差和改进

距离,或者,在平铺锚框之间是CNN中存在的下采样量的函数。降采样因子在4到16之间是常见的。这些下采样因素会产生粗糙的锚盒,从而导致定位误差。

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

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

生成目标检测

为了生成最终的目标检测,删除属于背景类的平铺锚框,并根据其置信度评分对剩余的锚框进行过滤。采用非最大抑制法(NMS)选择置信度最大的锚盒。有关NMS的详细信息,请参见selectStrongestBboxMulticlass函数。

锚箱尺寸

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

相关的例子

更多关于