Feature Fusion for Online Mutual KD

paper:Feature Fusion for Online Mutual Knowledge Distillation

official implementation:https://github.com/Jangho-Kim/FFL-pytorch

本文的创新点 

本文提出了一个名为特征融合学习(Feature Fusion Learning, FFL)的框架,该框架通过一个组合并行网络特征图并生成更有意义特征图的融合模块(fusion module)高效的训练一个强大的分类器。具体来说,首先训练多个并行网络作为子网络,然后通过融合模块组合来自每个子网络的特征图得到一个更有意义的特征图,这个融合特征图送入融合分类器fused classifier中进行整体的分类。与现有的特征融合方法不同,该框架集成各个子网络的分类器ensemble classifier并将知识蒸馏到融合分类器中,同时融合分类器也将它的知识蒸馏回各个子网络中,以一种在线蒸馏online-knowledge distillation的方式进行互学习mutual learning。这种互学习的方式不仅提高了融合分类器的性能同时提升了各个子网络的性能。此外和其它一些类似方法相比,本文的方法中每个子网络的架构可以不同。

方法介绍

Fusion Module

和DualNet不同,本文的方法在融合特征时不是简单的求和或求均值,而是先concatenate不同子网络的特征,然后通过融合模块进行卷积操作。为了减少参数,使用了深度可分离卷积。我们使用最后一层的特征进行融合因为它特定于该任务并且具有足够的表示能力。假定子网络1,2的最后一层特征的通道分别为 \(C_{1},C_{2}\),拼接后特征图的通道数为 \(M=C_{1}+C_{2}\),融合模块的输出通道 \(N\) 可以根据需要设定。如图2所示,首先执行3x3的深度卷积,然后使用点卷积来创建特征映射切片的线性组合,以便更好的融合它们。

在DualNet中,存在一个问题,即子网络的输出通道数必须相等,因为特征图需要进行element-wise add。在本方法中,由于子网络的特征时concatenate的,因此FFL可以使用不同输出通道的网络作为子网络。如果子网络最后特征图的分辨率不同,那么使用一个卷积就可以对齐分辨率,如FitNets中的regressor。

Feature Fusion Learning

在子网络的结构方面,ONE(On-the-fly Native Ensemble)和DualNet都不够灵活因为它们的子网络的结构必须相同。为了解决这个问题,本文基于子网络的结构设计了两种不同的FFL 

  • 如果子网络的结构相同,则子网络的low-level层共享,high-level层分成不同的分支。
  • 如果子网络的结构不同,则子网络分别独立训练因为无法共享层。

本文处理的多类别分类任务,假设有 \(m\) 个类别,第 \(k\) 个网络的logit定义为 \(\mathbf{z}_{k}=\left \{z^1_{k},z^2_{k},...,z^{m}_{k} \right \} \)。在训练过程中,我们使用softened probability进行模型泛化。给定 \(\mathbf{z}_{k}\),软化概率定义为

当 \(T=1\) 时,就是原始的softmax。给定one-hot标签 \(\mathbf{y}=\left\{y^{1},y^{2},...,y^{m}\right\}\),第 \(k\) 个子网络的交叉熵损失为

完整的过程如图1所示,其中子网络的结构不同。为了充分利用给定的知识,我们使用了一个强大的集成分类器。子网络通过集成logits创建一个集成分类器用来训练融合模块。假设有 \(n\) 个子网络,则logits的集成如下

为了训练融合模块,集成分类器将它的知识蒸馏给融合分类器,称为集成知识蒸馏(ensemble knowledge distillation, EKD)。EKD损失定义为集成分类器软化分布和融合分类软化分布之间的KL散度。如果融合分类器的logit定义为 \(\mathbf{z}_{f}\),则EKD损失如下

和其他方法相比,EKD损失可以帮助训练一个融合模块来生成更有意义的特征图。不同子网络最后一层特征图拼接后进入融合模块。为了训练每个子网络,融合模块中的融合分类器将它的知识蒸馏回每个子网络,称为融合知识蒸馏(fusion knowledge distillation, FKD)。将融合分类器的软化分布蒸馏回每个子网络的FKD损失如下

 

