位置: IT常识 - 正文

ghostnet(ghostnet改进)

编辑:rootadmin
ghostnet

推荐整理分享ghostnet(ghostnet改进),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:ghostnetv2代码,ghostnet改进,ghostnet网络结构图,ghostnet论文,ghostnets翻译中文,ghostnets翻译中文,ghostnetv2代码,ghostnets翻译中文,内容如对您有帮助,希望把文章链接给更多的朋友!

        CVPR 2020:华为GhostNet,超越谷歌MobileNet,已开源 - 知乎来自华为诺亚方舟实验室的一篇工作近日被CVPR 2020接受,提出了一种新型的端侧神经网络架构,GhostNet。作者:韩凯、王云鹤等。该架构可以在同样精度下,速度和计算量均少于SOTA算法。 该论文提供了一个全新的Ghos…https://zhuanlan.zhihu.com/p/109325275GhostNet论文解析:Ghost Module - 知乎简介: GhostNet是2020CVPR录用的一篇对卷积操作进行改进的论文。文章的核心内容是Ghost模块(Ghost Module), 可以用来替换任何经典CNN网络中的卷积操作,突出优势是轻量高效,实验证明使用了Ghost Module的Mobi…https://zhuanlan.zhihu.com/p/109420599GhostNet 解读及代码实验(附代码、超参、日志和预训练模型) - 知乎文章首发于极市平台微信公众号(ID:extrememart) 一、前言 二、论文阅读 三、代码实验 实验1. 训练模型 实验2. 计算Weights和FLOPs 实验3. 可视化特征图 四、Ghost Module下一步工作 方案1: 借助baselin…https://zhuanlan.zhihu.com/p/115844245对GhostNet中Ghost Module的理解以及对原论文的质疑 - 知乎GhostNet是华为诺亚方舟实验室提出的新型轻量化神经网络,在此次CVPR2020上横空出世,因为本人最近一直在了解一些轻量化手段,所以看到“超越MobileNetV3”这种标题的时候也不由得对其产生了兴趣,但深入了解之后…https://zhuanlan.zhihu.com/p/121757597

        ghostnet生动的阐述了会编故事的重要性,文章给一个自己的操作上了个大帽子,听起来有普遍的理论意义,ghostnet整体的架构和mobilenetv3是一致的,核心思想就是在bottleneck中用了两个ghost layer,ghost layer是一个3x3conv+3x3depthwise conv,去掉了1x1conv,意思是通过线性变化可以产生redundancy in feature map,这种redundancy其实可以理解成feature map的特征增强,conv的输入中引入了更多的特征数据。

1.Abstract

        作者说the redundancy in feature maps is an important characteristic of those successful CNNs,cnn中特征图的冗余很重要,什么是特征冗余?其实就是特征相似的某一维度的卷积输出,在Ghost模块中通过cheap operations生成了更多的特征图,Based on a set of intrinsic feature maps, we apply a series of linear transformations with cheap cost to generate many ghost feature maps that could fully reveal information underlying intrinsic features. 在基于intrinsic特征图,用了一系列的cheap cost的线性转化来生成许多能够充分揭示潜在intrinsic特征的ghost feature maps。意思就是在常规卷积生成的特征图上,作者用了一些线性变换,又生成一些所谓的ghost特征图,ghost特征就是相似的冗余特征,相似的冗余特征又是cnn之所有有效的关键。

        但是,1.作者的这篇论文并没有给出线性变换真正有效的生成了所谓的ghost特征图,2.冗余特征是不是在cnn中起到了很大的作用,不一定,有可能conv+depth-wise只是简单的数据增强,3.所谓线性变换,作者用了dp-conv+relu,用了dp-conv还是线性的,加了relu其实不是线性的。

如上图,红色的,绿色的和蓝色的图都是一对,叫做冗余信息,小扳手就是cheap operation,特征图是resnet50第一个residual block后的输出。ghost就是幽灵的意思,ghostnet意思就是这些重影的这些特征图,名字取得好啊。

