当前位置: 首页 > news >正文

论文阅读 Multi-view Classification Using Hybrid Fusion and Mutual Distillation

Multi-view Classification Using Hybrid Fusion and Mutual Distillation


Intro

多视角问题可以分为两类:

  1. Structured。固定视角,或预先定义的视角的问题。
  2. unstructured。

本文的三大contributions:

  1. 引入了混合的多视角融合策略。
  2. 使用了互蒸馏策略。具体而言,对多视角融合预测,与单视角预测均值,采用distillation loss。
  3. 证实了在多种多视角任务当中的有效性。

Related Work

Fusion策略分类。

在这里插入图片描述

  1. Early Fusion:在low-level对feature进行融合,之后的训练过程与单视角情况一致。
    缺点:low-level feature没经过网络的深层次处理,过早的融合特征可能会将一些task-irrelevant features融入进去。
  2. Late Fusion:先利用某些网络(如CNN)独立从input中学习feature,然后对特征进行融合。
    比如:简单的串接feature,然后再对融合后的特征做池化。
  3. Score Fusion:极端的late fusion。每个单视角分别预测,然后只融合最后的预测vector(预测分数)。
  • 本文采用 Hybrid 策略:结合了score fusion和score fusion。
  • 本文引入了多视角预测与score-fused的单视角预测(具体而言是,求所有单个视角预测分数的均值)的互蒸馏。

Method

整体Pipeline如下:
在这里插入图片描述

算法流程:

  1. I 1 I_1 I1为第一个视角的输入样本。每个视角的输入分别送入CNN中,得到feature:

    • C ( I ) ∈ R h × w × c \mathcal{C}(I) \in \mathbb{R}^{h \times w \times c} C(I)Rh×w×c:CNN输出特征。维度分别为高,宽,通道数。
  2. C ( I ) \mathcal{C}(I) C(I)转为Token形式,以便之后送入Transformer:首先将空间维度 ( h , w ) (h,w) (h,w)拉成一维 S = h w S = hw S=hw;然后将其encode成token形式:
    E ( I ) = C ( I ) E + E p o s \begin{equation} \mathcal{E}\left(\boldsymbol{I}\right)=\mathcal{C}\left(\boldsymbol{I}\right)\mathbf{E}+\mathbf{E}_{\mathbf{pos}} \end{equation} E(I)=C(I)E+Epos

    • E ∈ R c × d \mathbf{E} \in \mathbb{R}^{c \times d} ERc×d:投影矩阵。
    • E pos \mathbf{E}_\textbf{pos} Epos:可学习的positional encoding。
    • 最后将Eq1结果串接一个 x class ∈ R 1 × d x_\textbf{class} \in \mathbb{R}^{1 \times d} xclassR1×d
      E ( I ) ∈ R S × d \mathcal{E}\left(\boldsymbol{I}\right) \in \mathbb{R}^{S \times d} E(I)RS×d,相当于长度为S的序列,每个token维度为d。
  3. E ( I ) \mathcal{E}\left(\boldsymbol{I}\right) E(I)送入Transformer中。其中单个视角分别送入各自的Transformer,输出单一视角预测;多个视角特征融合,送入一个Transformer,输出多视角预测。N个视角的输入图像,对应N+1个Transformer。

    • 单视角预测:
      z = T ( [ x c l a s s ; E ( I ) ] ) \begin{equation} z=\mathcal{T}\left(\left[x_{\mathbf{class}};\mathcal{E}\left(\boldsymbol{I}\right)\right]\right) \end{equation} z=T([xclass;E(I)])
      T \mathcal{T} T表示Transformer

    • 多视角预测:
      z ′ = T ( [ x c l a s s ; E ′ ( I 1 ) ; E ′ ( I 2 ) ; . . . ; E ′ ( I N ) ] ) \begin{equation} \boldsymbol{{z}^{\prime}}=\mathcal{T}\left(\left[\boldsymbol{x}_{\mathbf{class}};\mathcal{E}^{\prime}\left(\boldsymbol{I}_{1}\right);\mathcal{E}^{\prime}\left(\boldsymbol{I}_{2}\right);...;\mathcal{E}^{\prime}\left(\boldsymbol{I}_{N}\right)\right]\right) \end{equation} z=T([xclass;E(I1);E(I2);...;E(IN)])
      其中 z , z ′ ∈ R 1 × k \boldsymbol{z}, \boldsymbol{z}^\prime \in \mathbb{R}^{1 \times k} z,zR1×k为prediction vector。 k k k为分类个数。

  4. 使用联合损失函数:
    L = L m + L s + λ L m d \begin{equation} \mathcal{L}=\mathcal{L}_m+\mathcal{L}_s+\lambda\mathcal{L}_{md} \end{equation} L=Lm+Ls+λLmd
    分为三大部分:

    1. L m \mathcal{L}_m Lm:多视角预测损失。为多视角融合特征的预测结果,与ground-truth label的损失。
    2. L s \mathcal{L}_s Ls:单视角平均预测损失:所有单视角预测损失的平均值(score-fused)。
    3. L m d \mathcal{L}_{md} Lmd:互蒸馏损失。

    L m d ( { z 1 , . . . , z N } , z ′ ; τ ) = 1 2 τ 2 ( L k d ( z ˉ ^ , z ′ ; τ ) + L k d ( z ^ ′ , z ˉ ; τ ) ) \begin{align} & \mathcal{L}_{md}\left(\{\boldsymbol{z}_1,...,\boldsymbol{z}_N\},\boldsymbol{z}^{\prime};\tau\right) \notag \\ = & \frac{1}{2}\tau^2 \left(\mathcal{L}_{kd}\left(\hat{\bar{\boldsymbol{z}}},\boldsymbol{z^{\prime}};\tau\right)+\mathcal{L}_{kd}\left(\hat{\boldsymbol{z}}^{\prime},\bar{\boldsymbol{z}};\tau\right)\right) \end{align} =Lmd({z1,...,zN},z;τ)21τ2(Lkd(zˉ^,z;τ)+Lkd(z^,zˉ;τ))

    • $\bold{\hat{}} \quad $:表示不进行反向传播的tensor(gradient-detached copy)。
    • z ˉ = 1 N ∑ i = 1 N z i \bar{\boldsymbol{z}}=\frac{1}{N}\sum_{i=1}^N\boldsymbol{z}_i zˉ=N1i=1Nzi。N表示N个视角。

  • z ˉ = 1 N ∑ i = 1 N z i \bar{\boldsymbol{z}}=\frac{1}{N}\sum_{i=1}^N\boldsymbol{z}_i zˉ=N1i=1Nzi。N表示N个视角。