除了蒸馏损失,每个子网络和融合分类器还通过交叉熵损失学习ground truth,完整损失如下

 

在FFL中,每个子网络和融合分类器通过交叉熵损失学习ground truth。同时,集成分类器通过 \(\mathcal{L}^{e}_{kl}\) 将它的知识蒸馏到融合分类器中,反过来,融合分类器也将它的知识蒸馏回每个子网络。通过这种互蒸馏(mutual knowledge distillation, MKD),融合模块生成对分类更有意义的特征。由于软分布的梯度缩放了 \(1/T^{2}\),我们乘上 \(T^{2}\)。FFL中的子网络和融合模块是同时训练的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/317568.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

流量预测中文文献阅读(郭郭专用)

目录 基于流量预测的超密集网络资源分配策略研究_2023_高雪亮_内蒙古大学(1)内容总结(2)流量预测部分1、数据集2、结果对其中的一个网格的CDR进行预测RMSE和R2近邻数据和周期数据对RMSE的影响 (3)基于流量预…

点餐新体验:老板自研扫码点餐小程序的成果

为了提高餐厅的效率和顾客的用餐体验,餐饮店老板们纷纷开始探索新的技术手段。其中,扫码点餐小程序就是一种非常受欢迎的解决方案。 扫码点餐小程序是一种基于微信小程序开发的餐饮点餐系统,它通过扫描桌码或菜品二维码,实现快速点…

ElasticSearch概述+SpringBoot 集成 ES

