一、解决问题

  • 如何将特征融合与知识蒸馏结合起来,提高模型性能

二、创新点

  • 支持多子网络分支的在线互学习
  • 子网络可以是相同结构也可以是不同结构
  • 应用特征拼接、depthwise+pointwise,将特征融合和知识蒸馏结合起来

三、实验方法和理论

1.Motivation

DML (Deep Mutual Learning)

  • 算法思想:

​ 用两个子网络(可以是不同的网络结构)进行在线互学习,得到比单独训练性能更好的网络

  • 损失函数:

​ 传统监督损失函数:

​ 模仿性的损失函数:

​ 单个网络的损失函数:

ONE (On-the-FlyNative Ensemble)

  • 算法思想:

​ 通过在网络深层次构造多分支结构,每个分支作为学生网络,融合logit分布,生成更强的教师网络,进而通过学生/教师网络的共同在线学习,互相蒸馏,训练得性能优越的单分支或多分支融合模型。

  • logit融合 (Gate Module:FC、BN、ReLU、Softmax):

  • 损失函数:

DualNet

  • 算法思想:

​ 通过融合两个互补parallel networks生成的特征,使得融合后的性能比单独训练的性能更好

  • 损失函数:

  • 启发:结合DML、ONE和DualNet的思想,构造一个支持(相同或者不同的)多个子网络分支进行特征融合的网络结构,进而让融合分类器和分类器进行在线互学习,互蒸馏的方式,从而提高网络的性能。

    2.Network Architecture

  • Fusion Module

  • Fusion Module 将Net1 和Net2 的到的特征张量进行拼接,然后通过Depthwise conv 得到一个通道数为M的特征张量,经过 Pointwise conv 后生成一个通道数为N的特征张量,即为融合后的特征。
  • 子网络和融合网络同时训练,将子网络最后一层得到的特征,通过一个Fusion Module进行特征融合,得到融合分类器的概率分布。

3.训练过程

  • 软分布概率:

其中,

  • 集成logit概率分布计算:

  • 交叉熵损失函数:

  • KL散度损失函数:

​ 这里有两个KL散度损失函数,分别对应从 Ensemble Classifier 到 Fused Classifier 的知识蒸馏和从 Fused Classifer 到 Sub-network Classifier 的知识蒸馏的损失函数。

  • 总的损失函数:

四、实验结果

数据集

  • CIFAR-10

    • 50k 训练集,10k 测试集
    • 10种图像类别,每类 6k 张图片
  • CIFAR-100
    • 50k 训练集,10k 测试集
    • 100种图像类别,每类600张图片
  • ImageNet LSVRC2015
    • 1.2M 训练集,50k 验证集
    • 1000种图像类别

特征融合对比(FFL vs DualNet):

  • FFL融合后的性能略比DualNet好
  • FFL得到的子网络性能明显比DualNet好

消融实验

  • 缺少任何一个模块都会导致融合分类器和子分类的效果下降,尤其当缺少FKD时,子网络性能下降很多。

在线蒸馏对比(FFL vs ONE):

由于FFL比ONE多了一个Fusion Module为了参数大小公平起见,ONE在Gate模块前多叠加几个残差模块

  • vanilla 表示单独训练的结果,ONE表示两个子网络的平均结果,ONE-E表示融合后的结果,ONE-E+表示参数与FFL大小一样融合后的结果,FFL-S表示子网络的平均结果,FFL表示融合后的结果
  • 即便增加ONE的残差模块,从ONE-E和ONE-E+的对比来看,性能并没有多大提升,甚至有所下降(例如CIFAR-100)
  • 从表格发现,FFL比ONE的效果略有提升

分支拓展:

  • 随着分支数增多,性能也略有提升。

ImageNet:

  • ONE 和 FFL性能相似,FFL效果略好一些。
  • 这说明了本文方法一样适用于大规模的数据集

互学习性能对比(FFL vs DML):

  • 虽然参数量FFL比DML多4%,但性能优于DML,也说明了FFL适用于不同子网络结构。

定性分析

  • 1-2列,分类都是正确,但FFL关注的特征区域比单独训练的ResNet-34好,且置信度更高
  • 3-6列,FFL分类正确,而单独训练的ResNet-34分类错误
  • 7-9列,两者分类都是错误的,但是FFL关注的特征区域属于正确类别的关注区域。
  • 同时我们发现Subnet的特征热区一直在拟合Fusion的结果,这也验证了互蒸馏的有效性,即的确学习到软概率分布中含有的丰富的错误类别的相关概率信息。

五、 总结

  • 结合预训练模型,该方法可以适用于图像检测(RPN特征),图像分割(dense feature),风格迁移等任务。

  • 同时兼顾子网络和融合网络的性能,根据实际需要,选择子网络或者融合网络

  • Fusion Module 可以得到更为丰富的图像特征,从而提高整体性能。

  • 子网络的选择限制低,可以选择多个相同或者不同的网络构成

  • 能够将多个方法的优点结合起来得到更好的方法,实验充分

  • 不足:参数量略多一些,以及子网络结构选取的不确定性

