此前,清华大学与旷视科技曾通过结构重参数化将7年老架构VGG“升级”为性能直达SOTA的RepVGG模型。

如今,这个结构重参数化系列研究又添“新成员”:

他们提出一个基于多层感知器式的RepMLP模型,将卷积融合进全连接层 (FC)进行图像识别。

该模型同时组合了全连接层的全局建模、位置感知特性与卷积层的局部结构提取能力。

结果在ImageNet数据集、人脸识别任务及语义分割三方面都实现了识别精度的提升,且在大幅增加参数的同时不会造成推理速度的显著降低(增加47%参数,速度只下降2.2%)。

用卷积强化全连接,使之具有局部性又不失全局性

为什么要用卷积来强化全连接?

因为卷积网络具有局部先验特性,识别效果很不错。

在一张图片中,一个像素点跟它周围的像素点的关系往往比远在天边的另一个像素点更密切,这称为局部性。人类在识别图片的时候潜意识地利用这一点,称为局部先验。

而比起卷积层,全连接层的图像识别由于参数增多往往导致推理速度较慢和过拟合,但它具有更好的全局建模、位置感知能力。

所以研究人员将两者结合,在训练阶段,研究人员在RepMLP内部构建卷积层,而在推理阶段,将这些卷积层合并到全连接层内

整个流程分为3步:

1、训练时,既有全连接层又有卷积,把两者的输出相加;
2、训练完成后,先把BN的参数“吸”到卷积核或全连接层中去,然后把每一个卷积转换成全连接层,把所有全连接层加到一起,等效去掉卷积。
3、保存并部署转换后的模型。

详细过程如下:

其中N、C、H、W分别代表batch size、输入通道数、高度和宽度;h 、 w 、 g 、p 、 O分别代表每一块分块(partition)的高度、宽度、组数、填充像素和输出通道。

首先将输入特征进行分块,分块会打破相同通道不同分块之间的相关性,因此全局感知(Global Perceptron)对每个分块添加相关性。

接着,分块感知(Partition Perceptron) 以分块特征作为输入,包含全连接层与BN层,进一步减少参数和计算量。

局部感知(Local Perceptron )将分块特征经由卷积核大小分别为1、3、5,、7的卷积层进行处理 ,将所有卷积分支的输出与分块感知的输出相加作为最终的输出 。

那如何将训练阶段的卷积转换为推理阶段的全连接层呢?

思路和RepVGG一样,利用了结构重参数化 (通过参数的等价转换实现结构的等价转换),将局部感知和分块感知的输出合并到全连接层进行推理,并去除卷积。

具体来说,

由于矩阵乘法的可加性(AX + BX = (A+B)X),一个稀疏且共享参数的全连接层(Toeplitz矩阵)加一个不稀疏不共享参数的FC(全自由度的矩阵),可以等价转换为一个全连接层(其参数是这两个矩阵之和),就可以在推理阶段将这些卷积等效地去掉。

另外,研究人员表示,之所以卷积和全连接层之间能建立联系,是因为卷积可以看成一个稀疏且存在重复参数的全连接层。

并“戏谑”道:

RepMLP这样做看起来像是让全连接层的“内部”含有卷积,所以也可以称为“内卷”。

实验结果

消融研究结果如下表,可以发现:

A为转换前的模型,计算量非常大,说明了结构重参数的重要性;

B为没有Local Perceptron的变体,精度下降8.5%,说明了局部先验的重要性;

C为没有Gloabl Perceptron的变体,精度下降1.5%,说明了全局建模的重要性;

D替换FC3为卷积,尽管其感受野更大,但仍造成精度下降3.5.%,说明全连接层比conv更强大,因为conv是降级的全连接层。

所以,用RepMLP替换Res50中的部分结构,将ResNets在ImageNet上的准确率提高了1.8%。

将ImageNet 预训练模型迁移到人脸识别和语义分割上,也都有性能提升,分别提升2.9%的准确率和2.3%的mIoU。

另外,在速度方面,RepMLP可以大幅增加参数的同时而对速度影响不大(参数增加47%,ImageNet精度提升0.31%,速度仅降低2.2%)。

论文地址:https://arxiv.org/abs/2105.01883
代码:https://github.com/DingXiaoH/RepMLP

— 完 —

