深兰科技软件测试:目标检测二十年间那些事儿
深兰科技软件测试:目标检测二十年间那些事儿分解卷积此外,近年来也有一些新的技术,见下图:目标检测速度的提升一直是一个重要而又具有挑战性的问题。在过去的20年里,目标检测领域已经发展了许多复杂的加速技术。接下来我们简要介绍“轻量化网络设计”、“数值加速”、“特征检测优化”、“语义分割”等重要优化方法。轻量网络设计基于 CNN 检测器的轻量化方法是直接设计一个轻量级的网络,而不是使用现成的检测引擎。研究人员长期以来一直在探索网络的正确配置,以便在有限的时间成本下获得准确性。一个通用的设计原则是“更少的通道,更多的层(fewer channels and more layers)”[1]。
在上一章中我们简短回顾了目标检测在过去的二十年中如何从传统滑窗算法到基于深度神经网络的全新领域,点击回顾。这次,我们来分享一些近年涌现的各类优化技术,正是这些技术让目标检测一再提速,从而能在工程上应用到各类设备中。
好快!比高铁加速还快!
目标检测的加速技术
目标检测速度的提升一直是一个重要而又具有挑战性的问题。在过去的20年里,目标检测领域已经发展了许多复杂的加速技术。接下来我们简要介绍“轻量化网络设计”、“数值加速”、“特征检测优化”、“语义分割”等重要优化方法。
轻量网络设计
基于 CNN 检测器的轻量化方法是直接设计一个轻量级的网络,而不是使用现成的检测引擎。研究人员长期以来一直在探索网络的正确配置,以便在有限的时间成本下获得准确性。一个通用的设计原则是“更少的通道,更多的层(fewer channels and more layers)”[1]。
此外,近年来也有一些新的技术,见下图:
分解卷积
群卷积
深度可分离卷积
瓶颈设计
神经结构搜索
分解卷积
分解卷积是构建轻量级CNN模型最简单、最直接的方法,有两类分解方法。
第一类方法是将一个大的卷积滤波器分解成一组空间维数较小的卷积滤波器[2],如上图(b)所示。例如,可以将一个7x7过滤器分解为三个3x3过滤器,它们共享相同的接收域,但是后者效率更高。另一个例子是将 k×k 滤波器分解为k×1滤波器和1×k滤波器,这对于非常大的滤波器来说可能更有效,比如15x15。该思想最近被用于目标检测。
第二类方法是将一大组卷积分解为信道维数较小的两组[3],如上图(c)所示。例如,可以用 d个滤波器近似卷积层,用d'个滤波器 一个非线性激活 另外d个滤波器 (d'<d)近似有c个通道的特征图。在这种情况下,原始层的复杂度
可以降低到
。
群卷积
群卷积的目的是通过将特征信道划分为多个不同的组,然后分别对每个组进行卷积,从而减少卷积层中参数的数量,如上图(d)所示。如果我们将特征信道平均分成m组,不改变其他构型,理论上卷积的计算复杂度将会降低到原来的1/m。
深度可分离卷积
上图(e)所示的深度可分离卷积是近年来流行的一种构建轻量级卷积网络的方法,当组数等于信道数时,可以将它看作是群卷积的一个特例[4]。
假设我们有一个带有d个滤波器的卷积层和一个 c 通道的特征图,每个滤波器的大小为 k×k 。对于深度可分卷积,每个 k×k×c 滤波器首先被分割成 c 个片,每个片的大小为 k×k×1 ,然后在每个通道中对滤波器的每个片分别进行卷积。最后,一些 1x1 滤波器用于进行维度转换,以便最终的输出应该具有 d 通道。利用深度可分卷积,将计算复杂度从O(dk^2c)降低到O(ck^2) O(dc)。该思想最近被应用于目标检测和细粒度分类(Fine-grain classification)。
瓶颈设计
神经网络中的瓶颈层与前一层相比只包含很少的节点,它可以用来学习降维输入的高效数据编码,这在深度自编码中得到了广泛的应用。近年来,瓶颈设计被广泛应用于轻量化网络的设计[5][6]。在这些方法中,一种常见的方法是压缩检测器的输入层,以减少从检测管道开始的计算量[5]。另一种方法是压缩检测引擎的输出,使特征图变薄,使其在后续检测阶段更加高效[6]。
神经结构搜索
近年来,人们对利用神经结构搜索 ( NAS ) 自动设计网络体系结构而不是依赖于专家经验和知识产生了浓厚的兴趣。NAS 已应用于大规模图像分类[7],目标检测[8]和图像分割任务[9]。NAS 最近在设计轻量级网络方面也显示出了很好的结果,其中在搜索过程中考虑了预测精度和计算复杂度的限制[10]。
数值加速技术
我们简要介绍在目标检测中经常使用的两种数值加速技术:1) 频域加速,2) 降阶近似。
频域加速
卷积是目标检测中的一种重要的数值运算形式。由于线性检测器的检测可以看作是特征图与检测器权值之间的窗口内积,因此该过程可以通过卷积来实现。
有很多方法可以加速卷积运算,其中傅里叶变换是一个非常实用的选择,尤其是对于加速那些大的滤波器。频域加速卷积的理论基础是信号处理中的卷积定理,即在合适的条件下,两个信号卷积的傅里叶变换是其傅里叶空间的点乘:
其中,
是傅里叶变换,
是傅里叶反变换,I和W是输入图像和滤波器,*是卷积运算,
是点乘运算。利用快速傅里叶变换 (Fast Fourier Transform,FFT)和快速傅里叶反变换 (Inverse Fast Fourier Transform,IFFT)可以加速上述计算。FFT 和 IFFT 现在经常被用来加速 CNN 模型和一些经典的线性目标检测器,这使得检测速度提高了一个数量级。下图为在频域中加速线性目标检测器的标准传输途径(如 HOG 和 DPM)。
降阶近似
在深度网络中,全连接层的计算本质上是两个矩阵的乘法。当参数矩阵
较大时,检测器的计算量较大。例如在Fast RCNN检测器中,将近一半的前向传递时间用于计算全连接层。降秩近似是一种加速矩阵乘法的方法。它的目的是对矩阵W进行低秩分解:
其中U是由W的前t列左奇异向量构成的
型矩阵,
是一个包含W前t个奇异值的
对角矩阵,V是由W的前t行右奇异向量构成的
矩阵。上述过程也称为截断 SVD(Truncated SVD),将参数从
减少到
个,当t远小于
时效果显著。截断 SVD 可以2倍的效率加速 Fast RCNN 检测器。
特征检测优化
特征表示的质量是目标检测的关键。近年来,许多研究人员在一些最新引擎的基础上,进一步提高了图像特征的质量,其中最重要的两组方法是:1) 特征融合;2) 学习具有较大接受域的高分辨率特征。
特征融合
不变性(Invariance)和同变性(equivariance)是图像特征表达,同时也是目标检测任务两个需要考虑的要素。分类任务中比较看重不变性,即不论物体出现在图像中的什么位置,都能识别出来,旨在学习到更高层中的语义信息。定位任务比较看重同变性,即希望物体在图像中进行了平移,定位的结果也应该做对应的平移,旨在判别位置和尺寸。
因为CNN网络有很多的卷积层和池化层,所以越深层的特征层不变性越强而同变性越弱,而低层网络虽然语义特征比较差,但是含有更丰富的边缘及轮廓信息。为了同时保持不变性和同变性,可以融合多层特征层。因此近三年来,特征融合在目标检测中得到了广泛的应用。
在目标检测中进行特征融合的方法有很多。本文从两个方面介绍了近年来的一些方法:1) 处理流程;2) 元素式操作。
(1)处理流程
目前用于目标检测的特征融合方法可分为两类:1) 自底向上融合[11],2) 自顶向下融合[12],如下图(a)-(b)所示。自底向上的融合通过跳跃连接将浅层特征前馈到更深的层,相比之下,自顶向下的融合将更深层次的特征反馈给更浅层次。除了这些方法,最近还提出了更复杂的方法,例如跨层特征编织法[13]。
由于不同层的特征图在空间维度和通道维度上都可能有不同的尺寸,因此可能需要对特征图进行调整,如将通道数量、上采样低分辨率图或下采样高分辨率图调整至合适的尺寸。最简单的方法是使用最接近或双线性插值(nearest or bilinear-interpolation)[14]。此外,分数阶条纹卷积 (又称转置卷积)是近年来另一常用的调整特征图大小和调整通道数量的方法[15]。使用分数阶条纹卷积的优点是,它可以学习一种适当的方法来执行上采样本身。
(2)元素式操作
从局部的角度看,特征融合可以看作是不同特征映射之间各元素的操作。如上图(c)-(e)所示,分别有三种方法:1) 对应元素的和[12],2) 对应元素的积[16],3) 元素并置[11]。
对应元素的和是执行特征融合最简单的方法。它已被频繁地用于许多最近的目标检测器。对应元素的积与对应元素的和非常相似,唯一的区别是使用乘法而不是求和。求积的一个优点是它可以用来抑制或突出某个区域内的特性,这可能进一步有利于小对象检测。特征拼接/串联是特征融合的另一种方式。它的优点是可以用来集成不同区域的语境信息,缺点是增加了内存。
通过大接受域学习高分辨率特征
接受域和特征分辨率是基于CNN的检测器的两个重要特点,前者是指输入像素的空间范围,用于计算输出的单个像素;而后者对应于输入与特征图之间的下采样率。具有较大接受域的网络能够捕获更大范围的语境信息,而具有较小接受域的网络则可能更专注于局部细节。
正如前面提到的,特征分辨率越低,就越难检测小对象。提高特征分辨率最直接的方法是去除池化层或降低卷积下采样率。但这将带来一个新的问题,即由于输出步长减小,接受域会变得太小。换句话说,这将缩小检测器的“视线”范围,并可能导致一些大型目标被漏检。
其中一种可同时提高接收域和特征分辨率的方法是引入膨胀卷积(dilated convolution),又称空洞卷积(atrous convolution)或带孔卷积(convolution with holes)。膨胀卷积最初是在语义分割任务中提出的[17],其主要思想是对卷积滤波器进行扩展以及使用稀疏参数。例如,膨胀率为2的3x3滤波器会具有与核为5x5的滤波器相同的接受域,但只有9个参数。膨胀卷积目前已广泛应用于目标检测中,它在不需要任何额外参数和计算代价的情况下可有效提高精度[18]。
语义分割式学习
近年来的研究表明,通过学习和语义分割可以明显提高目标检测能力。
为什么语义分割可提高检测效果?语义分割提高目标检测能力的原因有三个。
1. 语义分割可帮助类型识别
边缘和边界是构成人类视觉认知的基本要素。在计算机视觉中,目标(如汽车、人)和背景物(如天空、水、草)的区别在于前者通常有一个封闭的、明确的边界,而后者没有。由于语义分割任务的特征能够很好地捕捉到对象的边界,因此分割可能有助于分类识别。
2. 语义分割可帮助精确定位
良好定义的边界决定了对象的基准边界框。对于一些特殊形状的物体 (如一只有很长尾巴的猫),很难预测具备高交并比的位置。由于目标边界可以很好地编码在语义分割特征中,分割学习有助于准确的目标定位。
3. 语义分割可嵌入进语境结构
日常生活中的物体被不同的背景所包围,如天空、水、草等,这些元素构成了一个物体的语境。整合语境的语义分割将有助于目标检测,例如,飞机更有可能出现在空中而不是水上。
语义分割如何提高检测效果?
通过分割提高目标检测的主要方法有两种:1) 采用丰富的特征学习;2) 采用多任务损失函数学习。
(1)丰富化特征学习最简单的方法是将分割网络看作一个固定的特征提取器[18][19],并将其作为附加特征集成到检测框架中。该方法的优点是易于实现,缺点是分割网络可能带来额外的计算。
(2)多任务损失函数学习另一种方法是在原有检测框架的基础上引入额外的分割旁支,用多任务损失函数 ( 分割损失 检测损失 ) 训练该模型[19]。在大多数情况下,分割分支将在推理阶段被删除。优点是检测速度不受影响,而缺点是训练需要像素级的图像标注。为此,一些研究人员采用了 “ 弱监督学习 ” 的思想:他们不是基于像素级注释掩码进行训练,而是基于边界框级注释训练分割分支[20]。
这次我们对目标检测的一些加速优化技术做了介绍,下一次我们将会着重介绍目标检测的具体应用领域及未来的发展方向,敬请期待!
参考文献
[1]K. He and J. Sun “Convolutional neural networks at constrained time cost ” in Proceedings of the IEEE conference on computer vision and pattern recognition 2015 pp. 5353– 5360.
[2]C. Szegedy V. Vanhoucke S. Ioffe J. Shlens and Z. Wojna “Rethinking the inception architecture for computer vision ” in Proceedings of the IEEE conference on computer vision and pattern recognition 2016 pp. 2818–2826.
[3]X. Zhang J. Zou K. He and J. Sun “Accelerating very deep convolutional networks for classification and detection ” IEEE transactions on pattern analysis and machine intelligence vol. 38 no. 10 pp. 1943–1955 2016.
[4]F. Chollet “Xception: Deep learning with depthwise separable convolutions ” arXiv preprint pp. 1610–02 357 2017.
[5]R. J.Wang X. Li S. Ao and C. X. Ling “Pelee: A real-time object detection system on mobile devices ” arXiv preprint arXiv:1804.06882 2018.
[6]T. Kong A. Yao Y. Chen and F. Sun “Hypernet: Towards accurate region proposal generation and joint object detection ” in Proceedings of the IEEE conference on computer vision and pattern recognition 2016 pp. 845–853.
[7]B. Zoph V. Vasudevan J. Shlens and Q. V. Le “Learning transferable architectures for scalable image recognition ” in Proceedings of the IEEE conference on computer vision and pattern recognition 2018 pp. 8697–8710.
[8]Y. Chen T. Yang X. Zhang G. Meng C. Pan and J. Sun “Detnas: Neural architecture search on object detection ” arXiv preprint arXiv:1903.10979 2019.
[9]C. Liu L.-C. Chen F. Schroff H. Adam W. Hua A. Yuille and L. Fei-Fei “Auto-deeplab: Hierarchical neural architecture search for semantic image segmentation ” arXiv preprint arXiv:1901.02985 2019.
[10]X. Chu B. Zhang R. Xu and H. Ma “Multi-objective reinforced evolution in mobile neural architecture search ” arXiv preprint arXiv:1901.01074 2019.
[11]P. Zhou B. Ni C. Geng J. Hu and Y. Xu “Scale-transferrable object detection ” in Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition 2018 pp. 528–537.
[12]S. Woo S. Hwang and I. S. Kweon “Stairnet: Top-down semantic aggregation for accurate one shot detection ” in 2018 IEEE Winter Conference on Applications of Computer Vision (WACV). IEEE 2018 pp. 1093–1102.
[13]Y. Chen J. Li B. Zhou J. Feng and S. Yan “Weaving multi-scale context for single shot detector ” arXiv preprint arXiv:1712.03149 2017.
[14]A. Shrivastava R. Sukthankar J. Malik and A. Gupta “Beyond skip connections: Top-down modulation for object detection ” arXiv preprint arXiv:1612.06851 2016.
[15]M. D. Zeiler G. W. Taylor and R. Fergus “Adaptive deconvolutional networks for mid and high level feature learning ” in Computer Vision (ICCV) 2011 IEEE International Conference on. IEEE 2011 pp. 2018–2025.
[16]T. Kong F. Sun A. Yao H. Liu M. Lu and Y. Chen “Ron: Reverse connection with objectness prior networks for object detection ” in IEEE Conference on Computer Vision and Pattern Recognition vol. 1 2017 p. 2.
[17]F. Yu and V. Koltun “Multi-scale context aggregation by dilated convolutions ” arXiv preprint arXiv:1511.07122 2015.
[18]Z. Li C. Peng G. Yu X. Zhang Y. Deng and J. Sun “Detnet: A backbone network for object detection ” arXiv preprint arXiv:1804.06215 2018.
[19]S. Gidaris and N. Komodakis “Object detection via a multi-region and semantic segmentation-aware cnn model ” in Proceedings of the IEEE International Conference on Computer Vision 2015 pp. 1134–1142.
[20]S. Brahmbhatt H. I. Christensen and J. Hays “Stuffnet: Using stuffto improve object detection ” in Applications of Computer Vision (WACV) 2017 IEEE Winter Conference on. IEEE 2017 pp. 934–943.
[21]Z. Zhang S. Qiao C. Xie W. Shen B. Wang and A. L. Yuille “Single-shot object detection with enriched semantics ” Center for Brains Minds and Machines (CBMM) Tech. Rep. 2018.