超级详细易懂的GhostNet解析

这篇具有很好参考价值的文章主要介绍了超级详细易懂的GhostNet解析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

GhostNet的不完全解析

CVPR2020 & IJCV2022(the extended version)
Noah’s Ark Lab, Huawei Technologies

论文地址: https://arxiv.org/abs/1911.11907
源码:https://github.com/huawei-noah/ghostnet.

摘要

由于内存和计算资源有限,在嵌入式设备上部署卷积神经网络(CNNs)是很困难的。特征图中的冗余性是这些成功cnn的一个重要特征,但在神经结构设计中很少被研究。
本文提出了一种新的ghost模块,从廉价的操作中生成更多的特征映射。基于一组内在特征映射,应用一系列成本低廉的线性变换来生成许多幽灵特征映射,可以充分揭示内在特征背后的信息。
提出的ghost模块可以作为即插即用组件来升级现有的卷积神经网络。 Ghost bottlenecks被设计为堆栈的ghost模块,可以很容易地建立轻量级的GhostNet。
在基准测试上进行的实验表明,所提出的Ghost模块是baseline模型中卷积层的一个令人印象深刻的替代方案,我们GhostNet可以在ImageNet ILSVRC-2012分类数据集上以相近的计算成本比MobileNetV3获得更高的识别性能(例如75.7%的top-1精度)。

研究动机

在主流的深度神经网络提取的特征图中,丰富甚至冗余的信息通常保证了对输入数据的全面理解。例如,图1展示了由ResNet-50生成的输入图像的一些特征图,并且存在许多相似的特征图对,就像彼此之间的幽灵一样。超级详细易懂的GhostNet解析

特征图中的冗余(ghost maps)可能是一个成功的深度神经网络的一个重要特征。我们不是避免冗余的特征映射,而是倾向于接受它们,但以一种低成本高效益的方式。

相关工作

目前流行的轻量方法:

模型压缩(性能通常取决于给定的预训练模型)

  1. pruning connection: 连接剪枝,剪掉一些不重要的神经元连接
  2. channel pruning: 通道剪枝,剪掉一些无用的通道
  3. model quantization: 模型量化,在具有离散值的神经网络中对权重或激活函数进行压缩和计算加速
  4. tensor decomposition: 张量分解,通过利用权重的冗余性和低秩性来减少参数或计算
  5. knowledge distillation: 知识蒸馏, 利用大模型教小模型,提高小模型的性能

紧凑模型设计(虽然这些模型在很少的FLOPs下获得了良好的性能,但特征映射之间的相关性和冗余性并未得到很好的利用。)

  1. Xception: depthwise conv operation
  2. MobileNet v1-v3: depthwise separable conv、 inverted residual block、AutoML technology
  3. ShuffleNet v1-v2: channel shuffle operation、channel split

网络设计

Ghost module

- 由普通卷积生成不含冗余的特征图1;
- 由特征图1通过identity和廉价的线性运算Φ生成完整特征图(Φ 是诸如3x3 或 5x5的卷积,并且是逐个特征图进行深度可分离卷积)。

超级详细易懂的GhostNet解析

Ghost module的特点
  1. 与广泛使用的1×1pointwise convolution的单元相比,Ghost module中的主要卷积可以自定义内核大小;
  2. 现有的方法]采用pointwise convolution来跨通道处理特征,然后采用 depthwise convolution来处理空间信息。而Ghost模块则采用普通的卷积方法,首先生成一些内在的特征映射,然后利用廉价的线性操作来增强特征,增加信道;
  3. 在以往的高效架构中,处理每个特征映射的操作仅限于 depthwise convolution or shift operation,而在Ghost模块中的线性操作可以有很大的多样性(文中的线性操作指深度可分离卷积操作);
  4. 将identity与Ghost module中的线性变换并行,以保持与普通卷积输出一致的内在特征图。
复杂度分析

FLOPs(floating point operations):用来衡量算法/模型的复杂度。 FLOPs = Cout∗Hout∗Wout∗Cin∗K∗K

假设有1个identity和s-1个ghost特征图(1个特征图有s-1个冗余),则FLOPs减少s倍:
超级详细易懂的GhostNet解析
分子为普通卷积的复杂度;分母为ghost module的复杂度,红色下划线是普通卷积产生的FLOPs(第一步),蓝色下划线是identity和线性运算产生的FLOPs(第二步)。
其中,s代表每个通道产生的总映射(1个intrinsic feature map和s-1个ghost feature maps),c为输入特征图个数一般较大,s<<c; n/s指经过普通卷积输出的intrinsic feature map;d×d为线性操作的平均核大小,具有与k×k相似的大小。

Ghost Bottlenecks

超级详细易懂的GhostNet解析
类似于ResNet残差块的设计,代码中identity中有一个深度可分离卷积操作。第一个ghost module作为expansion layer,用于增加通道数目,(输出c/ 输入c) 称为expansion ratio;第二个ghost module用于减少通道数目,使其与输入通道数匹配,进行shortcut。
根据MobileNetV2建议:第二个ghost module之后不再使用ReLU,在每层之后应用BN。

GhostNet

由ghost module堆叠而成,G-bneckt表示Ghost Bottleneck。#exp表示expansion size。#out表示输出通道数。SE表示是否使用SE模块。
与MobileNetV3相比,由于其延迟较大,我们不使用hard-swish非线性激活函数。
超级详细易懂的GhostNet解析

