主要内容

对象检测的锚框

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

什么是锚盒?

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

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

使用锚盒的优势

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

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

锚盒是如何工作的?

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

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

定位误差与细化

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

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

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

生成对象检测

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

锚箱的大小

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

相关的例子

更多关于

Baidu
map