位置: IT常识 - 正文

结构重参数化(Structural Re-Parameters)PipLine(结构重参数化2d pose)

编辑:rootadmin
结构重参数化(Structural Re-Parameters)PipLine 文章目录BASICSstrcutural Inception算法思想算法核心算法架构Re-Parameter四部曲:ACNetACNet原理ACNet分析涨点原因推理阶段融合机制Re-Parameter四部曲:RepVGGRepVGG原理RepVGG分析RepVGG BlockStructural Re-Parameters融合conv2d和BN融合1x1conv转换为3x3conv将BN转换为3x3conv多分支融合Re-Parameter四部曲:Diverse Branch Block六种转换方法a conv for conv-BNa conv for branch additiona conv for sequential convolutionsa conv for depth concatenationa conv for average poolinga conv for multi-scale convolutionsDBB分析Re-Parameter四部曲:OREPARepVGG原理Online Re-Parameterization重参数中的归一化模块线性表达(Block Linearization)Block Squeezing多分支拓扑结构的梯度分析BASICSstrcutural Inception

推荐整理分享结构重参数化(Structural Re-Parameters)PipLine(结构重参数化2d pose),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:结构重参数化2d pose,结构重参数化模型怎么载入,结构重参数化模型怎么载入,结构重参数化效果没有提升,结构重参数化,结构重参数化的模型,结构重参数化2d pose,结构重参数化,内容如对您有帮助,希望把文章链接给更多的朋友!

Inception架构由Google提出,常规包括Ixception-V1、Ixception-V2、Ixception-V3、Ixception-V4、Ixception-ResNet,版本间差异主要集中在迭代方式上,这里我们以V1为例子,介绍Ixception的结构特点。论文地址

算法思想

对于CNN来说,提升网络性能最好的方式是增加网络的深度和维度,对于深度而言,就是我们常说的将数据集下采样至8倍、16倍、32倍等等;维度便是特征图所包含的通道数。如果我们将改进的点放置在这种方式上,那么会存在一个问题,即参数呈指数倍上涨,并且随着parameter的不断增加,网络所诱发的过拟合现象出现的概率也会随之提高。Inception结构的产生便是针对这一问题,Inception的算法基础思想来源于网络中的网络(Network in Network)和稀疏网络架构,产生则是在GoogLeNet。

算法核心

Inception实质是将全连接甚至一般的卷积结构都转化为稀疏连接,将稀疏矩阵聚类为较为密集的子矩阵来提高计算性能。

算法架构

Inception是一类较为早期的CNN结构,因此模块并不复杂,结构上包含三次conv和一次max_pooling,这种操作在当前的研究中也经常被使用,比如ASPP,他们实质上是想丰富特征图的多尺度信息。作者在对模块设计上的解释大概意思是:当期望焦点分布区域全局化时,大conv_kernel的特征会更加丰富,反之,小conv_kernel的特征会更令人满意。 当然,仅上图的结构并不能支撑Inception封神,在此基础上,Inception还有一个降维版本(dimension reductions),相比较而言,降维版的使用不同尺寸的卷积核可以提取到种类更加丰富的特征,同时,使用稀疏矩阵分解为密集矩阵计算的原理,增加了收敛速度。

Re-Parameter四部曲:ACNet

ACNet在Re-Parameters领域具有重要意义,论文地址,作者提出architecture-neutral结构,不对称卷积块(Asymmetric Convolution Block, ACB),文中指出,CNN定义为architecture-neutral前需要满足两点:首先,没有对特定的体系结构做任何假设;其次便是具备普适性。 ACB作为一种即插即用的结构,对于任意现有的模型,在训练阶段用ACB替换其中的方形卷积核,几乎都可以带来精度的提升,并且没有引入新的超参,无需额外的微调。在推理阶段,通过权重融合将ACB还原成模型原有的结构,这样既获得了精度提升又没有增加推理时间。

ACNet原理

