YOLOv10全网最新创新点改进系列:融合轻量级网络Ghostnet(幽灵卷积),实测参数量降低!轻量化水文小神器!
所有改进代码均经过实验测试跑通! 此项目不低于30种改进!自己排列组合2-4种后,考虑位置不同后可排列组合上千万种!改进不重样!!专注AI学术,关注B站博主:Ai学术叫叫兽er!
购买相关资料后畅享一对一答疑!
# YOLOv10全网最新创新点改进系列:融合轻量级网络Ghostnet(幽灵卷积),实测参数量降低!轻量化水文小神器!
详细的改进戳这里!!!本文仅略读使用论文地址GhostNet: More Features from Cheap Operations
详细的改进教程以及源码,戳这!戳这!!戳这!!!B站:AI学术叫叫兽 源码在相簿的链接中,动态中也有链接,感谢支持!祝科研遥遥领先!
摘要
该论文提供了一个全新的Ghost模块,旨在通过廉价操作生成更多的特征图。基于一组原始的特征图,作者应用一系列线性变换,以很小的代价生成许多能从原始特征发掘所需信息的“Ghost”特征图(Ghost feature maps)。该Ghost模块即插即用,通过堆叠Ghost模块得出Ghost bottleneck,进而搭建轻量级神经网络——GhostNet。
幻影卷积步骤:
先进行1 x 1卷积聚合通道间的信息特征,然后再使用分组卷积,生成新的特征图。
为了减少网络计算量,作者将传统的卷积分成两步进行,首先通过传统的卷积生成channel较小的特征图以较少的计算量,然后在得到的特征图的基础上,通过cheap operation(depthwise conv,廉价操作)再进一步减少计算量,生成新的特征图,最后将两组特征图拼接到一起,得到最终的output。
卷积操作是卷积-批归一化BN-非线性激活全套组合,而所谓的线性变换或者廉价操作(cheap operation)均指普通卷积,不含批归一化和非线性激活。
1 简介
在效果较好的CNN模型中,特征图存在冗余是非常重要的,但是很少有人在模型结构设计上考虑特征图冗余问题;
从特征图冗余问题出发,提出一个仅通过少量计算(cheap operations)就能生成大量特征图的结构——Ghost Module;
Ghost Module通过一系列线性操作(a series of linear transformations)生成特征图,其中经过线性操作生成的特征图称为ghost feature maps,而被操作的特征图称为intrinsic feature maps;
Ghost Module的优点:
即插即用:Ghost Module是一个即插即用模块,可以无缝衔接现有的CNN中;
使用Ghost Module组成的Ghost bottlenecks,设计出GhostNet,在ILSVRC-2012上top-1超过Mobilenet-V3,并且参数(params)更少。
本文作者在观察ResNet50第一个残差块输出的特征图时,发现有许多输出特征很相似,图一中的红、绿、蓝框的特征图,作者认为很相似,基本只要进行简单的线性变换就能得到,而不需要进行复杂的非线性变换得到;作者该对其中的一个特征图可以通过廉价操作(图中用扳手表示)将另一特征图变换而获得,可以认为其中一个特征图是另一个的“Ghost”。因为,本文提出并非所有特征图都要用卷积操作来得到,“Ghost”特征图可以用更廉价的操作来生成。
2 方法
Ghost Bottlenecks
利用Ghost模块的优势,作者介绍了专门为小型CNN设计的Ghost bottleneck(G-bneck)。
如图所示,Ghost bottleneck似乎类似于ResNet中的基本残差块(Basic Residual Block),其中集成了多个卷积层和shortcut。
Ghost bottleneck主要由两个堆叠的Ghost模块组成:
第一个Ghost模块用作扩展层,增加了通道数,这里将输出通道数与输入通道数之比称为expansion ratio;
第二个Ghost模块减少通道数,以与shortcut路径匹配,然后,使用shortcut连接这两个Ghost模块的输入和输出。
这里借鉴了MobileNetV2,第二个Ghost模块之后不使用ReLU,因为深度卷积后再加ReLU效果会变差,可能是深度卷积输出太浅了, 应用 ReLU会带来信息丢失,其他层在每层之后都应用了批量归一化(BN)和ReLU非线性激活。
上述Ghost bottleneck适用于stride= 1,
对于stride = 2的情况,shortcut路径由下采样层和stride = 2的深度卷积(Depthwise Convolution)来实现。
出于效率考虑,Ghost模块中的初始卷积是逐点卷积(Pointwise Convolution)。
基于Ghost bottleneck,作者提出GhostNet,如下所示:
1.作者遵循MobileNetV3的基本体系结构的优势,然后使用Ghost bottleneck替换MobileNetV3中的bottleneck;
2.GhostNet主要由一堆Ghost bottleneck组成,其中Ghost bottleneck以Ghost模块为构建基础;
第一层是具有16个卷积核的标准卷积层,然后是一系列Ghost bottleneck,通道逐渐增加。这些Ghost bottleneck根据其输入特征图的大小分为不同的阶段;
除了每个阶段的最后一个Ghost bottleneck是stride = 2,其他所有Ghost bottleneck都以stride = 1进行应用;
3.最后,利用全局平均池和卷积层将特征图转换为1280维特征向量以进行最终分类。SE模块也用在了某些Ghost bottleneck中的残留层;
4.与MobileNetV3相比,这里用ReLU换掉了Hard-swish激活函数。尽管进一步的超参数调整或基于自动架构搜索的Ghost模块将进一步提高性能,但下表所提供的架构提供了一个基本设计参考。
8 结论
1.Ghost模块消融实验:当s=2、d=3的时候,Ghost模块的性能优于更小或更大的Ghost模块。这是因为大小为1的内核无法在特征图上引入空间信息,而较大的内核(例如d=5或d=7)会导致过拟合和更多计算。
2.特征图可视化:生成的特征足够灵活,可以满足特定任务的需求。
3.ImageNet分类数据集:通常较大的FLOPs会在这些小型网络中带来更高的准确性,这表明了它们的有效性。而GhostNet在各种计算复杂度级别上始终优于其他竞争对手,主要是因为GhostNet在利用计算资源生成特征图方面效率更高。
4.硬件推理速度:作者的模型总体上胜过其他最新模型,例如谷歌MobileNet系列,ProxylessNAS,FBNet和MnasNet。
5.COCO目标检测数据集:GhostNet可以在单阶段的RetinaNet和两阶段的Faster R-CNN框架上达到和MobileNetV2和MobileNetV3类似的mAP。
9 修改步骤!
9.1 修改YAML文件
详细的改进教程以及源码,戳这!戳这!!戳这!!!B站:AI学术叫叫兽 源码在相簿的链接中,动态中也有链接,感谢支持!祝科研遥遥领先!
9.2 新建.py
详细的改进教程以及源码,戳这!戳这!!戳这!!!B站:AI学术叫叫兽er 源码在相簿的链接中,动态中也有链接,感谢支持!祝科研遥遥领先!
9.3 修改tasks.py
详细的改进教程以及源码,戳这!戳这!!戳这!!!B站:AI学术叫叫兽er 源码在相簿的链接中,动态中也有链接,感谢支持!祝科研遥遥领先!
三、验证是否成功即可
执行命令
python train.py
改完收工!
关注B站:Ai学术叫叫兽er
从此走上科研快速路
遥遥领先同行!!!!
详细的改进教程以及源码,戳这!戳这!!戳这!!!B站:AI学术叫叫兽er 源码在相簿的链接中,动态中也有链接,感谢支持!祝科研遥遥领先!