位置: 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了(最强大的人工智能武器)

  • 戴尔电脑相机在哪打开(戴尔电脑的相机怎么开)

    戴尔电脑相机在哪打开(戴尔电脑的相机怎么开)

  • 腾讯连续包月自动扣费怎么取消(腾讯连续包月自动续费怎么取消)

    腾讯连续包月自动扣费怎么取消(腾讯连续包月自动续费怎么取消)

  • 支付宝怎么查身份证办理进度(支付宝怎么查看证件照片)

    支付宝怎么查身份证办理进度(支付宝怎么查看证件照片)

  • adobe flash player可以卸载吗(adobe flash player可以用什么代替)

    adobe flash player可以卸载吗(adobe flash player可以用什么代替)

  • snkrs一直很抱歉出错了(snkrs一直很抱歉出错了安卓)

    snkrs一直很抱歉出错了(snkrs一直很抱歉出错了安卓)

  • microsoft office副本尚未激活是什么意思(microsoft office副本不激活会怎样)

    microsoft office副本尚未激活是什么意思(microsoft office副本不激活会怎样)

  • 为什么微信会被限制登录(为什么微信会被异常关闭)

    为什么微信会被限制登录(为什么微信会被异常关闭)

  • 拼多多会不会封买家账号(拼多多会不会封店)

    拼多多会不会封买家账号(拼多多会不会封店)

  • 腾讯会议中途离开有记录吗(腾讯会议中途离开主持人会知道是谁吗)

    腾讯会议中途离开有记录吗(腾讯会议中途离开主持人会知道是谁吗)

  • office不激活可以用吗(office不激活可以下载另一个版本吗)

    office不激活可以用吗(office不激活可以下载另一个版本吗)

  • audio接口是什么意思(audio接口是什么颜色)

    audio接口是什么意思(audio接口是什么颜色)

  • 状态栏在哪里(苹果手机通知与状态栏在哪里)

    状态栏在哪里(苹果手机通知与状态栏在哪里)

  • gtt认证什么意思(gtc证书和ngtc证书的区别)

    gtt认证什么意思(gtc证书和ngtc证书的区别)

  • 交易猫备货订单多久自动取消(交易猫备货订单在哪里看)

    交易猫备货订单多久自动取消(交易猫备货订单在哪里看)

  • 闲鱼包邮运费怎么算(闲鱼 包邮 运费)

    闲鱼包邮运费怎么算(闲鱼 包邮 运费)

  • 淘宝发票怎么下载(淘宝发票怎么下载pdf)

    淘宝发票怎么下载(淘宝发票怎么下载pdf)

  • 快手b类有什么影响(快手b类包括什么)

    快手b类有什么影响(快手b类包括什么)

  • ftp进行文件传输时的主要安全问题存在于(ftp 传输文件夹)

    ftp进行文件传输时的主要安全问题存在于(ftp 传输文件夹)

  • 路由器易展版是什么意思(路由器易展版是啥意思)

    路由器易展版是什么意思(路由器易展版是啥意思)

  • 喜马拉雅不能看文字吗(喜马拉雅不能看小说吗)

    喜马拉雅不能看文字吗(喜马拉雅不能看小说吗)

  • 小米9pro怎么一键剪辑短视频(小米9pro操作技巧)

    小米9pro怎么一键剪辑短视频(小米9pro操作技巧)

  • 苹果十一怎么截屏(苹果十一怎么截屏手机屏幕)

    苹果十一怎么截屏(苹果十一怎么截屏手机屏幕)

  • qq群名片怎么设置颜色(qq群名片怎么设置表情)

    qq群名片怎么设置颜色(qq群名片怎么设置表情)

  • 小爱触屏音箱什么时候上市(小爱触屏音箱什么芯片)

    小爱触屏音箱什么时候上市(小爱触屏音箱什么芯片)

  • iPhone X怎样清理内存(如何清理苹果x)

    iPhone X怎样清理内存(如何清理苹果x)

  • vivox27pro可以面部解锁吗(vivo x27支持面部识别吗)

    vivox27pro可以面部解锁吗(vivo x27支持面部识别吗)

  • 苹果手机位置不可用是什么意思(苹果手机位置不可用)

    苹果手机位置不可用是什么意思(苹果手机位置不可用)

  • 华为手机是安卓系统吗(华为手机是安卓还是鸿蒙)

    华为手机是安卓系统吗(华为手机是安卓还是鸿蒙)

  • qq忘记密码怎么找回手机号换了(qq忘记密码怎么找回原密码)

    qq忘记密码怎么找回手机号换了(qq忘记密码怎么找回原密码)

  • uniapp封装axios?大可不必那么麻烦。(uniapp封装组件,多了一层)

    uniapp封装axios?大可不必那么麻烦。(uniapp封装组件,多了一层)

  • 所得税税负率是125正常吗
  • 中国税务师协会税务师官网
  • 发票系统口令锁定
  • 收到增值税发票怎么认证
  • 实收资本变动额怎么算
  • 资产负债表本月期末余额怎么填
  • 误餐补助缴个税怎么申报
  • 简易计税费
  • 小企业准则适用于什么企业
  • 标准成本法核算方法
  • 金税盘地区编号淄博
  • 企业与政府土地合作开发模式
  • 公允价值确定方法最新
  • 银行小额贷款是怎么还款的
  • 有限合伙企业分红避税
  • 用于在建工程的贷款利息
  • 意外保险计入职工薪酬
  • 税种案例分析
  • 加计扣除的研发费用范围
  • 个人所得税加计扣除有哪些项目
  • 商品和服务税收编码怎么查
  • 企业所得税中准予扣除的损失
  • 工商注册需要提供什么
  • 现金流量表怎么做
  • 注册资本金认缴制
  • 银行有流水但是没有开票怎么做账
  • 先征后退的增值税
  • 工程在建期间土地税滞纳金
  • 隐藏分区怎么打开
  • 美容店销售收入怎么算
  • msgdlg.exe是什么意思
  • mac触控板使用技巧
  • 子公司可以接总公司的工程吗
  • 房屋装修固定家具是否计入房产税
  • 餐费发票怎么做账务处理
  • 增值税直接减征的开什么发票
  • 前端gui
  • 企业支付宝要交税吗 要交多少钱
  • yolov3数据集格式
  • django pypi
  • opencv开发项目
  • gpt-3的功能
  • 一般户需要做账报税吗
  • 财务公司可以开立一般账户吗
  • 什么发票可以抵扣企业所得税
  • 哪些合同必须签订书面合同
  • 固定资产处置营业外支出
  • 一般纳税企业增值税的核算应当使用
  • 国有资产无偿划转需要缴税吗
  • 固定资产登记在三栏明细账可以吗
  • 税前扣除原则和扣除金额
  • 医院哪些地方需要有明显的禁烟标识
  • 申请财产损失会计分录
  • 电子发票和增值税发票有什么区别
  • 免税收入啥意思
  • 社保退回的钱怎么做会计分录
  • 企业职工薪酬如何确定
  • 用友t3普及版价格
  • wind如何安装
  • 最基本的长度单位是什么
  • win10系统遇到错误
  • ubuntu系统安装教程
  • mac safari浏览器翻译功能
  • win7旗舰版显示不全屏
  • 浅析中国式现代化的理论价值与现实意义
  • android 生成图片
  • node.js实战
  • 置顶聊天的人怎么不见了
  • opencv for linux
  • win10文件类型选项
  • node.js mongodb
  • hadoop运行python程序
  • jquery控制display属性
  • string和stringbuffer创建后都可以修改
  • python函数参数的传递方法
  • 陕西省税务局电子税务局官网
  • 广东税务查询系统
  • 广东省纳税信用等级
  • 上报汇总之后怎么申报
  • 朝阳地税局官网
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设