主要内容

用于对象检测的锚框

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

什么是锚箱?

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

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

使用锚盒的优势

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

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

锚盒是如何工作的?

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

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

定位误差和细化

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

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

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

生成对象检测

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

锚箱尺寸

多尺度处理使网络能够检测不同大小的物体。要实现多尺度检测,必须指定不同大小的锚框,例如64 × 64、128 × 128和256 × 256。指定能紧密代表训练数据中对象的比例和纵横比的大小。有关估计大小的示例,请参见从训练数据估计锚箱

相关的例子

更多关于