主要内容

锚盒用于对象检测

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

什么是锚盒?

锚点是一组具有一定高度和宽度的预定义边界框。这些框被定义为捕获要检测到的特定对象类的比例和纵横比,通常是根据培训数据集中的对象大小选择的。在检测过程中,预定义的锚盒在图像上铺有瓷砖。该网络可预测每个瓷砖锚点的概率和其他属性,例如联合(IOU)的背景,相交的交叉点和偏移。这些预测用于完善每个单独的锚点。您可以定义几个锚点,每个锚点都有不同的对象大小。锚点是固定的初始边界盒猜测。

该网络不能直接预测边界框,而是预测与瓷砖锚点相对应的概率和改进。该网络为定义的每个锚点返回一组唯一的预测集。最终功能映射代表每个类的对象检测。锚点的使用使网络能够检测多个对象,不同尺度的对象和重叠对象。

使用锚箱的优势

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

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

锚箱如何工作?

通过将网络输出的位置映射回输入图像来确定锚点的位置。该过程为每个网络输出复制。结果在整个图像上产生了一组平铺锚盒。每个锚点代表一个类的特定预测。例如,在下图中,每个位置都有两个锚点可以做出两个预测。

每个锚点都在图像上铺有瓷砖。网络输出的数量等于瓷砖锚点的数量。该网络对所有输出产生预测。

本地化错误和完善

距离,或大步,在瓷砖锚点之间是CNN中存在的下采样量的函数。4至16之间的下采样因子很常见。这些下采样因子会产生粗整形的锚箱,从而导致定位错误。

为了解决本地化错误,深度学习对象探测器学习偏移量,以适用于每个瓷砖锚点,以完善锚点的位置和尺寸。

通过去除下采样层可以减少采样。为了减少缩减采样,请降低'大步’卷积或最大池层的财产(例如卷积2Dlayer(深度学习工具箱)maxpooling2dlayer(深度学习工具箱)。)您还可以在网络中早期选择功能提取层。网络早期的特征提取层具有较高的空间分辨率

生成对象检测

为了生成最终的对象检测,删除了属于背景类的瓷砖锚盒,其余的锚箱通过其置信度得分过滤。使用非最大抑制(NMS)选择具有最大置信度得分的锚点。有关NMS的更多详细信息,请参阅selectstrongestbboxmultlass功能。

锚点尺寸

多尺度处理使网络能够检测大小不同的对象。为了实现多尺度检测,您必须指定尺寸不同的锚固箱,例如64 x64、128-by-128和256-by-256。指定大小,这些大小密切表示培训数据中对象的比例和纵横比。有关估计尺寸的示例,请参见从培训数据中估算锚箱

相关示例

更多关于