Experiments

超级详细易懂的GhostNet解析
超级详细易懂的GhostNet解析
超级详细易懂的GhostNet解析
超级详细易懂的GhostNet解析
目标检测:
超级详细易懂的GhostNet解析
超级详细易懂的GhostNet解析文章来源地址https://www.toymoban.com/news/detail-456683.html

到了这里,关于超级详细易懂的GhostNet解析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • leetcode 407.接雨水II(超级简单易懂)

    大家好,这里是张哈希刷题频道。今天给大家带来一道有意思的题目,\\\"接雨水II\\\"。 看到好多小伙伴,遇到了面试官想 `kill -9` 结束面试,抛出了这个3D接雨水核弹(前些年抛红黑树线段树之类的),接不下来基本上就宣布下线,此时一般可以直接带上简历走人了 ... (开个玩

    2024年02月21日
    浏览(37)
  • React超级简单易懂全面的有关问题回答(面试)

    目录 React事件机制: 2、React的事件和普通的HTML有什么不同: - 事件命名的规则不同,原生事件采用全小写,react事件采用小驼峰 3、React组件中怎么做事件代理?他的原理是什么? 4、React高阶组件、Render props、Hook有什么区别,为什么要不断迭代? ✨HOC(高阶组件): ✨Render

    2024年02月02日
    浏览(41)
  • GoogleTest从入门到入门,小白都能看懂的gtest详细教程

    单元测试 项目管理和技术管理中做单元测试,衡量一个软件是否正常的标准,良好的单元测试以及足够多的覆盖率,至少保证关键功能,关键业务的覆盖率接近100%。 gtest是谷歌公司发布的一个跨平台(Linux、Mac OS、Windows等)的C++单元测试框架,它提供了丰富的断言、致命和

    2024年02月07日
    浏览(51)
  • 热词科普--关于前后端分离的易懂解析

    目录 一、什么是前后端分离? 二、为什么要前后端分离? 未分离时期:  工作方式: 半分离时期: 三、前后端分离的优点 四、前后端分离的缺点 五、什么场景下可以考虑前后端分离 六、基于Vue + Springboot的前后端分离 Spring Boot 简述 Vue 简述 项目案例   前后端分离 是一种

    2024年04月23日
    浏览(158)
  • YOLOv3目标检测算法——通俗易懂的解析

    前两篇文章我们讲了下关于 YOLOv1 和 YOLOv2 的原理,有不懂的小伙伴可以回到前面再看看: YOLOv1目标检测算法——通俗易懂的解析 YOLOv2目标检测算法——通俗易懂的解析   作者出于道德问题从 YOLOv3 开始将不再更新 YOLO 系列算法,俄罗斯的一位大佬Alexey Bochkovskiy接过了 YO

    2024年02月08日
    浏览(50)
  • PyTorch简单易懂的解析 Dropout Layers应用,代码示例

    目录 torch.nn子模块Dropout Layers详解 nn.Dropout 用途 用法 使用技巧 注意事项 代码示例 nn.Dropout1d 用途 用法 使用技巧 注意事项 代码示例 nn.Dropout2d 用途 用法 使用技巧 注意事项 代码示例 nn.Dropout3d 用途 用法 使用技巧 注意事项 代码示例 nn.AlphaDropout 用途 用法 使用技巧 注意事项

    2024年02月02日
    浏览(34)
  • PyTorch 简单易懂的 Embedding 和 EmbeddingBag - 解析与实践

    目录 torch.nn子模块Sparse Layers详解 nn.Embedding 用途 主要参数 注意事项 使用示例 从预训练权重创建嵌入 nn.EmbeddingBag 功能和用途 主要参数 使用示例 从预训练权重创建 总结 torch.nn.Embedding 是 PyTorch 中一个重要的模块,用于创建一个简单的查找表,它存储固定字典和大小的嵌入

    2024年01月25日
    浏览(34)
  • autoGPT搭建详细教程-通俗易懂

    Autogpt是基于GPT的自动文本生成工具,是OpenAI公司发布的一种自然语言处理技术。它采用了自动回归模型,能够根据输入的文本生成类似人类语言的连续文本输出。Autogpt模型使用了数亿个参数来学习语言模式和规律,具有出色的自然语言处理能力,可以应用于文本摘要、机器

    2024年02月08日
    浏览(40)
  • mysql数据库安装教程(超级超级详细)

    目录 一、首先安装可以根据官方文档进行安装 二、Linux中安装mysql 1、首先执行二进制文件的安装 https://dev.mysql.com/doc/ 1、先安装到Windows中:  2、选择mysql community server。 3、 选择要下载的版本,到时候使用Linux中的ftp软件上传。推荐选择5.7版本的,因为老,稳定,很多公司

    2024年02月09日
    浏览(54)
  • Layui之选项卡案例 详细易懂

    ⭐  本期精彩: 利用Layui框架实现动态选项卡 ⭐ 继上一篇已经实现了左边的树形菜单栏,这一关卡我们已通过,接下来就是实现右边的动态选项卡的关卡,上个关卡的效果及链接 目录 ⭐ 本期精彩: 利用Layui框架实现动态选项卡           ⭐ 链接:http://t.csdn.cn/tYccL 一

    2024年02月16日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包