宏观上来看「ACNet分为训练和推理阶段,训练阶段重点在于强化特征提取,实现效果提升。而测试阶段重点在于卷积核融合,不增加任何计算量」。 「训练阶段」:因为卷积是大多数网络的基础组件,因此ACNet的实验都是针对3x3卷积进行的。训练阶段就是将现有网络中的每一个3x3卷积换成1x3卷积+3x1卷积+3x3卷积共三个卷积层,最终将这三个卷积层的计算结果进行融合获得卷积层的输出。因为这个过程中引入的卷积和卷积是非对称的,所以将其命名为Asymmetric Convolution。 「推理阶段」:这部分主要是对三个卷积核进行融合。这部分在实现过程中就是使用融合后的卷积核参数来初始化现有的网络,因此在推理阶段,网络结构和原始网络是完全一样的了,只不过网络参数采用了特征提取能力更强的参数即融合后的卷积核参数,因此在推理阶段不会增加计算量。 总结一下就是ACNet在训练阶段强化了原始网络的特征提取能力,在推理阶段融合卷积核达到不增加计算量的目的。虽然训练时间增加了一些时间,但却换来了在推理阶段速度无痛的精度提升。

ACNet分析涨点原因

论文中提到,ACNet有一个特点是「它提升了模型对图像翻转和旋转的鲁棒性」,例如训练好后的1x3卷积和在图像翻转后仍然能提取正确的特征(如Figure4左图所示,2个红色矩形框就是图像翻转前后的特征提取操作,在输入图像的相同位置处提取出来的特征还是一样的)。那么假设训练阶段只用3x3卷积核,当图像上下翻转之后,如Figure4右图所示,提取出来的特征显然是不一样的。因此,引入1x3这样的水平卷积核可以提升模型对图像上下翻转的鲁棒性,竖直方向的3x1卷积核同理。

推理阶段融合机制

推理阶段的融合机制可能是大家最关系的一个问题,推理阶段的融合操作如Figure3所示,在论文中提到具体的融合操作是和BN层一起的,然后融合操作是发生在BN之后的。但是其实也可以把融合操作放在BN层之前,也就是三个卷积层计算完之后就开始融合。

Re-Parameter四部曲:RepVGG

论文地址,从名字上,我们就可以看出RepVGG是针对VGG来的。在VGG提出后,很多学者发现VGG在精度上比不过RestNet,在速度上比不过Moblienet,这无疑让VGG备受打击,并慢慢退出历史舞台。就在VGG快要销声匿迹时,咱们国内大佬(清华、港科技)和企业(旷视)联合提出RepVGG,希望在经典网络上再创辉煌。

RepVGG原理

实际上就是在训练时,使用一个类似ResNet-style的多分支模型,而推理时转化成VGG-style的单路模型。如下图所示,图(B)表示RepVGG训练时所采用的网络结构,而在推理时采用图(C)的网络结构。关于如何将图(B)转换到图(C)以及为什么要这么做后面再细说,如果对模型优化部署有了解就会发现这和做网络图优化或者说算子融合非常类似。

RepVGG分析RepVGG Block

训练时RepVGG Block并行了三个分支:一个卷积核大小为3x3的主分支,一个卷积核大小为1x1的shortcut分支以及一个只连了BN的shortcut分支。这里首先抛出一个问题,为什么训练时要采用多分支结构。如果之前看过像Inception系列、ResNet以及DenseNet等模型,我们能够发现这些模型都并行了多个分支。至少根据现有的一些经验来看,并行多个分支一般能够增加模型的表征能力。所以你会发现一些论文喜欢各种魔改网络并行分支。接着再问另外一个问题,为什么推理时作者要将多分支模型转换成单路模型?七个字:更快、更小、更灵活。

Structural Re-Parameters

在简单了解RepVGG Block的训练结构后,接下来再来聊聊怎么将训练好的RepVGG Block转成推理时的模型结构,即structural re-parameterization technique过程。根据论文中的图4(左侧)可以看到,结构重参数化主要分为两步,第一步主要是将Conv2d算子和BN算子融合以及将只有BN的分支转换成一个Conv2d算子,第二步将每个分支上的3x3卷积层融合成一个卷积层。关于参数具体融合的过程可以看图中右侧的部分。

融合conv2d和BN

关于Conv2d和BN的融合对于网络的优化而言已经是基操了。因为Conv2d和BN两个算子都是做线性运算(线性运算是加法和数量乘法,对于不同向量空间线性运算一般有不同的形式,它们必须满足交换律,结合律,数量加法的分配律,向量加法的分配律),所以可以融合成一个算子。

融合1x1conv转换为3x3conv结构重参数化(Structural Re-Parameters)PipLine(结构重参数化2d pose)