ES概述 开源的、高扩展的、分布式全文检索引擎【站内搜索】 解决问题 1.搜索词是一个整体时,不能拆分(mysql整体连续) 2.效率会低,不会用到索引(mysql索引失效) 解决方式 进行数据的存储(只存储…

【面试宝典】图解ARP协议、TCP协议、UDP协议

一、ARP协议 二、TCP协议 三、UDP协议 四、TCP和UDP的区别

基于Springboot+uniapp的美容美发预约、会员管理、充值小程序(有文档、Java毕业设计)

大家好,我是DeBug,很高兴你能来阅读!作为一名热爱编程的程序员,我希望通过这些教学笔记与大家分享我的编程经验和知识。在这里,我将会结合实际项目经验,分享编程技巧、最佳实践以及解决问题的方法。无论你是…

【LabVIEW FPGA入门】LabVIEW FPGA 实现SPI通信协议

该实现由两个组件组成:在 LabVIEW FPGA 中实现的 SPI 协议以及用于从主机 PC 或实时控制器与 FPGA 进行通信的 LabVIEW 主机接口。该架构允许从单个主机程序控制多个 SPI 端口,同时仍然允许定制 FPGA VI 以进行其他数据采集和处理。该实现不使用任何DMA&…

[DL]深度学习_Feature Pyramid Network

FPN结构详解 目录 一、概念介绍 二、结构详解 1、对比试验 2、特征图融合 3、结构详解 4、不同尺度预测 5、Proposal映射到预测特征层 一、概念介绍 Feature Pyramid Network (FPN)是一种用于目标检测和语义分割的神经网络架构。它的目标是解决在处理不同尺度的图像时…

C语言天花板——指针(进阶3)

篇接上文(http://t.csdnimg.cn/Tl42h),今天我们来讲一些有趣的关于指针的问题🚢🚢🚢 首先我们来看个代码: int main() {//一维数组int a[] { 1,2,3,4 };//4个元素,每个元素使int类型(4个字节)printf(&qu…

03.neuvector之组的划分逻辑

neuvector之组的划分逻辑 原文链接,欢迎大家关注我的github账号 一、组的定义 NeuVector 会自动从正在运行的应用程序中创建组。这些组以前缀‘nv‘开头。您也可以使用 CRD 或 REST API 手动添加它们,并且可以在任何模式下创建、发现、监视或保护。网络和响应规则需…

【嵌入式移植】3、编译U-Boot

编译U-Boot 0 U-Boot及本文所选硬件1 获取U-Boot源码2 获取工具链3 BL314 编译4.1 yylloc4.2 u_boot_dtsi 5 烧写6 上电验证 0 U-Boot及本文所选硬件 Das U-Boot,全称 Universal Boot Loader,是遵循GPL条款的开放源码项目。U-Boot的作用是系统引导。U-B…

Android 12.0 系统开启和关闭黑白模式主题功能

1.概述 在12.0的rom系统开发定制化中,在系统SystemUI的下拉状态栏中,产品开发功能需求要求添加黑白模式功能开关的功能,就是打开黑白模式,系统颜色就会变成黑白颜色, 关闭黑白模式开关系统就会变成彩色模式,所以就需要了解下系统是怎么设置黑白模式和彩色模式的,然后添…

好大夫问诊数据爬虫记录

好大夫问诊数据爬虫入库字段记录 获取医生的病程列表 uid Column(Integer, primary_keyTrue, autoincrementTrue) gender Column(String(10)) # 性别 age Column(Integer) # 年龄 # 总交流次数 total_communication_times Column(Integer) # 医生回复次数 doctor_reply_t…

重学Java 4 进制转换和位运算

天赋不好好使用的话,可是会被收回的哦 ——24.1.13 一、进制转换 1.常用的进制 2.十进制和二进制之间的转换 1.十进制转二进制 辗转相除法——循环除以2,取余数,除到商为0为止,除完后,由下往上,得出换算后…

黏菌优化算法MATLAB实战[免费]

一、算法原理 黏菌算法(Slime mould algorithm,SMA)是模拟黏菌捕食行为的一种仿生算法。黏菌根据气味识别到食物后,通过细胞质的流动形成多个叶脉,同时向多个食物进行移动,当叶脉接近食物源时,黏菌的生物振…

PADS 改变图纸和图页边界大小

PADS 改变图纸和图页边界大小 有时候画一画原理图发现画布不够用了,可改变图纸大小,对应的改变图页边界 若图页边界怎么选择都改变不了,可将途中图页边界删除,重新加载 选择对应的图页边距就好啦 分类: PADS

竞赛保研 基于计算机视觉的身份证识别系统

0 前言 🔥 优质竞赛项目系列,今天要分享的是 基于机器视觉的身份证识别系统 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🧿 更多资料, 项目分享: https://gitee.com/dancheng-sen…

软件测试|pycharm关联GitHub的详细步骤

简介 GitHub 是全球最大的开源代码托管平台之一,而 PyCharm 是一款强大的 Python 集成开发环境。将两者结合使用,可以提高团队协作和代码管理的效率。本文将详细介绍如何在 PyCharm 中管理 GitHub 账号,包括如何设置 GitHub 账号、创建新仓库…

伴鱼实时数仓建设案例

伴鱼实时数仓建设案例 文章目录 伴鱼实时数仓建设案例伴鱼实时作业应用场景伴鱼实时数仓的建设体系DWD 层复杂场景数据处理方案1. 数据的去重2. join场景两条实时数据流相关联对于关联历史数据 3. 从数据形态观查join DWS 数据层数据处理方案未来与展望 随着伴鱼业务的快速发展…

JUC之CompletableFuture

Future接口理论 Future接口定义了异步任务执行的一些方法&#xff0c;包括异步任务执行结果&#xff0c;异步任务执行是否中断&#xff0c;异步任务是否完毕等。 Future接口常用实现类FutureTask异步任务 FutureTask<String> futureTask new FutureTask<String>…

企业网盘:实现数据跨境传输,助力企业出海的必备工具

今年是“一带一路”十周年。在这十年间&#xff0c;中国和“一带一路”共建国家携手并行&#xff0c;贸易持续增长发展。在如今经济全球化的大方向下&#xff0c;跨国经济合作将会是各国共识。 目前&#xff0c;中外合作企业、跨境企业已成为国际贸易发展趋势。不过&#x…
最新文章