相关文章:

论文阅读 Multi-view Classification Using Hybrid Fusion and Mutual Distillation

Multi-view Classification Using Hybrid Fusion and Mutual Distillation Intro 多视角问题可以分为两类: Structured。固定视角,或预先定义的视角的问题。unstructured。 本文的三大contributions: 引入了混合的多视角融合策略。使用了…...

AIGC浪潮下,图文内容社区数据指标体系如何构建?

文章目录 01 案例:以图文内容社区为例实践数据指标体构建02 4个步骤实现数据指标体系构建1. 明确业务目标,梳理北极星指标2. 梳理业务流程,明确过程指标3. 指标下钻分级,构建多层级数据指标体系4. 添加分析维度,构建完…...

”彩色的验证码,使用pytesseract识别出来的验证码内容一直是空“的解决办法

问题:彩色的验证码,使用pytesseract识别出来的验证码内容一直是空字符串 原因:pytesseract只识别黑色部分的内容 解决办法:先把彩色图片精确转换成黑白图片。再将黑白图片进行反相,将验证码部分的内容变成黑色&#…...

前端Vue2项目使用md编辑器

项目中有一个需求,要在前端给用户展示内容,内容有 AI 生成的,返回来的是 md 格式,所以需要给用户展示 md 格式,并且管理端也可以编辑这个 md 格式的文档。 使用组件库 v-md-editor。 https://code-farmer-i.github.i…...

OpenVela 架构剖析:从内核到应用

