计算机视觉研究院专栏
作者:Edison_G
由于内存和计算资源有限,在嵌入式设备上部署卷积神经网络(CNNs)是困难的。特征映射中的冗余是CNN成功的一个重要特征,但在神经结构设计中很少被研究。 在训练较好的深度网络的特征图中,丰富甚至冗余的信息常常保证了对输入数据的全面理解。例如在输入图像的一些特征映射,并且存在许多相似的特征映射对,就像彼此的“幽灵”一样。 作者并没有避免冗余的特性映射,而是倾向于采用它们,但采用的是一种低成本的方式。
作者提出了一种新的Ghost模块,用于从简单的操作中获取更多的特征映射。基于一组内在特征映射,应用一系列简单的线性变换来生成许多Ghost特征映射,这些映射可以充分揭示内在特征的信息。提出的Ghost模块可以作为一个即插即用的组件来升级现有的卷积神经网络。Ghost瓶颈被设计成stack Ghost modules,然后可以很容易地建立轻量级的GhostNet。
在基准上进行的实验表明,所提出的Ghost模块是基线模型中卷积层的一个令人印象深刻的替代方案,GhostNet可以获得更高的识别性能(例如在ImageNetILSVRC-2012分类数据集上,与具有类似计算成本的MobileNetV3相比,准确率为75.7)。
高效的神经结构设计具有很高的潜力,可以建立高效的深度网络,参数和计算较少,最近取得了相当大的成功。这种方法还可以为自动搜索方法提供新的搜索单元。例如,MobileNet利用深度卷积和点卷积构造了一个单元,用于用较大的滤波器逼近原始卷积层,并取得了类似的性能。ShuffleNet进一步探索了一种通道shuffle操作(这个不是很好翻译,但是通过具体操作可以理解),以提高轻量级模型的性能。
例如上图显示了ResNet-50生成的输入图像的一些特征映射,并且存在许多类似的特征映射对,就像彼此的“幽灵”一样。作者并没有避免冗余的特性映射,而是倾向于采用它们,但采用的是一种低成本的方式。
今天我们就介绍了这种新的Ghost模块,通过使用较少的参数来生成更多的特征。具体来说,深度神经网络中的一个普通卷积层将被分成两部分。第一部分涉及普通卷积,但它们的总数将受到严格控制。给定第一部分的固有特征映射,然后应用一系列简单的线性操作来生成更多的特征映射。在不改变输出特征映射大小的情况下,与vanilla卷积神经网络相比,该Ghost模块中所需的参数总数和计算复杂性都有所降低。基于Ghost模块,建立了一种高效的神经网络架构,即GhostNet。 作者首先在基准神经架构中替换原始卷积层,以证明Ghost模块的有效性,然后验证GhostNet在几个基准视觉数据集上的优越性。实验结果表明,所提出的Ghost模块能够降低通用卷积层的计算成本,同时保持相似的识别性能,并且GhostNet可以在移动设备上具有快速推理的各种任务上超越最先进的有效深度模型,如MobileNetV3。
Compact Model Design
虽然Xception、MobileNets、MobileNetV2、MobileNetV3、ShuffleNet和ShuffleNetV2等轻量级模型以很少的FLOPs获得了很好的性能,但是它们特征图之间的相关性和冗余性一直没有得到很好的利用。
4.算法框架
Ghost Module for More Features
因为在由主流CNNs网络计算得到的中间特征映射中广泛存在的冗余,如上图。作者建议减少需要的资源,即用来生成这些特征映射的卷积过滤器。实际上,给定输入X∈Rc*h*w,其中c为channels数,h和w分别为输入的高和宽。用来生成n特征映射的任意卷积层的操作公式为:
其中*表示卷积操作,b为bias项。Y∈Rh' x w' x n是有着n个channels的输出特征映射,f∈Rc x k x k x n是该层的卷积过滤器。在该卷积操作中,需要的FLOPs数为n*h'*w'*c*k*k,该值通常很大,因为过滤器数量n和channel数量c一般很大。
根据上面的公式,需要优化的参数数量(f和b)由输入和输出特征图的维数明确确定。如上图所示,卷积层的输出特征映射通常包含大量冗余,其中一些可能彼此相似。作者指出没有必要用大量的FLOPs和参数一个一个地生成这些冗余的特征图。假设输出的特性映射是一些带有一些cheap转换的内在特性映射的“幽灵”。这些固有的特征图通常较小,由普通的卷积过滤器产生。
具体来说,m个内在特征映射Y'∈ Rh' x w' x m是使用一个基本卷积操作生成的:
为了进一步获得想要的n个特征映射,作者提出在Y'中的每个内在特征中应用一系列的cheap线性操作来生成s个ghost特征,如下函数所示:
其中,yi′表示在Y'中的第i个内在特征映射,在上式中Φi,j是用于生成第j个ghost特征映射yij的第j个线性操作,也就是说yi′可以有一个甚至多个ghost特征映射{yij}sj=1。最后一个Φi,s是用来保存如下图(b)所示的内在特征映射的identity映射。