1. 磐创AI-开放猫官方网站首页
  2. Medium

 - 目标检测20年论文阅读综述(六)

要素地图共享计算

在目标检测器的不同计算阶段中,特征提取通常是计算量的主要部分。对于基于滑动窗口的检测器,计算冗余是从位置和尺度两个方面开始的,前者是由相邻窗口之间的重叠引起的,而后者是由相邻尺度之间的特征相关性引起的。

空间计算冗余与加速

特征地图共享计算是指在整个图像上滑动窗口之前,只需计算一次整个图像的特征地图。传统探测器的“图像金字塔”在这里可以被认为是“特征金字塔”。

例如,为了提高HOG行人检测的速度,研究人员通常会累积整个输入图像的“HOG图”,如图13所示。然而,这种方法的缺点也很明显,即特征图的分辨率(该特征图上滑动窗口的最小步长)将受到单元大小的限制。如果一个小物体位于两个细胞之间,那么它可能会被所有检测窗口忽略。解决这个问题的一种方法是构建一个完整的特征金字塔。

同样的想法也被广泛应用于基于卷积的检测器。近年来,大多数基于CNN的探测器,例如SPPNet、Fast-RCNN和FAST-RCNN都采用了类似的思想,实现了数十倍甚至数百倍的加速。

扩展计算冗余和加速

为了减少尺度计算冗余,最成功的方法是直接缩放特征,而不是图像,这是第一次在主播检测器中应用的方法。然而,由于模糊效果,这样的方法不能直接应用于类似猪的特征。针对这一问题,我们发现HOG的邻域尺度与整体信道特征之间存在很强的(对数线性)相关性。这种相关性可用于通过近似相邻尺度的特征地图来加速特征金字塔的计算。

构建“探测器金字塔”是另一种解决方案,即通过简单地在一个特征地图上滑动多个探测器来检测不同尺度的对象,而不是重新缩放图像或特征。

分类器的提速

传统的基于滑动窗口的检测器,例如HOG检测器和DPM,由于计算复杂度较低,更喜欢使用线性分类器而不是非线性分类器。使用核支持向量机等非线性分类器进行检测具有较高的准确率,但同时也带来了较高的计算开销。作为一种标准的非参数方法,传统的核方法没有固定的计算复杂度。

在目标检测中,“模型近似”是最常用的加速核化分类器的方法。由于经典核支持向量机的决策边界只能由它的一小部分训练样本(支持向量)来确定,因此推理阶段的计算复杂度与支持向量的个数成正比:O(N_SV)。约简集向量是核支持向量机的一种近似方法,其目的是利用少量的合成向量获得等价的决策边界。另一种提高核支持向量机目标检测速度的方法是将其决策边界近似为分段线性形式,以获得恒定的推理时间。也可以使用稀疏编码方法来加速内核方法。

级联检测

级联检测采用了从粗到精的检测理念:用简单的计算过滤出大多数简单的背景窗口,然后用复杂的窗口处理那些较难的窗口。主播检测器是级联检测的代表。在此之后,许多后续的经典物体探测器,如HOG探测器和DPM,都通过使用该技术进行了加速。

近年来,级联检测也被应用到基于深度学习的检测器中,特别是那些“大场景中的小目标”的检测任务,例如人脸检测、行人检测等。除了算法加速之外,级联检测还被应用于解决其他问题,例如改进硬示例的检测、整合上下文信息和提高定位精度。

网络修剪与量化

网络修剪和量化是两种常用的加速CNN模型的技术,前者指的是修剪网络结构或权值以减小其大小,后者指的是减小激活或权值的码长。

网络修剪

关于“网络修剪”的研究,最早可以追溯到20世纪80年代。当时,Y.LeCun等人。提出了一种称为“最优脑损伤”的方法来压缩多层感知器网络的参数。近年来的网络修剪方法通常采取迭代训练和修剪的过程,即在每一阶段训练后只去除一小部分不重要的权值,然后重复这些操作。由于传统的网络剪枝简单地去掉了不重要的权值,可能会导致卷积过滤中稀疏的连通模式,因此不能直接应用于压缩有线电视新闻网模型。这个问题的一个简单解决方案是删除整个滤波器,而不是独立的权重。

网络量化

最近关于网络量化的工作主要集中在网络二值化上,它旨在通过将网络的激活或权重量化为二进制变量(例如0/1)来加速网络,从而将浮点运算转换为AND、OR而不是逻辑运算。网络二进制化可以显著加快计算速度并减少网络存储,因此可以更容易地将其部署到移动设备上。上述思想的一种可能的实现方式是用最小二乘法近似二进制变量的卷积。通过使用多个二元卷积的线性组合可以获得更精确的近似。此外,一些研究人员进一步开发了用于二值化计算的GPU加速库,取得了更显著的加速效果。

网络蒸馏

网络蒸馏是将大网络(“教师网”)的知识压缩成一个小网络(“学生网”)的一般框架。一种简单的方法是使用教师网来指导(轻量级)学生网的训练,以便后者可以用于加速检测。另一种方法是对候选区域进行变换,使学生网和教师网之间的特征距离最小。

轻量级网络设计