1.Introduction

        ResNet-50 [16] has about 25.6M parameters and requires 4.1B FLOPs to process an image of size 224 x 224.

       在well-trained的深度神经网络中,丰富甚至冗余信息的特征图保证了对输入数据的充分理解。例如,图1中展示的resnet50中生成的输入数据的一些特征图,其中存在许多similar pairs of feature maps,就像彼此的ghost一样。特征图中的冗余可能是成功的深度神经网络中的一个重要的特征,我们倾向于采用冗余特征图,而不是避免使用,但是要用一个cost-efficient的方式来利用冗余特征图。作者说这种similar pairs of feature maps就是ghost现象,这种现象是要利用的,所以有了后面conv+dp-conv,dp-conv是一一对应的conv,对每个维度的特征图用一个单一的核去生成对应的特征图,能够有效的构造这种pairs。(dp-conv可能自己都不知道自己还有这么个用处,用于产生 ghost pairs,当然文章也说你换个其他的线性转换也行,换其他的大概率不work)

2.Approach

2.1 ghost module for more features

ghostnet(ghostnet改进)

        这里有一点其实也挺重要的,作者说mobilenetv2等引入了dp-conv+pt-conv(dp用来分组,pt用来建立channel之间的练习,dp就是分组卷积,pt就是1x1卷积),这种方式构造高效cnn,但是剩余的1x1卷积让占用了大量的内存和flops。因此在ghost module里面是没有1x1conv的。

作者先说了常规卷积的做法,常规卷积的输出n个特征图中经常包含很多冗余,他们中彼此相似,指出其实不需要大量的flops和参数逐个去生成这些冗余特征图。作者先用常规cnn生成m个特征图(n/2),然后对这些特征图一一对应进行某种线性变换,生成对应的pair特征图(n/2),最后将这些特征图concat变成n,最外层连接一个shortcut,至于线性变换,是什么,其实就是3x3dp-conv。dp-conv确实是线性变换,但是实际的操作中,作者并不是dp-conv,而是dp-conv+bn+relu这样的非线性组合。作者的解释是depth wise也是一种卷积,其实可以学到很多仿射变换的效果(因为cuda不支持仿射变换的高效处理),确实带着relu会有一点理解偏差,但是初衷还是说用更简单的(比如平移、旋转、镜面反射、差分等等)。

每一个ghostbottleneck是由2个ghost layer组成的,结合代码来看一些,ghostbottleneck如下:

class GhostBottleneck(nn.Module): """ Ghost bottleneck w/ optional SE""" def __init__(self, in_chs, mid_chs, out_chs, dw_kernel_size=3, stride=1, act_layer=nn.ReLU, se_ratio=0.): super(GhostBottleneck, self).__init__() has_se = se_ratio is not None and se_ratio > 0. self.stride = stride # Point-wise expansion self.ghost1 = GhostModule(in_chs, mid_chs, relu=True) # Depth-wise convolution if self.stride > 1: self.conv_dw = nn.Conv2d(mid_chs, mid_chs, dw_kernel_size, stride=stride, padding=(dw_kernel_size-1)//2, groups=mid_chs, bias=False) self.bn_dw = nn.BatchNorm2d(mid_chs) # Squeeze-and-excitation if has_se: self.se = SqueezeExcite(mid_chs, se_ratio=se_ratio) else: self.se = None # Point-wise linear projection self.ghost2 = GhostModule(mid_chs, out_chs, relu=False) # shortcut if (in_chs == out_chs and self.stride == 1): self.shortcut = nn.Sequential() else: self.shortcut = nn.Sequential( nn.Conv2d(in_chs, in_chs, dw_kernel_size, stride=stride, padding=(dw_kernel_size-1)//2, groups=in_chs, bias=False), nn.BatchNorm2d(in_chs), nn.Conv2d(in_chs, out_chs, 1, stride=1, padding=0, bias=False), nn.BatchNorm2d(out_chs), ) def forward(self, x): residual = x # 1st ghost bottleneck x = self.ghost1(x) # Depth-wise convolution if self.stride > 1: x = self.conv_dw(x) x = self.bn_dw(x) # Squeeze-and-excitation if self.se is not None: x = self.se(x) # 2nd ghost bottleneck x = self.ghost2(x) x += self.shortcut(residual) return x