清华旷视让全连接层“内卷”,卷出MLP性能新高度相关推荐

  1. “重参数宇宙”再添新成员:RepMLP,清华大学旷视科技提出将重参数卷积嵌入到全连接层

    编辑:Happy 首发:AIWalker paper: https://arxiv.org/abs/2105.01883 code: https://github.com/DingXiaoH/RepM ...

  2. Lesson 16.1016.1116.1216.13 卷积层的参数量计算,1x1卷积核分组卷积与深度可分离卷积全连接层 nn.Sequential全局平均池化,NiN网络复现

    二 架构对参数量/计算量的影响 在自建架构的时候,除了模型效果之外,我们还需要关注模型整体的计算效率.深度学习模型天生就需要大量数据进行训练,因此每次训练中的参数量和计算量就格外关键,因此在设计卷积网 ...

  3. 深度学习 卷积层与全连接层权重参数个数的计算

    1.卷积网络实例分析 构建卷积网络如下: from tensorflow.python.keras import datasets, models, layers class CNN(object): ...

  4. 神经网络-全连接层(1)

    写在前面:感谢@夏龙对本文的审阅并提出了宝贵的意见. 接下来聊一聊现在大热的神经网络.最近这几年深度学习发展十分迅速,感觉已经占据了整个机器学习的"半壁江山".各大会议也是被深度学 ...

  5. 【pytorch】pytorch自定义训练vgg16和测试数据集 微调resnet18全连接层

    自己定义模型 测试: correct = 0total = 0for data in test_loader:img,label = dataoutputs = net(Variable(img))_ ...

  6. 深度学习(18)神经网络与全连接层一: 数据加载

    深度学习(18)神经网络与全连接层一: 数据加载 1. 常用数据集 2. MNIST数据集 (1) MNIST样本 (2) MNIST加载案例 3. CIFAR10/100 (1) CIFAR10/1 ...

  7. 全连接层的作用_python构建计算图2——全连接层

    (好久不更~)前文中,参照tensorflow的方式实现了简单的自动求导.接下来要在自动求导的基底(模板)上搭建简单的bp神经网络. 计算图 前文曾多次提到计算图,关于什么是计算图,有很多种说法.既然 ...

  8. 解释一下全连接层CNN中全连接层是什么样的

    (名称:全连接.意思就是输出层的神经元和输入层的每个神经元都连接) 在卷积神经网络的最后,往往会出现一两层全连接层,全连接一般会把卷积输出的二维特征图转化成一维的一个向量,这是怎么来的呢?目的何在呢? ...

  9. CNN中全连接层是什么样的

    名称:全连接.意思就是输出层的神经元和输入层的每个神经元都连接. 例子: AlexNet  网络中第一个全连接层是这样的: layer {   name: "fc6"   type ...

最新文章

  1. java 按钮 事件_Java 添加按钮点击事件
  2. 数据库的简单操作命令
  3. JS学习之Node类型
  4. 安装spark集群,并成功运行
  5. photoshop cs3反应慢的原因
  6. 【转】VC6.0附带小工具软件一览
  7. VTK:投影点用法实战
  8. SCCM2012R2部署之四:配置客户端发现
  9. 计算机课程屏幕录制,电脑录屏怎么录?游戏课程会议都能录制的实用方法
  10. 嵌入式面试经验分享1——应届生
  11. php微信公众号报修系统,微信公众号如何实现在线报修系统?
  12. 【bzoj3034】Heaven Cow与God Bull
  13. linux-rootfs根文件系统构建
  14. 猿辅导python编程老师面试_猿辅导辅导老师面试过程➕感受
  15. Oracle任意字符串转换成拼音首字母简写
  16. 啊,CET6 2021年
  17. 鲲鹏系列服务器,鲲鹏系列云服务器
  18. 梦幻西游维护公告里面的可转服务器,7月19日定期维护公告 转服预定调整为30天...
  19. linux运维常用服务器软件整理和介绍
  20. 音乐播放器(3)--歌词显示

热门文章

  1. linux ssh登录失败
  2. 深入理解计算机系统 -资料整理 高清中文版_在所不辞的博客-CSDN博客_深入理解计算机系统第四版pdf
  3. 激活函数GELU()
  4. sklearn 统计多分类和单分类结果的混淆矩阵API 写法 confusion_matrix 左边为真实值 上边为预测值
  5. springboot集成neo4j
  6. Java对象XML序列化框架-Simple2.0
  7. 查看linux文件的权限:ls -l 文件名称
  8. 《预训练周刊》第39期: 深度模型、提示学习
  9. 《强化学习周刊》第13期:强化学习应用之金融
  10. 《番茄工作法图解》作者中国行