这个过程比较简单,以1x1卷积层中某一个卷积核为例,只需在原来权重周围补一圈零就行了,这样就变成了3x3的卷积层。

将BN转换为3x3conv

对于只有BN的分支由于没有卷积层,所以我们可以先自己构建出一个卷积层来。构建了一个3x3的卷积层,该卷积层只做了恒等映射,即输入输出特征图不变。既然有了卷积层,那么又可以按照上述内容将卷积层和BN层进行融合。

多分支融合

这个其实也不难,合并的过程其实也很简单,直接将这三个卷积层的参数相加即可。

Re-Parameter四部曲:Diverse Branch Block

有了前两篇文章ACNet和RepVGG的铺垫,本文就忽略背景介绍,直接进入核心内容的讲解。本文首先总结了六种不同的结构重参数化的转换方法,然后借鉴Inception的多分支结构提出了一种新的building block:Diverse Branch Block(DBB),在训练阶段,对模型中的任意一个K×K 卷积,都可以用DBB替换,由于DBB引入了不同感受野、不同复杂度的多分支结构,可以显著提升原有模型的精度。在推理阶段,通过这六种结构重参数转换方法,可以将DBB等价地再转换成一个K×K 卷积,这样就可以在模型结构、计算量、推理时间都不变的前提下无损涨点。论文地址

六种转换方法a conv for conv-BN

略(见上一部分)

a conv for branch addition

略(见上一部分)

a conv for sequential convolutions

这是本文新提出的一种转换类型同时也是最复杂的一种。这一转换是将连续的1x1 conv - BN - KxK conv - BN转换成一个单个的 K x K conv。

a conv for depth concatenation

Inception中是通过沿通道拼接的方式来融合多个分支的结果,当多个分支都只含有一个卷积层且规格相同的情况下,对多个分支的结果沿通道拼接等价于将每个分支的卷积核沿输出通道维度进行拼接,这里的输出维度就是每个卷积层的卷积核个数。

a conv for average pooling

平均池化可以等价为一个大小和步长相等的卷积

a conv for multi-scale convolutions

略(见ACNet)

DBB分析

一个完整的DBB block如下图所示,其中包含四个分支,通过上述六种转换,在推理阶段可以将其等价转换为一个卷积,因此对于任意现有的网络如ResNet等,在训练阶段可以将其中的 3×33×3 卷积替换成DBB block,推理阶段再转换回去,达到无损涨点的目的。

Re-Parameter四部曲:OREPA

论文提出了在线重参数方法OREPA,在训练阶段就能将复杂的结构重参数为单卷积层,从而降低大量训练的耗时。为了实现这一目标,论文用线性缩放层代替了训练时的BN层,保持了优化方向的多样性和特征表达能力。从实验结果来看,OREPA在各种任务上的准确率和效率都很不错。论文地址

RepVGG原理Online Re-Parameterization

重参数中的归一化

作者认为中间BN层是重参化过程中多层和多分支结构的关键组成部分。以SoTA模型DBB和RepVGG为例,去除这些层会导致严重的性能下降,因此,作者认为中间的BN层对于重参化模型的性能是必不可少的。然而,中间BN层的使用带来了更高的训练预算。作者注意到,在推理阶段,重参化块中的所有中间操作都是线性的,因此可以合并成一个卷积层,从而形成一个简单的结构。但在训练过程中,BN层是非线性的,即它们将特征映射除以其标准差。因此,中间操作应该单独计算,这将导致更高的计算和内存成本。更糟糕的是,如此高的成本将阻止探索更强大的训练模块。

模块线性表达(Block Linearization)

中间的BN层阻止了在训练过程中合并单独的层。然而,由于性能问题,直接删除它们并不简单。为了解决这一困境,作者引入了channel级线性尺度操作作为BN的线性替代方法。缩放层包含一个可学习的向量,它在通道维度中缩放特征映射。线性缩放层具有与BN层相似的效果,它们都促进多分支向不同的方向进行优化,这是重参化时性能提高的关键。除了对性能的影响外,线性缩放层还可以在训练过程中进行合并,使在线重参化成为可能。 基于线性缩放层,作者修改了重参化块,具体来说,块的线性化阶段由以下3个步骤组成:首先,删除了所有的非线性层,即重参化块中的BN层;其次,为了保持优化的多样性,在每个分支的末尾添加了一个缩放层,这是BN的线性替代方法;最后,为了稳定训练过程,在所有分支的添加后添加一个BN层。一旦完成线性化阶段,在重参化块中只存在线性层,这意味着可以在训练阶段合并块中的所有组件。