如果有降采样,在两个ghost layer之间用dp-conv来降维。ghost layer如下:

class GhostModule(nn.Module): def __init__(self, inp, oup, kernel_size=1, ratio=2, dw_size=3, stride=1, relu=True): super(GhostModule, self).__init__() self.oup = oup init_channels = math.ceil(oup / ratio) new_channels = init_channels*(ratio-1) self.primary_conv = nn.Sequential( nn.Conv2d(inp, init_channels, kernel_size, stride, kernel_size//2, bias=False), nn.BatchNorm2d(init_channels), nn.ReLU(inplace=True) if relu else nn.Sequential(), ) self.cheap_operation = nn.Sequential( nn.Conv2d(init_channels, new_channels, dw_size, 1, dw_size//2, groups=init_channels, bias=False), nn.BatchNorm2d(new_channels), nn.ReLU(inplace=True) if relu else nn.Sequential(), ) def forward(self, x): x1 = self.primary_conv(x) x2 = self.cheap_operation(x1) out = torch.cat([x1,x2], dim=1) return out[:,:self.oup,:,:]

primary_conv是常规卷积,cheap operation是线性转换。输出时是两者concat,组成一个ghost pairs。因为上面对dp-conv的另类解释,用于生成similiar pairs of the feature map,所以不需要向之前的mobilenetv2那样前面加1x1conv和后面加1x1conv了,1x1conv的数量大大减少了,但是多了生成n/s的常规卷积块。

Analysiz on complexities.用ghost模块升级普通卷积的理论家速比是s,s就是对常规卷积输出n的特征图的分块,在作者这里stride=1的话是2,通道维度直接降一般,再和dp-conv生成出来的n/2concat,刚好还是n,shortcut支路过来的是直接add的(add完是不改变通道数目的)

4.experiments

4.1 toy experiments

这里有个很有意思的实验,作者想观察原始的特征图和通过线性变换生成的特征图两者之间的重建误差,图1上是resnet50的第一个residual block输出的特征图,作者选了红绿蓝色三对,把左边的输入,右边做输出,使用一个小的depthwise conv来学习两者之间的映射,下图表明,三对之间的mse都很小,就说明其实depthwise conv其实是对常规卷积产生特征图做了很好的重建,就是生成了所谓的ghost。

visualization of feature map. 

 图5是常规卷积生成的,图4左右红色是常规卷积生成的一半通道的特征图,右边是在左边特征图基础上用线性转换又提了特征的,图4强化了作者认为在深度神经网络中很重要的similar pairs。这里最大的问题是常规操作出来的pairs的占比是不知道的,理论上就认为pair起了很大的问题是不科学的,也不一定就是pair起了作用,也有可能就是边边角角的特征起了作用,dp-conv相当于在常规卷积上又提了一遍特征而已,虽然是对应通道提取的。看起来更像是做了更多的特征图数据增强,产生了不同尺度的特征,3x3的dp-conv感受野也是不同的,和常规conv出来的特征图出来concat,完全有可能是多尺度融合的结果。后面从数据增强的角度出发,n/2,一半是常规卷积,一半是depthwise conv,concat,那n/4呢,感觉可以切n/4,1/4conv,1/4dp-conv,1/4conv+dp-conv,1/4conv+conv,再concat,以此等等,感觉就是feature-map的数据增强增强,The redundancy in feature maps is an important characteristic,那也别冗余了,别ghost了,就是数据增强很重要。

        论文最大的问题就是故事编的好,理论站不住脚。但是整体来看去掉了1x1conv,在bottleneck中引入了ghost layer,ghost layer里面用常规卷积先降维,在一一对应depthwise conv产生对应channel的特征图,直接concat。ghostnet之前也在我自己的项目上试过,效果一般。

2021.12.8:paperwidthcode 上imagenet top1 精度:75.7%,top5:92.7%,参数量:7.3m

本文链接地址:https://www.jiuchutong.com/zhishi/298802.html 转载请保留说明!

上一篇:我在字节的这两年(字节在互联网什么地位)

下一篇:【大数据实时数据同步】超级详细的生产环境OGG(GoldenGate)12.2实时异构同步Oracle数据部署方案(上)(大数据实时数仓)

  • wps除法函数公式是什么(wps除法函数命令是什么)

    wps除法函数公式是什么(wps除法函数命令是什么)

  • wps办公软件是什么意思(wps office办公软件属于什么软件)

    wps办公软件是什么意思(wps office办公软件属于什么软件)

  • 取消网页导航如何恢复(已取消网页导航弹窗)

    取消网页导航如何恢复(已取消网页导航弹窗)

  • 联发科6750是骁龙处理器多少(联发科6750相当于骁龙哪款)

    联发科6750是骁龙处理器多少(联发科6750相当于骁龙哪款)

  • 微信怎么看自己朋友圈发的东西(微信怎么看自己的群)

    微信怎么看自己朋友圈发的东西(微信怎么看自己的群)

  • QQ离线请留言是关机了吗(qq离线请留言是手机关机了吗)

    QQ离线请留言是关机了吗(qq离线请留言是手机关机了吗)

  • 微信被投诉违规是什么情况(微信被投诉违规行为什么时候可以清除)

    微信被投诉违规是什么情况(微信被投诉违规行为什么时候可以清除)

  • 手机微信直播咋录屏(在微信里直播)

    手机微信直播咋录屏(在微信里直播)

  • 小米lite是什么意思(小米lite价格)

    小米lite是什么意思(小米lite价格)

  • 计算机上ce键叫什么键(计算机上ce键是什么作用)

    计算机上ce键叫什么键(计算机上ce键是什么作用)

  • word怎么加底纹(word怎么加底纹样式)

    word怎么加底纹(word怎么加底纹样式)

  • ps怎么升级(ps怎么升级版本需要卸载老版本)

    ps怎么升级(ps怎么升级版本需要卸载老版本)

  • 苹果xsmax屏幕怎么样(xsmax手机屏)

    苹果xsmax屏幕怎么样(xsmax手机屏)

  • 腾讯地图怎么添加店铺位置(腾讯地图怎么添加自己的公司)

    腾讯地图怎么添加店铺位置(腾讯地图怎么添加自己的公司)

  • 华为云空间怎么删除(华为云空间怎么转到小米手机上)

    华为云空间怎么删除(华为云空间怎么转到小米手机上)

  • 探探解除匹配能找到么(探探解除匹配能再刷到对方)

    探探解除匹配能找到么(探探解除匹配能再刷到对方)

  • 陌陌怎么发起语音通话(陌陌怎么发起语音聊天)

    陌陌怎么发起语音通话(陌陌怎么发起语音聊天)

  • 投影手机和手机投影究竟谁更好(投影和手机同屏怎么设置)

    投影手机和手机投影究竟谁更好(投影和手机同屏怎么设置)

  • 小米手环4nfc功能有什么用(小米手环4nfc有什么用)

    小米手环4nfc功能有什么用(小米手环4nfc有什么用)

  • 小爱音响mini恢复出厂设置(小米小爱音箱mini恢复出厂设置方法)

    小爱音响mini恢复出厂设置(小米小爱音箱mini恢复出厂设置方法)

  • Win7为什么会显示电脑未识别的网络 无internet访问(win7为什么显示多重网络)

    Win7为什么会显示电脑未识别的网络 无internet访问(win7为什么显示多重网络)

  • linux怎么修改账户头像? linux修改登录用户头像的方法(Linux怎么修改账户名)

    linux怎么修改账户头像? linux修改登录用户头像的方法(Linux怎么修改账户名)

  • eudora.exe是什么进程 eudora进程信息查询(ecap.exe是什么)

    eudora.exe是什么进程 eudora进程信息查询(ecap.exe是什么)

  • 【历史上的今天】3 月 23 日:网景创始人出生;FORMAC 语言的开发者诞生;PRMan 非商业版发布

    【历史上的今天】3 月 23 日:网景创始人出生;FORMAC 语言的开发者诞生;PRMan 非商业版发布

  • 如何在最新版本宝塔Linux面板 7.9.4安装 Swoole Loader 扩展傻瓜化教程-OK源码中国(如何在最新版本钉钉上使用支付审申请)

    如何在最新版本宝塔Linux面板 7.9.4安装 Swoole Loader 扩展傻瓜化教程-OK源码中国(如何在最新版本钉钉上使用支付审申请)

  • 计算企业所得税分录
  • 疫情期间社保单位不交个人吃亏吗
  • 航空电子客票行程单在哪里打印
  • 附加税计税依据文件
  • 利润为负数利润增长率怎么算
  • 个体工商户五级税率
  • 固定资产大修理支出标准
  • 无偿捐赠设备该如何做账务处理呢?
  • 库存生产用钢材属于什么会计科目类别
  • 快递公司需要交税吗
  • 汽车折旧年限与什么有关
  • 建筑业企业包括哪些企业
  • 母公司子公司之间担保
  • 有限合伙企业需要承担无限连带责任吗
  • 优惠购房差价收益是否缴纳个人所得税?
  • 国税登记流程
  • 住宿发票税率免税是怎么回事
  • 地方教育附加什么时候交
  • 往年个税申报数据查询
  • 什么发票可以抵成本
  • 建筑总承包企业资质
  • windows10专业
  • win11耳机插电脑没声音怎么办
  • uefi+bios
  • 产生的投资收益怎么算
  • 无法连接到移动网络小米
  • mac环境搭建
  • 景点门票定价依据
  • php使用教程
  • 外出经营范围
  • CodeIgniter扩展核心类实例详解
  • Uniapp使用$base方法
  • js正则表达式删除特定字符
  • 土地增值税的计算方法和步骤例题
  • 座头鲸救人
  • 圣米歇尔山法语介
  • 成本价低于现价 应该卖吗
  • 原生js获取元素高度
  • 补缴当年增值税税款和滞纳金如何记账
  • uniapp微信小程序广告
  • 主动学习(Active Learning,AL)的理解以及代码流程讲解
  • 小规模纳税人申报表模板
  • 重复上次命令
  • 2019年新会计制度改革
  • 固定资产多少钱以上才要计提折旧
  • 资产减值损失为什么要调增
  • 在vue项目如何引入异步组件?
  • 内帐收入怎么确定
  • 一般纳税人增值税怎么算
  • 包装物租金如何界定
  • 无形资产专利技术属于
  • 保函保证金怎么入账
  • 国外工程合同类型
  • 资产负债表货币资金怎么填
  • 认缴款和投资款区别
  • 毛利润利润总额净利润的关系图
  • 会计软件入什么科目
  • 买钢管扣件
  • 数据库分页存储方法
  • mysql 正则表达式分组替换
  • windows9怎么截图
  • win10一年更新一次
  • windows vista可以换7吗
  • centos云服务器
  • gentoo linux优点
  • 提高生殖能力
  • WNxp下让所有用户桌面显示系统默认图标的方法
  • 电脑windows8怎么样
  • windows7的使用方法
  • win8.1安装过程
  • win8如何更改用户名字?
  • 系统闹钟设置
  • linux在云计算中的使用
  • Win7系统如何查看隐藏文件
  • WIN10系统更新怎么关闭
  • 网页设计绿色
  • 抛物线动画演示视频
  • jQuery+ajax简单实现文件上传的方法
  • 外经证注销网上操作
  • 房产税申报流程图
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设