另一种方法是直接设计轻量级网络,而不是使用现成的检测引擎。长期以来,研究人员一直在探索网络的正确配置,以便在有限的时间成本下获得准确性。

因子分解卷积

这是构建轻量级CNN模型的最简单、最直接的方法。有两组因式分解方法。

第一组方法是将一个大的卷积过滤分解成一组空间维度上的小卷积。例如,可以将一个7×7的过滤分解成三个3×3的滤波器,它们共享相同的接受野,但后者更有效。另一个示例是将k×k过滤分解为k×1过滤和1×k过滤,这对于非常大的过滤器(例如15×15)可能更有效。

第二组方法是将一大组卷积在其信道维度上分解成两个小组。例如,可以通过d‘个滤波器+非线性激活+另一个d个滤波器(d’

群卷积


分组卷积将特征信道分成许多不同的组,然后独立地卷积在每个组上。如果将特征信道均匀地分成m组,在不改变其他配置的情况下,卷积的计算复杂度理论上将降低到以前的1/m。

深度可分离卷积


当组的数量被设置为等于通道的数量时,沿深度可分离的卷积可以被视为组卷积的特例。假设我们具有具有D个滤波器和C个信道的特征映射的卷积层。每个过滤的大小为k×k,对于深度可分离的卷积,首先将每个k×k×c个过滤分成c个切片,每个切片的大小为k×k×1,然后对过滤的每个切片分别在每个通道中进行卷积。最后,使用多个1×1滤波器进行维数变换,使得最终输出应具有d个通道。通过深度可分离卷积,将计算复杂度从O(dk²c)降低到O(ck²)+O(Dc)。

瓶颈设计

与前几层相比,神经网络中的瓶颈层包含的节点更少。它可以用来学习降维输入的有效数据编码,这在深度自动编码器中是常用的。近年来,瓶颈设计被广泛应用于轻量级网络的设计。在这些方法中,一种常见的方法是压缩检测器的输入层,以减少从检测流水线的一开始就开始的计算量。另一种方法是对检测引擎的输出进行压缩,使特征图更细,从而为后续的检测阶段提供更高的效率。

神经体系结构搜索

最近,人们对通过神经体系结构搜索(NAS)自动设计网络体系结构而不是严重依赖专家经验和知识产生了浓厚的兴趣。NAS已被应用于大规模图像分类、目标检测和图像分割任务。最近,NAS在设计轻量级网络方面也显示出令人振奋的结果,在搜索过程中同时考虑了预测精度和计算复杂度的约束。

数值加速

整体图像加速比

积分图像有助于快速计算图像子区域的求和。积分图像的本质是信号处理中卷积的积分-微分可分性:

虽然主播探测器以积分图像加速著称,但在它诞生之前,积分图像就已经被用来为一个CNN模型加速,实现了10倍以上的加速。此外,积分图像还可以用来加速目标检测中更一般的特征,如颜色直方图、梯度直方图等。

一个典型的例子是通过计算积分HOG映射来加速HOG。积分HOG贴图不是在传统的积分图像中累加像素值,而是在图像中累加渐变方向。由于单元的直方图可以看作特定区域中梯度矢量的总和,因此通过使用积分图像,可以以恒定的计算开销计算任意位置和大小的矩形区域中的直方图。

2009年晚些时候,人们提出了一种新的图像特征–积分通道特征(ICF),它可以看作是积分图像特征的更一般的情况,并已成功地应用于行人检测。

频域加速比


由于线性检测器的检测可以看作是特征映射和检测器权重之间的窗口内积,因此这一过程可以通过卷积来实现。卷积可以以多种方式加速,其中傅立叶变换是一个非常实用的选择,特别是对于加速那些大滤波器而言。在频域中加速卷积的理论基础是信号处理中的卷积定理,即在适当的条件下,两个信号的卷积的傅里叶变换是其傅里叶空间中的点式乘积:

使用快速傅立叶变换(FFT)和快速傅立叶逆变换(IFFT)可以加速上述计算。

矢量量化

矢量量化(VQ)是信号处理中的一种经典量化方法,其目的是用一小部分原型矢量来近似一大组数据的分布。可用于目标检测中的数据压缩和加速内积运算。例如,利用VQ,可以将猪直方图分组并量化为一组原型直方图向量。然后在检测阶段,通过查表操作实现特征向量与检测权重之间的内积。由于在这个过程中没有浮点乘法和除法,所以DPM和样本SVM检测器的速度可以加速一个数量级以上。

降秩近似

在深层网络中,全连通层的计算实质上是两个矩阵的乘法。当参数矩阵W∈R(u×v)较大时,检测器的计算量较大。降秩近似是一种加速矩阵乘法的方法。其目的是对矩阵W进行低秩分解:

原创文章,作者:fendouai,如若转载,请注明出处:https://panchuang.net/2021/07/24/%e2%80%8a-%e2%80%8a%e7%9b%ae%e6%a0%87%e6%a3%80%e6%b5%8b20%e5%b9%b4%e8%ae%ba%e6%96%87%e9%98%85%e8%af%bb%e7%bb%bc%e8%bf%b0%e5%85%ad/

联系我们

400-800-8888

在线咨询:点击这里给我发消息

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息