Block Squeezing

Block Squeezing步骤将计算和内存昂贵的中间特征映射上的操作转换为更经济的kernel上的操作。这意味着在计算和内存方面从减少到,其中、是特征图和卷积核的空间尺寸。一般来说,无论线性重参化块是多么复杂,以下2个属性始终成立:Block中的所有线性层,例如深度卷积、平均池化和所提出的线性缩放,都可以用带有相应参数的退化卷积层来表示;Block可以由一系列并行分支表示,每个分支由一系列卷积层组成。 有了上述两个特性,如果可以将多层(即顺序结构)、多分支(即并行结构)简化为单一卷积,就可以压缩一个块。

多分支拓扑结构的梯度分析

结论是,对于去掉BN层的分支,利用缩放层可以使其优化方向多样化,并防止其退化为单一的优化方向。

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

上一篇:GANs系列:CGAN(条件GAN)原理简介以及项目代码实现

下一篇:最强大的人工智能chatGPT不会还有人没用过吧,再不用就out了(最强大的人工智能武器)

  • oppok9pro怎么应用分身(oppok9怎么设置应用加密)

    oppok9pro怎么应用分身(oppok9怎么设置应用加密)

  • 抖音录屏怎么操作(抖音录屏怎么录?)

    抖音录屏怎么操作(抖音录屏怎么录?)

  • 华为p40pro是什么处理器呢(华为p40pro是什么调光)

    华为p40pro是什么处理器呢(华为p40pro是什么调光)

  • vivo x27出厂设置如何恢复(vivo手机x27出厂设置在哪里)

    vivo x27出厂设置如何恢复(vivo手机x27出厂设置在哪里)

  • 苹果X和xr有什么区别(苹果x和xr有什么区别)

    苹果X和xr有什么区别(苹果x和xr有什么区别)

  • 小米8se的电池容量(小米8se的电池容量多大)

    小米8se的电池容量(小米8se的电池容量多大)

  • 优盘2.0与3.0的区别(u盘2.0和3.0有何区别)

    优盘2.0与3.0的区别(u盘2.0和3.0有何区别)

  • qq该群不存在或已退出是怎么回事(qq该群不存在或已被删除)

    qq该群不存在或已退出是怎么回事(qq该群不存在或已被删除)

  • 940mx相当于什么显卡(940mx性能相当于)

    940mx相当于什么显卡(940mx性能相当于)

  • 手机回收站清空了能恢复吗(手机回收站清空的视频还能找回吗)

    手机回收站清空了能恢复吗(手机回收站清空的视频还能找回吗)

  • 苹果手机充电一直响怎么回事(苹果手机充电一闪一闪的充不进去电)

    苹果手机充电一直响怎么回事(苹果手机充电一闪一闪的充不进去电)

  • 电话卡几个月不用会自动注销吗(电话卡几个月不用变空号)

    电话卡几个月不用会自动注销吗(电话卡几个月不用变空号)

  • 华为怎么用两个微信号登录(华为怎么用两个密码,两个系统)

    华为怎么用两个微信号登录(华为怎么用两个密码,两个系统)

  • iphone网页显示不完整

    iphone网页显示不完整

  • 剪映怎么在视频里添加照片(剪映怎么在视频前面加一段视频)

    剪映怎么在视频里添加照片(剪映怎么在视频前面加一段视频)

  • 抖音dou投放6小时还是12小时(抖音dou投放6小时后还会推吗)

    抖音dou投放6小时还是12小时(抖音dou投放6小时后还会推吗)

  • ipad内存条可以加吗(ipad内存条能不能换)

    ipad内存条可以加吗(ipad内存条能不能换)

  • 手机mac地址有什么用(手机mac地址有什么作用)

    手机mac地址有什么用(手机mac地址有什么作用)

  • 微信怎么在朋友圈发一排字(微信怎么在朋友圈发收藏)

    微信怎么在朋友圈发一排字(微信怎么在朋友圈发收藏)

  • win10怎么给c盘扩容(win10怎么给c盘扩容如何把d盘空间分给c盘)

    win10怎么给c盘扩容(win10怎么给c盘扩容如何把d盘空间分给c盘)

  • 个人计算机属于(个人计算机属于小型计算机)

    个人计算机属于(个人计算机属于小型计算机)

  • 地磅的小票打印步骤(地磅的小票打印不清楚)

    地磅的小票打印步骤(地磅的小票打印不清楚)

  • 哪个视频播放器好?(哪个视频播放器最好)

    哪个视频播放器好?(哪个视频播放器最好)

  • 苹果xr快充支持多少w(苹果xr快充支持20w吗)

    苹果xr快充支持多少w(苹果xr快充支持20w吗)

  • oppo邮箱在哪里(oppo邮箱在哪里注册)

    oppo邮箱在哪里(oppo邮箱在哪里注册)

  • 网络电视怎么看中央台(网络电视怎么看直播电视)

    网络电视怎么看中央台(网络电视怎么看直播电视)

  • Excel中长数字如何不显示为科学计数法(xlsx长数字)

    Excel中长数字如何不显示为科学计数法(xlsx长数字)

  • win7系统招行网银专业版无法登陆无效请求,请重新(招行网银专业版怎么登陆)

    win7系统招行网银专业版无法登陆无效请求,请重新(招行网银专业版怎么登陆)

  • 以前年度损益调整在借方是什么意思
  • 咨询费开发票选哪一项
  • 加计抵减附加税怎么做账务处理
  • 出口退税贷方余额是什么意思
  • 生鲜配送公司财务制度
  • 一个季度是多长时间
  • 增值税普票没有校验码
  • 银行本票结算分录
  • 退预付账款会计分录
  • 申办企业所得税抵缴带哪些资料?
  • 小规模纳税人开专票
  • 增值税抵扣期限多少天
  • 租赁房使用权和所有权冲突
  • 发票作废是不是很麻烦
  • 员工工作服计入劳保费吗
  • 房地产行业应收帐款周转率平均值
  • 信用证和银行承兑汇票的区别如何做分录
  • 外贸企业出口货物会计账务处理
  • 个人业务费是什么
  • 把试驾车当新车卖,构成欺诈
  • mac切换不了中文怎么回事
  • 服务业结转成本与收入如何配比
  • 税点款怎么算
  • 增加注册资本的请示
  • php编程基础与实例教程
  • php编程入门指南
  • PHP:zip_read()的用法_Zip函数
  • 债权人将长期债务转为投资
  • 开票逃税的处罚
  • 企业所得税税金及附加包括
  • 持有至到期投资科目被取消了吗
  • 收到银行退回账号短信
  • php接收ajax请求
  • 麒麟软件的linux桌面操作系统
  • vue面试题及答案2021
  • vue3项目实战
  • 其他应付款转入管理费用
  • docker运行多个镜像
  • vue.js前端
  • wordpress整站备份
  • c语言中sizeof是啥意思
  • mysql唯一键和唯一索引
  • 缴纳以前年度房产税分录
  • 小微企业增值税起征点是多少
  • 普通发票和增值税发票的税率
  • sqlserver触发器写法
  • 计提企业所得税的会计科目
  • 生产企业购进的生产原材料用来装修公司会计处理
  • 基本医疗保险费是医保吗
  • 购买股票如何操作
  • 利润表中管理费用根据什么填
  • 研发支出费用化支出结转到哪个科目
  • 建立新公司需要做什么
  • sql server Bulk Insert命令详细
  • mysql5.7.26启动失败
  • 准确配置
  • ubuntu18虚拟机
  • Ubuntu Server Rsync服务端与Windows cwRsync客户端实现数据同步配置教程
  • windows8怎么更新到最新版本
  • win8系统怎么到桌面
  • xp怎么改密码怎么设置
  • win7系统摄像头不可用怎么办
  • linux检查是否存在vxlan模块
  • win7系统出现蓝屏怎么解决
  • Linux系统怎么用命令行打开软件
  • css跑马灯效果
  • nodejs mock
  • firefox允许弹出窗口
  • 信号监控设备是什么
  • jquery操作table
  • 本地 node js 启动vue
  • 三角进攻怎么打
  • javascript create
  • jquery complete
  • 怎样从增值税发票查询
  • 公司买的保险怎么查询保单明细
  • 呼伦贝尔清欠办电话
  • 会计的各种税
  • 环保标识码
  • 宁波购房契税退税条件
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设