目录 一、总体架构概述 二、 内核层 2.1. OpenVela架构的内核基础 2.2. 内核层的主要职责 2.3. OpenVela对NuttX的扩展与优化 三、系统服务层 2.1. 进程管理 2.2. 内存管理 2.3. 文件系统 2.4. 网络通信 四、框架层 4.1. 模块化设计 4.2. API接口 4.3. 组件和服务…...

vue视频流播放,支持多种视频格式,如rmvb、mkv

先将视频转码为ts ffmpeg -i C:\test\3.rmvb -codec: copy -start_number 0 -hls_time 10 -hls_list_size 0 -f hls C:\test\a\output.m3u8 后端配置接口 import org.springframework.core.io.Resource; import org.springframework.core.io.UrlResource; import org.spring…...

记一个Timestamp时区问题的坑

resultSet.getTimestamp(“kpi_collect_time”)查出来的Timestamp居然是带时区的, 如果该Timestamp不是UTC时区的,Timestamp.toInstant().atZone(ZoneId.of(“UTC”))会把Timestamp转成UTC时区 使用Timestamp.toLocalDateTime()可以直接把时区信息抹除 …...

新年好(Dijkstra+dfs/全排列)

1135. 新年好 - AcWing题库 思路: 1.先预处理出1,a,b,c,d,e到其他点的单源最短路,也就是进行6次Dijkstra 2.计算以1为起点的这6个数的全排列,哪种排列方式所得距离最小,也可以使用dfs 1.Dijkstradfs #define int long longusing …...

如何“看到” Spring 容器?

Spring 容器是一个运行时的抽象工具,用来管理 Bean 的生命周期和依赖。虽然它本身不可直接观察,但可以通过以下方式间接“看到”容器的内容或行为。 2.1 容器是如何实例化的? Spring 容器的实例化是通过 ApplicationContext 或 BeanFactory …...

怎么使用CRM软件?操作方法和技巧有哪些?

什么是CRM? 嘿,大家好!你知道吗,在当今这个数字化时代里,我们每天都在与各种各样的客户打交道。无论是大公司还是小型企业,都希望能够更好地管理这些关系并提高业务效率。这时候就轮到我们的“老朋友”——…...

Spingboot整合Netty,简单示例

Netty介绍在文章末尾 Netty介绍 项目背景 传统socket通信&#xff0c;有需要自身管理整个状态&#xff0c;业务繁杂等问题。 pom.xml <dependency><groupId>io.netty</groupId><artifactId>netty-all</artifactId><version>4.1.117.F…...

grafana新增email告警

选择一个面板 比如cpu 新增一个临界点表达式 input选A 就是A的值达到某个临界点 触发告警 我这边IS ABOVE0.15就是cpu大于0.15%就触发报警&#xff0c;这个值怎么填看指标的值显示 这里要设置一下报警条件 这边随便配置下 配置标签和通知&#xff0c;选择你的邮件 看下告警…...

Github 2025-01-20 开源项目周报 Top15

根据Github Trendings的统计,本周(2025-01-20统计)共有15个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目10Rust项目2TypeScript项目1C++项目1Jupyter Notebook项目1Go项目1Tabby: 自托管的AI编码助手 创建周期:310 天开发语言:Rust协议类…...

【Rabbitmq】Rabbitmq高级特性-发送者可靠性

Rabbitmq发送者可靠性 发送者重连发送者确认1.开启确认机制2.ReturnCallback3.ConfirmCallback MQ的可靠性数据持久化交换机持久化队列持久化消息持久化 Lazy Queue 总结其他文章 Rabbitmq提供了两种发送来保证发送者的可靠性&#xff0c;第一种叫发送者重连&#xff0c;第二种…...

K8S中Service详解(一)

Service介绍 在Kubernetes中&#xff0c;Service资源解决了Pod IP地址不固定的问题&#xff0c;提供了一种更稳定和可靠的服务访问方式。以下是Service的一些关键特性和工作原理&#xff1a; Service的稳定性&#xff1a;由于Pod可能会因为故障、重启或扩容而获得新的IP地址&a…...

Effective C++读书笔记——item23(用非成员,非友元函数取代成员函数)