Feature Fusion for Online Mutual Knowledge Distillation (CVPR 2019)的更多相关文章

  1. Semantic Parsing(语义分析) Knowledge base(知识图谱) 对用户的问题进行语义理解 信息检索方法

    简单说一下所谓Knowledge base(知识图谱)有两条路走,一条是对用户的问题进行语义理解,一般用Semantic Parsing(语义分析),语义分析有很多种,比如有用CCG.DCS,也有用机 ...

  2. 论文阅读笔记二十七:Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks(CVPR 2016)

    论文源址:https://arxiv.org/abs/1506.01497 tensorflow代码:https://github.com/endernewton/tf-faster-rcnn 室友对 ...

  3. 【论文解读】行人检测:What Can Help Pedestrian Detection?(CVPR'17)

    前言 本篇文章出自CVPR2017,四名作者为Tsinghua University,Peking University, 外加两名来自Megvii(旷视科技)的大佬. 文章中对能够帮助行人检测的ex ...

  4. HDU100题简要题解(2010~2019)

    HDU2010 水仙花数 题目链接 Problem Description 春天是鲜花的季节,水仙花就是其中最迷人的代表,数学上有个水仙花数,他是这样定义的: "水仙花数"是指一个 ...

  5. 洛谷P5322 (BJOI 2019) DP

    ### 题目链接 ### 分析: 1.用 vector<int> v[i] 来存 i 城堡, s 个对手所安排的士兵数量. 2.设 dp[i][j] 表示 i 城堡前,在当前最大派兵量为  ...

  6. Residual Attention Network for Image Classification(CVPR 2017)详解

    一.Residual Attention Network 简介 这是CVPR2017的一篇paper,是商汤.清华.香港中文和北邮合作的文章.它在图像分类问题上,首次成功将极深卷积神经网络与人类视觉注 ...

  7. CVPR目标检测与实例分割算法解析:FCOS(2019),Mask R-CNN(2019),PolarMask(2020)

    CVPR目标检测与实例分割算法解析:FCOS(2019),Mask R-CNN(2019),PolarMask(2020)1. 目标检测:FCOS(CVPR 2019)目标检测算法FCOS(FCOS: ...

  8. Coursera-AndrewNg(吴恩达)机器学习笔记——第三周编程作业(逻辑回归)

    一. 逻辑回归 1.背景:使用逻辑回归预测学生是否会被大学录取. 2.首先对数据进行可视化,代码如下: pos = find(y==); %找到通过学生的序号向量 neg = find(y==); % ...

  9. 【论文小综】基于外部知识的VQA(视觉问答)

    ​ 我们生活在一个多模态的世界中.视觉的捕捉与理解,知识的学习与感知,语言的交流与表达,诸多方面的信息促进着我们对于世界的认知.作为多模态领域的一个典型场景,VQA旨在结合视觉的信息来回答所提出的问题 ...

随机推荐

  1. vuex状态管理安装方法

    1.可以启动vue ui 手动添加vuex. 或使用 cnpm install vuex 2.使用,import vuex from “vuex” vue.use(vuex) 3.安装插件, 首先键入 ...

  2. MySQL 字段值为NULL,PHP用json转换,传给js,显示null

    这个问题出在php的json_encode环节,这个函数返回的json数据中会把空值写作null. 想通过在js端这样把null转为空字符串是不可以的: JSON.parse(JSON.stringi ...

  3. deepin15.7挂载/home到单独的分区:

    1.首先打开Gpart分区编辑器,找一个空闲的分区,调整好分区大小,格式化成ext4格式. 具体步骤为首先unmount所用到的盘,然后右击该盘选择'format to ext4',最后点击apply ...

  4. idea 2019 1 spring boot 启动报错 An incompatible version [1.2.12] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]

    1.构建一个简单springboot工程,日志打印报错内容如下: 15:38:28.673 [main] DEBUG org.springframework.boot.devtools.setting ...

  5. Python基础-语法知识

    ——编程语言的发展史 机器语言 优点:执行速度够快 缺点:开发效率非常低 汇编语言 优点:执行效率相较于机器语言略低 缺点:开发效率相较于机器语言略高 高级语言 C.C++.C#.java.PHP.p ...

  6. 使用Bind提供域名解析服务(正向解析)

    小知识: 一般来讲域名比IP地址更加的有含义.也更容易记住,所以通常用户更习惯输入域名来访问网络中的资源,但是计算机主机在互联网中只能通过IP识别对方主机,那么就需要DNS域名解析服务了. DNS域名 ...

  7. JavaSE常用API

    1.Math.round(11.5)等于多少?Math.round(-11.5)又等于多少? Math.round(11.5)的返回值是12,Math.round(-11.5)的返回值是-11.四舍五 ...

  8. [考试反思]1105csp-s模拟测试101: 临别

    先不改题,这次主要不在T3上. 这次有必要粘文件得分了. 临考前总解锁新锅我也不知道这是什么个事啊... T1宏定义写挂.因为原来在OJ上没事所以一直没注意.在Lemon评测下直接全部RE. GG在主 ...

  9. 「刷题」Triple

    正解是普通型母函数+FFT. 才学了多项式,做了一道比较好的题了. 首先有三个斧子被偷了. 我们考虑构造一种普通型母函数. 就是说一种多项式吧,我的理解. 系数是方案,下标,也就是所谓的元指数代表的是 ...

  10. 使用Typescript重构axios(六)——实现基础功能:获取响应数据

    0. 系列文章 1.使用Typescript重构axios(一)--写在最前面 2.使用Typescript重构axios(二)--项目起手,跑通流程 3.使用Typescript重构axios(三) ...