赞
踩
训练部分一般包括 9 个核心组件,总体流程是:
任何一个 batch 的图片先输入到 backbone 中进行特征提取;
输出的单尺度或者多尺度特征图输入到 neck 模块中进行特征融合或者增强;
多尺度特征最终输入到 head 部分,一般都会包括分类和回归分支输出;
在整个网络构建阶段都可以引入一些即插即用增强算子来增加提取提取能力,典型的例如 SPP、DCN 等等;
目标检测 head 输出一般是特征图,对于分类任务存在严重的正负样本不平衡,可以通过正负样本属性分配和采样控制;
为了方便收敛和平衡多分支,一般都会对 gt bbox 进行编码;
最后一步是计算分类和回归 loss,进行训练;
在训练过程中也包括非常多的 trick,例如优化器选择等,参数调节也非常关键.
正负样本属性分配模块作用是进行正负样本定义或者正负样本分配(可能也包括忽略样本定义),正样本就是常说的前景样本(可以是任何类别),负样本就是背景样本。因为目标检测是一个同时进行分类和回归的问题,对于分类场景必然需要确定正负样本,否则无法训练。该模块至关重要,不同的正负样本分配策略会带来显著的性能差异,目前大部分目标检测算法都会对这个部分进行改进,至关重要。一些典型的分配策略如下:
在确定每个样本的正负属性后,可能还需要进行样本平衡操作。本模块作用是对前面定义的正负样本不平衡进行采样,力争克服该问题。一般在目标检测中 gt bbox 都是非常少的,所以正负样本比是远远小于 1 的。而基于机器学习观点:在数据极度不平衡情况下进行分类会出现预测倾向于样本多的类别,出现过拟合,为了克服该问题,适当的正负样本采样策略是非常必要的,一些典型采样策略如下:
为了更好的收敛和平衡多个 loss,具体解决办法非常多,而 bbox 编解码策略也算其中一个,bbox 编码阶段对应的是对正样本的 gt bbox 采用某种编码变换(反操作就是 bbox 解码),最简单的编码是对 gt bbox 除以图片宽高进行归一化以平衡分类和回归分支,一些典型的编解码策略如下:
Loss 通常都分为分类和回归 loss,其对网络 head 输出的预测值和 bbox encoder 得到的 targets 进行梯度下降迭代训练。loss 的设计也是各大算法重点改进对象,常用的 loss 如下:
轻量级卷积神经网络(CNN)是专门为推理速度更快的移动设备上的应用而设计的。卷积运算只能捕获窗口区域中的局部信息,这阻碍了性能的进一步提高。在卷积中引入自我关注可以很好地捕获全局信息,但这将在很大程度上阻碍实际速度。在本文中,我们提出了一种硬件友好的注意力机制(称为DFC注意力),然后提出了一个新的用于移动应用的GhostNetV2架构。所提出的DFC注意力是基于完全连接的层构建的,它不仅可以在普通硬件上快速执行,而且可以捕获长距离像素之间的依赖性。
我们进一步回顾了先前GhostNet中的表现力瓶颈,并建议在DFC的关注下增强由廉价操作产生的扩展功能,以便GhostNetV2块可以同时聚合本地和远程信息。大量实验表明GhostNetV2优于现有架构。例如,它以167M FLOP在ImageNet上实现75.3%的前1精度,以类似的计算成本显著超过GhostNetV1(74.5%)。
论文地址:[2211.12905] GhostNetV2: Enhance Cheap Operation with Long-Range Attention (arxiv.org)
源代码将在https://github.com/huawei-noah/Efficient-AI-Backbones/tree/master/ghostnetv2_pytorch和https://gitee.com/mindspore/models/tree/master/research/cv/ghostnetv2。
尽管 Ghost 模块可以大幅度地减少计算代价,但是其特征的表征能力也因为 “卷积操作只能建模一个窗口内的局部信息” 而被削弱了。在 GhostNet 中,一半的特征的空间信息被廉价操作 (3×3 Depth-wise Convolution) 所捕获,其余的特征只是由 1×1 的 Point-wise 卷积得到的,与其他像素没有任何信息上的交流。捕捉空间信息的能力很弱,这可能会妨碍性能的进一步提高。本文介绍的工作 GhostNetV2 是 GhostNet 的增强版本,被 NeurIPS 2022 接收为 Spotlight。
在计算机视觉中,深度神经网络的架构在各种任务中发挥着至关重要的作用,如图像分类、对象检测和视频分析。在过去的十年中,网络架构一直在快速发展,已经开发了一系列里程碑,包括AlexNet、GoogleNet、ResNet和EfficientNet。这些网络将各种视觉任务的性能提升到了一个高水平。
要在智能手机和可穿戴设备等边缘设备上部署神经网络,我们不仅需要考虑模型的性能,还需要考虑其效率,尤其是实际推理速度。矩阵乘法占据了计算成本和参数的主要部分。开发轻量级模型是减少推理延迟的一种很有前途的方法。MobileNet将标准卷积分解为深度卷积和逐点卷积,这大大降低了计算成本。MobileNetV2和MobileNetV3进一步引入了反向残差块并改进了网络架构。ShuffleNet利用shuffle操作来促进通道组之间的信息交换。GhostNet提出了降低信道中特征冗余的廉价操作。WaveMLP用简单的多层感知器(MLP)代替了复杂的自我关注模块,以降低计算成本。这些轻量级神经网络已经应用于许多移动应用中。
然而,基于卷积的轻量级模型在建模长程依赖性方面较弱,这限制了进一步的性能改进。最近,类似transformer的模型被引入到计算机视觉中,其中自我关注模块可以捕捉全局信息。典型的自我关注模块需要与特征形状大小相关的二次复杂度,并且在计算上不友好。此外,需要大量的特征分割和重塑操作来计算注意力图。尽管它们的理论复杂性可以忽略不计,但在实践中,这些操作会导致更多的内存使用和更长的延迟。因此,在轻量级模型中使用普通的自我关注对于移动部署来说并不友好。例如,具有大规模自我关注操作的MobileViT比ARM设备上的MobileNetV2慢7倍多。
在本文中,我们提出了一种新的注意力机制(称为DFC注意力)来捕获长距离空间信息,同时保持轻量级卷积神经网络的实现效率。为了简单起见,只有完全连接(FC)层参与生成关注图。具体地,FC层被分解为水平FC和垂直FC以聚集CNN的2D特征图中的像素。两个FC层涉及沿其各自方向的长范围像素,并且堆叠它们将产生全局接收场。此外,从最先进的GhostNet开始,我们重新审视了它的表示瓶颈,并通过DFC关注来增强中间特征。然后构建了一个新的轻量级视觉主干GhostNetV2。与现有架构相比,它可以在精度和推理速度之间实现更好的过渡(如下图所示)。
Self-attention 的优点是长距离建模的能力,但是计算复杂度与输入的分辨率大小呈二次方增长的关系,这对于高分辨率的图片而言是非常不友好的。而一些检测和分割任务都需要高分辨率的输入,使得 Self-attention 无法扩展。
同时设计具有快速推理速度和高性能的轻量级神经架构是一项挑战。SqueezeNet提出了三种策略来设计紧凑的模型,即用1×1滤波器替换3×3滤波器,将输入通道的数量减少到3×3个滤波器,以及在网络后期进行下采样以保持大的特征图。这些原则是建设性的,尤其是1×1卷积的使用。MobileNetV1用1×1内核和深度可分离卷积替换了几乎所有的3×3文件器,这大大降低了计算成本。MobileNetV2进一步将残差连接引入到轻量级模型中,并构建了一个反向残差结构,其中块的中间层具有比其输入和输出更多的通道。为了保持表示能力,删除了一部分非线性函数。MobileNeXt重新思考了反向瓶颈的必要性,并声称经典的瓶颈结构也可以实现高性能。考虑到1×1卷积占计算成本的很大一部分,ShuffleNet将其替换为群卷积。频道洗牌操作有助于信息在不同组之间流动。通过研究影响实际运行速度的因素,ShuffleNet V2提出了一种硬件友好的新块。通过利用该功能的冗余,GhostNet用廉价的操作替换了1×1卷积中的半通道。到目前为止,GhostNet一直是SOTA轻量级模型,在精度和速度之间进行了很好的权衡。
除了手动设计,还有一系列方法试图寻找一种轻量级的架构。例如,FBNet设计了一种硬件感知搜索策略,可以在特定硬件上直接找到准确度和速度之间的良好权衡。基于反向残余瓶颈,MnasNet、MobileNetV3搜索架构参数,如模型宽度、模型深度、卷积滤波器大小等。尽管基于NAS的方法实现了高性能,但它们的成功是基于精心设计的搜索空间和架构单元。自动搜索和手动设计可以结合起来,以找到更好的架构。
GhostNet是SOTA轻量级模型,旨在对移动设备进行高效推理。它的主要组件是Ghost模块,它可以通过廉价的操作生成更多的特征图来取代原始的卷积。给定输入特征 X ∈ R H × W × C X∈R^{H×W×C} X∈RH×W×C,具有高度H、宽度W和通道数C,典型的Ghost模块可以通过两个步骤替换标准卷积。
首先,使用1×1卷积来生成固有特征。
其中*表示卷积运算。F1×1是逐点卷积, Y ′ ∈ R H × W × C ′ o u t Y'∈R^{H×W×C'out} Y′∈RH×W×C′out是固有特征,其大小通常小于原始输出特征,即 C ′ o u t < C o u t C'out<Cout C′out<Cout。然后使用廉价的操作(例如,深度卷积)来基于固有特征生成更多特征。这两部分特征沿着信道维度,即:
其中Fdp是深度卷积滤波器,Y∈RH×W×Cout是输出特征。虽然Ghost模块可以显著降低计算成本,但表示能力不可避免地被削弱。空间像素之间的关系对于进行准确识别至关重要。而在GhostNet中,空间信息仅由一半特征的廉价运算(通常通过3×3深度卷积实现)捕获。剩下的特征只是通过1×1逐点卷积产生的,没有与其他像素的任何交互。捕获空间信息的能力较弱可能会阻止性能的进一步提高。
通过堆叠两个Ghost模块构建GhostNet块(如下图(A)所示)。与MobileNetV2类似,它也是一个反向瓶颈,即,第一个Ghost模块充当扩展层以增加输出通道的数量,第二个Ghost组件减少通道的数量以匹配快捷路径。
源自NLP领域,基于注意力的模型最近被引入计算机视觉。例如,ViT使用由自我关注模块和MLP模块堆叠的标准变压器模型。Wang等人将自我关注操作插入卷积神经网络以捕获非局部信息。典型的注意力模块通常具有与特征大小相关的二次复杂度,这对于后续任务(如对象检测和语义分割)中的高分辨率图像是不可缩放的。
降低注意力复杂性的一种主流策略是将图像分割成多个窗口,并在窗口内或交叉窗口中执行注意力操作。例如,Swin Transformer将原始特征拆分为多个非重叠窗口,并在本地窗口内计算自关注度。MobileViT还将该特征展开为非重叠的补丁,并计算这些补丁的关注度。对于CNN中的2D特征图,实现特征分割和注意力计算需要大量的张量重塑和换位操作。其理论复杂性可忽略不计。在具有高复杂性的大型模型(例如,具有几十亿FLOP的Swin-B)中,这些操作仅占用总推断时间的几部分。而对于轻量级模型,其部署延迟不容忽视。
为了直观理解,我们为GhostNet模型配备了MobileViT中使用的自我关注,并使用TFLite工具测量了华为P30(麒麟980 CPU)上的延迟。我们使用ImageNet的标准输入分辨率,即224×224,并将结果显示在下表中。注意力机制只增加了约20%的理论FLOP,但在移动设备上需要2倍的推理时间。理论和实际复杂性之间的巨大差异表明,有必要设计一种硬件友好的注意力机制,以便在移动设备上快速实现。
理论FLOP和实际延迟的比较。
在本节中,将讨论如何为移动CNNs设计关注模块。期望的注意力具有以下属性:
远程依赖。捕获长距离空间信息以提高表示能力至关重要,因为轻量级CNN(例如,MobileNet,GhostNet)通常采用小卷积滤波器(例如,1×1卷积)来节省计算成本。
部署效率高。注意模块应该非常有效,以避免降低推理速度。具有高FLOP或硬件不友好操作的昂贵转换是意外的。
概念简单。为了保持模型在不同任务上的通用性,注意力模块应该概念简单,设计精巧。
尽管自我关注操作[vit,swin transformer,mobilevit]可以很好地模拟长期依赖性,但它们并不像上一节所讨论的那样高效部署。与它们相比,具有固定权重的完全连接(FC)层更简单、更容易实现,这也可以用于生成具有全局感受野的注意力图。详细的计算过程如下所示。
给定一个特征Z∈RH×W×C,它可以看作HW标记zi∈RC,即Z={z11,z12,··,zHW}。生成关注图的FC层的直接实现公式如下:
α h w = ∑ h ′ , w ′ F h w . h ′ , w ′ ∗ z h ′ w ′ , ( 3 ) \alpha_{hw}=\sum_{h',w'}F_{hw.h',w'}*z_{h'w'},(3) αhw=h′,w′∑Fhw.h′,w′∗zh′w′,(3)
哪里是*元素乘法,F是FC层中的可学习权重,A={a11,a12,··,aHW}是生成的注意力图。上等式可以通过将所有令牌与可学习权重聚合在一起来捕获全局信息,这也比典型的自我关注简单得多。然而,其计算过程仍然需要二次复杂度w.r.t.特征的大小(即O(H2W2))2,这在实际场景中是不可接受的,尤其是当输入图像具有高分辨率时。
例如,GhostNet的第4层具有3136(56×56)个标记的特征图,这导致了计算注意力图的极高复杂性。实际上,CNN中的特征图通常是低等级的,没有必要密集地连接不同空间位置的所有输入和输出标记。特征的2D形状自然提供了减少FC层计算的视角,即将方程3分解为两个FC层,并分别沿水平和垂直方向聚集特征。它可以表示为:
其中F H和F W是变换权重。将原始特征Z作为输入,将等式4和等式5依次应用于特征,分别捕获沿两个方向的长程相关性。我们将此操作称为去耦全连接(DFC)注意力,其信息流如下图所示。
DFC关注的信息流。水平和垂直FC层分别沿两个方向捕获长距离信息。
由于水平和垂直变换的解耦,注意力模块的计算复杂性可以降低到O(H2W+HW 2)。在充分注意(等式3)中,正方形区域中的所有面片直接参与聚焦面片的计算。在DFC注意中,一个补丁由其垂直/水平线中的补丁直接聚合,而其他补丁参与垂直/水平线上的补丁的生成,与聚焦令牌具有间接关系。因此,面片的计算还涉及正方形区域中的所有面片。
等式4和5表示DFC注意力的一般公式,其分别沿水平和垂直方向聚集像素。通过共享一部分变换权重,它可以方便地用卷积实现,省去了影响实际推理速度的耗时的张量整形和换位操作。为了处理具有不同分辨率的输入图像,滤波器的大小可以与特征图的大小去耦,即,在输入特征上顺序应用核大小为1×KH和KW×1的两个深度卷积。当用卷积实现时,DFC注意力的理论复杂性表示为O(KHHW+KW HW)。TFLite和ONNX等工具很好地支持该策略,以便在移动设备上进行快速推断。
在本节中,我们使用DFC关注来提高轻量级模型的表示能力,然后介绍新的视觉主干GhostNetV2。
增强Ghost模块。
如前文中所讨论的,Ghost模块(等式1和2)中只有一半的特征与其他像素交互,这损害了其捕获空间信息的能力。因此,我们使用DFC关注来增强Ghost模块的输出特征Y,以捕获不同空间像素之间的长距离相关性。
输入特征X∈RH×W×C被发送到两个分支,即,一个是Ghost模块以产生输出特征Y(等式1和2),另一个是DFC模块以产生注意力图A(等式4和5)。回顾在典型的自我关注中,线性变换层用于将输入特征转换为用于计算关注图的查询和键。类似地,我们还实现了1×1卷积以将模块的输入X转换为DFC的输入Z。模块的最终输出O∈RH×W×C是两个分支的输出的乘积,即。,
O = s i g m o i d ( A ) ∗ V ( x ) , ( 6 ) O=sigmoid(A)*V(x),(6) O=sigmoid(A)∗V(x),(6)
其中Sigmoid是将注意力图A归一化为范围(0,1)的缩放函数。
信息聚合过程如下图所示。对于相同的输入,Ghost模块和DFC注意力是从不同角度提取信息的两个并行分支。输出是它们的元素级产品,其中包含Ghost模块的特性和DFC关注模块的关注信息。每个关注值的计算涉及大范围的补丁,因此输出特征可以包含来自这些补丁的信息。
不同补丁的信息聚合过程。
特征下采样
GhostV2 bottleneck.
GhostNet采用了一个包含两个Ghost模块的反向剩余瓶颈,其中第一个模块产生具有更多通道的扩展特征,而第二个模块减少通道数量以获得输出特征。这种反向瓶颈自然地将模型的“表现力”和“容量”解耦。前者由扩展的特征测量,而后者由块的输入/输出域反映。原始的Ghost模块通过廉价的操作生成部分功能,这会损害表现力和容量。通过调查DFC关注扩展特性或输出特性的性能差异,我们发现增强“表现力”更有效。因此,我们只将扩展的功能与DFC关注相乘。
图(b)显示了GhostV2瓶颈的示意图。DFC注意力分支与第一个Ghost模块并行,以增强扩展的功能。然后,增强的特征被发送到第二Ghost模块以产生输出特征。它捕捉了不同空间位置的像素之间的长期相关性,并增强了模型的表现力。
Ghost块是包含两个Ghost模块的反向剩余瓶颈,其中DFC的注意力增强了扩展的功能,以提高表达能力。
在本节中,我们对提出的GhostNetV2模型进行了实证研究。我们使用大规模ImageNet数据集对图像分类任务进行了实验。为了验证其通用性,我们使用GhostNetV2作为主干,并将其嵌入到轻量级对象检测方案YOLOV3中。在MS COCO数据集上比较了具有不同骨架的模型。最后,我们进行了广泛的消融实验,以更好地理解GhostNetV2。使用TFLite工具在华为P30(麒麟980 CPU)上测量实际延迟。
Image Classification on ImageNet
设置:分类实验在基准ImageNet(ILSVRC 2012)数据集上进行,该数据集包含来自1000个类别的1.28万张训练图像和50K张验证图像。并在ImageNet数据集上报告单个裁剪的结果。所有实验均使用PyTorch和MindSpore进行。
结果:ImageNet上不同模型的性能比较如下表、图1和图2所示。选择了几种重量轻的模型作为竞争方法。GhostNet、MobileNetV2、MobileNotV3和ShuffleNet是广泛使用的具有SOTA性能的轻量级CNN模型。通过结合CNN和Transformer,MobileViT是最近提出的一种新主干。与它们相比,GhostNetV2以更低的计算成本实现了显著更高的性能。例如,GhostNet V2仅使用167个FLOP就实现了75.3%的前1精度,这显著优于GhostNet V1(74.5%),计算成本相似(167M FLOP)。
实用推理速度。考虑到轻量级模型是为移动应用程序设计的,我们使用TFLite工具实际测量了基于arm的移动电话上不同模型的推断延迟。由于DFC注意力的部署效率,GhostNetV2还实现了精度和实际速度之间的良好权衡。例如,在类似的推断延迟(例如,37毫秒)下,GhostNet V2达到75.3%的前1精度,这显然是GhostNet V1具有74.5%的前1准确性。
Object Detection on COCO
设置:为了验证GhostNetV2的泛化,我们进一步对目标检测任务进行了实验。实验在MS COCO 2017数据集上进行,该数据集由118k张训练图像和5k张验证图像组成。我们将不同的主干嵌入到广泛使用的检测头YOLOv3中,并遵循MMDetection 提供的默认训练策略。具体而言,基于ImageNet上预先训练的权重,使用SGD优化器对模型进行了30个时期的微调。批量大小设置为192,初始学习设置为0.003。实验以320×320的输入分辨率进行。
结果:下表将所提出的GhostNetV2模型与GhostNetV1进行了比较。在不同的输入分辨率下,GhostNet V2显示出明显优于GhostNet V1。例如,在类似的计算成本(即340M FLOP,320×320输入分辨率)下,GhostNet V2达到22.3%mAP,这将GhostNet V1抑制0.5 mAP。我们得出的结论是,捕获长距离依赖性对于下游任务也至关重要,所提出的DFC注意力可以有效地赋予Ghost模块一个大的接受域,然后构建一个更强大和有效的区块。
Semantic Segmentation on ADE20K
Ablation Studies
在本节中,我们进行了广泛的实验,以研究GhostNetV2中每个组件的影响。实验在ImageNet上用GhostNetV2 1×。
其他模型的实验。作为一个通用模块,DFC的注意力也可以嵌入到其他架构中,以提高其性能。具有不同注意力模块的MobileNetV2的结果如表4所示。SE和CBAM是两个广泛使用的注意力模块,CA[11]是最近提出的SOTA方法。所提出的DFC关注实现了比这些现有方法更高的性能。例如,所提出的DFC关注度将MobileNetV2的前1精度提高了2.4%,这在很大程度上超过了CA(1.5%)。
DFC关注内核大小的影响。我们根据功能的大小将GhostNetV2架构分为3个阶段,并将DFC关注应用于不同的内核大小(下表)。内核大小1×3和3×1不能很好地捕获长距离依赖,这导致了最差的性能(即74.8%)。增加内核大小以捕获长距离信息可以显著提高性能。
实施DFC关注的位置。GhostNetV2模型可以根据功能的大小分为4个阶段,我们根据经验研究了实现位置如何影响最终性能。结果如下表所示,从经验上表明,当在任何阶段实施DFC时,DFC注意力都可以提高性能。彻底调整或搜索合适的位置有可能进一步改善精度和计算成本之间的权衡,这超出了本文的范围。默认情况下,我们将DFC注意力部署在所有层上。
缩放功能的影响。对于注意力模型,有必要将特征图缩放到范围(0,1),这可以稳定训练过程。尽管理论上的复杂性可以忽略不计,但这些按元素操作仍会产生额外的延迟。表下表调查了缩放函数如何影响最终性能和延迟。尽管S形函数和硬S形函数带来了明显的性能改进,但直接在大型特征图上实现它们会导致较长的延迟。在上采样之前实施它们效率更高,但结果精度相似。默认情况下,我们使用sigmoid函数,并将其放在上采样操作之前。
增强表现力或能力。我们在两个Ghost模块上实现了DFC关注,并在下表中显示了结果。如第4.2节所述,前者增强了扩展功能(表现力),而后者提高了块的容量。在类似的计算成本下,增强扩展特征会带来1.4%的前1精度提高,这比增强输出特征要高得多。虽然增强这两个特征可以进一步提高性能,但计算成本也相应增加。默认情况下,我们只增强反向剩余瓶颈中的扩展特征。
上采样和下采样的调整大小功能。多个函数可以进行上采样和下采样操作,我们研究了几种广泛使用的函数,即平均池、最大池、用于下采样的双线性插值以及用于上采样的双线性、双三次插值(下表)。GhostNetV2的性能对调整大小功能的选择是鲁棒的,即,所有这些方法在ImageNet中都实现了类似的精度。它们的差异主要在于移动设备上的实际部署效率。最大化池比平均池效率稍高(37.5毫秒vs.38.4毫秒),双线性插值比双三次插值更快(37.5 ms vs.39.9毫秒)。因此,我们默认为下采样选择最大化池,为上采样选择双线性插值。
分离注意力和充分注意力的可视化。我们将垂直和水平注意力叠加产生的解耦注意力可视化,并将其与完全注意力进行比较。在低层中,分离的注意力显示出一些十字形图案,表明来自垂直/水平线的补丁参与更多。随着深度的增加,注意力地图的模式会扩散,并变得更接近于全注意力。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。