一、主要观点&#xff1a; 在某些情况下&#xff0c;使用 non-member、non-friend 函数来替换 member 函数可以增强封装性和可扩展性&#xff0c;提供更好的软件设计。 二、详细解释&#xff1a; 封装性&#xff1a; 类成员函数的封装性考量&#xff1a;成员函数可以访问类的…...

云原生前端开发:打造现代化高性能的用户体验

引言&#xff1a;前端开发的新风向 在过去的几年中&#xff0c;前端开发领域经历了快速的演变&#xff0c;从早期的静态网页到如今复杂的单页应用&#xff08;SPA&#xff09;&#xff0c;再到微前端架构和渐进式Web应用&#xff08;PWA&#xff09;&#xff0c;前端技术一直处…...

循环队列(C语言版)

循环队列(C语言版&#xff09; 1.简单介绍循环队列2.使用何种结构来实现3.基本结构4.初始化5.判空判满6.向循环队列插入一个元素7.从循环队列中删除一个元素8.获取队头队尾元素9.释放空间10.完整代码 &#x1f31f;&#x1f31f;hello&#xff0c;各位读者大大们你们好呀&#…...

考研408笔记之数据结构(五)——图

数据结构&#xff08;五&#xff09;——图 1. 图的基本概念 1.1 图的定义 1.2 有向图和无向图 在有向图中&#xff0c;使用圆括号表示一条边&#xff0c;圆括号里元素位置互换没有影响。 在无向图中&#xff0c;使用尖括号表示一条边&#xff0c;尖括号里元素位置互换则表示…...

没有公网IP实现seafile本地IP访问和虚拟局域网IP同时访问和上传文件

前言 Ubuntu 24.04 LTSDocker 安装 seafileOpenWrtTailscale Ubuntu 24.04 LTS 通过 docker desktop 安装 seafile 搭建个人网盘中&#xff0c;已经实现了本地局域网放问Ubuntu IP来访问Seafile&#xff0c;以及通过 Ubuntu 的 Tailscale IP 访问Seafile。但是&#xff0c;文…...

KubeSphere 容器平台高可用:环境搭建与可视化操作指南

Linux_k8s篇 欢迎来到Linux的世界&#xff0c;看笔记好好学多敲多打&#xff0c;每个人都是大神&#xff01; 题目&#xff1a;KubeSphere 容器平台高可用&#xff1a;环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...

docker详细操作--未完待续

docker介绍 docker官网: Docker&#xff1a;加速容器应用程序开发 harbor官网&#xff1a;Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台&#xff0c;用于将应用程序及其依赖项&#xff08;如库、运行时环…...

【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器

一.自适应梯度算法Adagrad概述 Adagrad&#xff08;Adaptive Gradient Algorithm&#xff09;是一种自适应学习率的优化算法&#xff0c;由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率&#xff0c;适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...

Day131 | 灵神 | 回溯算法 | 子集型 子集

Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 笔者写过很多次这道题了&#xff0c;不想写题解了&#xff0c;大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...

(二)TensorRT-LLM | 模型导出(v0.20.0rc3)

0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述&#xff0c;后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作&#xff0c;其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...

Xen Server服务器释放磁盘空间

disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...

基于Java+MySQL实现(GUI)客户管理系统

客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息&#xff0c;对客户进行统一管理&#xff0c;可以把所有客户信息录入系统&#xff0c;进行维护和统计功能。可通过文件的方式保存相关录入数据&#xff0c;对…...

【电力电子】基于STM32F103C8T6单片机双极性SPWM逆变(硬件篇)

本项目是基于 STM32F103C8T6 微控制器的 SPWM(正弦脉宽调制)电源模块,能够生成可调频率和幅值的正弦波交流电源输出。该项目适用于逆变器、UPS电源、变频器等应用场景。 供电电源 输入电压采集 上图为本设计的电源电路,图中 D1 为二极管, 其目的是防止正负极电源反接, …...

从“安全密码”到测试体系:Gitee Test 赋能关键领域软件质量保障

关键领域软件测试的"安全密码"&#xff1a;Gitee Test如何破解行业痛点 在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的"神经中枢"。从国防军工到能源电力&#xff0c;从金融交易到交通管控&#xff0c;这些关乎国计民生的关键领域…...