即插即用的3D神经元注意算法!
目录
3D神经元注意力:为每一个神经元分配权重!(算法)
一、概述
二、研究背景
三、主要贡献
四、模型结构和代码
五、数据集介绍
六、性能展示
六、复现过程
七、运行过程
SimAM总结
SimAM: A Simple, Parameter-Free Attention Module for Convolutional Neural Networks
研究背景
SimAM的主要内容
应用场景
研究的影响与贡献
3D神经元注意力:为每一个神经元分配权重!(算法)
本文提出了一种概念简单但非常有效的卷积神经网络注意模型。与现有的基于通道和空间的注意力模型相比,该模型在不增加参数的情况下,为一个层中的特征映射推断3D注意力权重.具体地说,作者基于一些著名的神经科学理论,提出了优化能量函数来确定每个神经元的重要性。之后,进一步推导了能量函数的快速闭式解,并表明该解可以在不到10行的代码中实现。该模块的另一个优点是,大多数算子是基于对所定义的能量函数的解来选择的,从而避免了太多的结构调整工作。对多种视觉任务的定量评价表明,该模型灵活有效地提高了多个ConvNets的表示能力.
此外,我将该算法应用到了多模态情感计算和抑郁症检测任务中,利用该算法为每个单模态神经元生成一个3D权重,并提升后续inter-modal间的交互效率;
同时,由于现如今大多数的情感计算数据集都是基于英文语言开发的,我还加入了中文多模态情感计算数据集(SIMS, SIMSv2)应用在模型中,以开发适用于国人的情感计算分析模型,并应用在情感疾病(如抑郁症、自闭症)检测任务,为医学心理学等领域提供帮助。
【注】 我们文章中所用到的数据集,都经过重新特征提取形成新的数据集特征文件(.pkl),另外该抑郁症数据集因为涉及患者隐私,需要向数据集原创者申请,申请和下载链接都放在了我们附件中的 readme文件中,感兴趣的小伙伴可以进行下载,谢谢支持!
一、概述
这篇文章,我讲解并复现了一篇经典有效的注意力算法 – SimAM,并将他应用在多模态情感计算和抑郁症检测任务中,此外,它还可以应用在多种任务中,比如计算机视觉,NLP等等
原创部分为将该算法应用在了情感计算和抑郁症数据集以实现抑郁症检测任务,以及在图像分类(COCO,CIFAR10),SIMS数据集和SIMV2多种数据集上进行实验。
二、研究背景
卷积神经网络(ConvNets)在大规模数据集(例如,ImageNet)大大提升了许多视觉任务的性能,例如图像分类、目标检测和视频理解。多项研究表明,一个更好的ConvNet结构可以显著提高在各种问题上的性能。因此,构建一个强的ConvNet是视觉研究中的一个重要任务。现代的ConvNet通常有多个阶段,每个阶段都由几个块组成。这种块是由卷积、池化、激活等操作符或某种定制的元结构(本文称之为模块)构成的。最近,许多工作集中在构建高级块以提高ConvNets的表示能力。叠加卷积、残差单元和密集连接是最具代表性的,已经广泛应用于现有架构中。然而,设计这些模块需要丰富的专业知识和大量的时间。然而,现有的注意力模块存在两个问题。首先,它们只能沿通道或空间维度沿着细化特征,限制了它们学习跨通道和空间变化的注意力权重的灵活性。其次,它们的结构是由一系列复杂的因素构成的,例如,池的选择。
三、主要贡献
- 受人脑注意机制的启发,本文提出了一个具有全三维权重的注意模型,并设计了一个能量函数来计算权重;
- 导出能量函数的封闭形式的解,其加速了权重计算并且允许整个模块的轻量形式;
- 将提出的模块集成到一些著名的网络中,并在各种任务上对它们进行评估。我们的模块在精度、模型大小和速度方面与其他流行模块相比表现良好。
四、模型结构和代码
为了成功地实现注意力,我们需要估计单个神经元的重要性。如何根据层中的特征图计算单个神经元的重要性?在视觉神经科学中,信息量最大的神经元通常是那些与周围神经元表现出不同放电模式的神经元。此外,活跃的神经元还可以抑制周围神经元的活动,这种现象被称为空间抑制。换句话说,显示清楚的空间抑制效应的神经元应当被给予更高的优先级(即,重要性)。找到这些神经元的最简单的实现是测量一个目标神经元和其他神经元之间的线性可分性。基于这些神经科学的发现,我们为每个神经元定义了以下能量函数:
2 分别是在该通道中所有神经元(除了目标神经元tt)上的均值和方差。由于公式(3)和公式(4)的现有解是在单个通道上获得的,因此可以合理地假设单个通道中的所有像素都遵循相同的分布。基于这一假设,均值和方差可以在所有神经元上计算,并在该通道的所有神经元上重复使用。这样可以显著减少计算成本,避免为每个位置重复计算μμ 和 σσ。最终的最小能量可以通过以下公式计算:
公式 (5) 表明,能量 et∗et∗ 越低,神经元 tt 就越能从周围的神经元中脱颖而出,对于视觉处理而言也更为重要。因此,每个神经元的重要性可以通过 1/et∗1/et∗ 来表示。与我们的方法类似,研究了一个用于语义部分匹配的类似函数,但他们的方法需要计算一个大的协方差矩阵,这不适合用于深度神经网络。与不同的是,我们操作单个神经元,并将这种线性可分性集成到一个端到端框架中。此外,我们还从神经科学的角度提供了全面的理解。
截至目前,我们已经推导出一个能量函数并找出了每个神经元的重要性。根据 (Hillyard et al., 1998) 的研究,哺乳动物大脑中的注意力调节通常表现为对神经元反应的增益(即缩放)效应。因此,我们采用缩放操作而非加法来进行特征精炼。我们模块的整个精炼阶段为:
其中 EE 将所有通道和空间维度上的 et∗et∗ 进行汇总。为了限制 EE 中过大的值,使用了 sigmoid 函数。由于 sigmoid 函数是单调函数,这不会影响每个神经元的相对重要性。
五、数据集介绍
1. 计算机视觉数据集:
- COCO: COCO 数据集是一个广泛用于计算机视觉任务的大型数据集,特别是物体检测、分割和图像标注。其中包含超过 20 万张图像,包含 80 个对象类别,提供了详细的标注信息,包括物体的边界框、分割掩膜、关键点(如人体姿态估计)以及图像的描述性文字;
- CIFAR: CIFAR 数据集由加拿大高级研究院(CIFAR)提供,主要用于图像分类任务。它包含了不同场景和对象的小尺寸图像,广泛用于机器学习和深度学习算法的基准测试。CIFAR-10 包含 60,000 张图像,其中 50,000 张用于训练,10,000 张用于测试。CIFAR-100 包含 60,000 张图像,其中 50,000 张用于训练,10,000 张用于测试。CIFAR-10: 10 个类别(飞机、汽车、鸟类、猫、鹿、狗、青蛙、马、船、卡车)。
CIFAR-100: 100 个类别(从 CIFAR-10 中的类别扩展,涵盖更广泛的对象和场景)。2. 多模态情感计算数据集:
- CMU-MOSI: CMU-MOSI数据集是MSA研究中流行的基准数据集。该数据集是YouTube独白的集合,演讲者在其中表达他们对电影等主题的看法。MOSI共有93个视频,跨越89个远距离扬声器,包含2198个主观话语视频片段。这些话语被手动注释为[-3,3]之间的连续意见评分,其中-3/+3表示强烈的消极/积极情绪。
- CMU-MOSEI: CMU-MOSEI数据集是对MOSI的改进,具有更多的话语数量,样本,扬声器和主题的更大多样性。该数据集包含23453个带注释的视频片段(话语),来自5000个视频,1000个不同的扬声器和250个不同的主题
- SIMS/SIMSV2: CH-SIMS数据集[35]是一个中文多模态情感分析数据集,为每种模态提供了详细的标注。该数据集包括2281个精选视频片段,这些片段来自各种电影、电视剧和综艺节目,每个样本都被赋予了情感分数,范围从-1(极度负面)到1(极度正面)
3. 多模态抑郁检测数据集:
- AVEC2019: AVEC2019 DDS数据集是从患者临床访谈的视听记录中获得的。访谈由虚拟代理进行,以排除人为干扰。与上述两个数据集不同的是,AVEC2019中的每种模态都提供了几种不同的特征。例如,声学模态包括MFCC、eGeMaps以及由VGG和DenseNet提取的深度特征。在之前的研究中,发现MFCC和AU姿势分别是声学和视觉模态中两个最具鉴别力的特征。因此,为了简单和高效的目的,我们只使用MFCC和AU姿势特征来检测抑郁症。数据集用区间[0,24]内的PHQ-8评分进行注释,PHQ-8评分越大,抑郁倾向越严重。该基准数据集中有163个训练样本、56个验证样本和56个测试样本。
六、性能展示
- 在情感计算任务中,可以看到加入 SimAM 算法后性能有了明显提升,证明了其有效性;
- 抑郁症检测任务,以下是 加入SimAM 算法后在抑郁症数据集AVEC2019中的表现:
Model | CCC | MAE |
Baseline | 0.111 | 6.37 |
EF | 0.34 | – |
Bert-CNN & Gated-CNN | 0.403 | 6.11 |
Temporal Dilated CNN | 0.430 | 4.39 |
+ SimAM | 0.458 | 4.07 |
六、复现过程
在下载附件并准备好数据集并调试代码后,进行下面的步骤,附件已经调通并修改,可直接正常运行;
1. 数据集准备
下载附件中多种数据集已提取好的特征文件。把它放在"./dataset”目录。2. 下载预训练语言模型
下载附件中SentiLARE语言模型文件,然后将它们放入"/pretrained-model / sentilare_model”目录。3. 下载需要的包
pip install -r requirements.txt
4. 进行训练
$ python train.py
七、运行过程
- 训练过程
- 最终结果
SimAM总结
SimAM: A Simple, Parameter-Free Attention Module for Convolutional Neural Networks
研究背景
近年来,注意力机制在深度学习中,尤其是在卷积神经网络(CNN)中的应用,取得了显著进展。传统的注意力模块,如SE(Squeeze-and-Excitation)模块和CBAM(Convolutional Block Attention Module),通过调整不同通道和空间位置的权重来增强CNN的特征表达能力。然而,这些方法通常依赖于复杂的结构设计和大量的参数,这在某些情况下会增加模型的计算成本,并且在实际应用中可能会受限。
SimAM的主要内容
SimAM(Simple Attention Module) 是一种新型的注意力机制,旨在通过简化注意力模块的结构来减少计算复杂度,同时保持高效的特征增强能力。SimAM的核心特点包括:
- 参数无关:SimAM模块不引入任何额外的可训练参数。这意味着在模型的训练和推理过程中,SimAM不会增加计算成本或内存占用。
- 基于神经科学的动机:SimAM的设计灵感来自于神经科学,尤其是对单个神经元行为的模拟。它通过计算每个神经元在特征图中的“响应强度”来确定该位置的重要性。响应强度的计算基于输入特征的均方误差(MSE),模拟了神经元对输入刺激的响应。
- 简单的实现:SimAM通过简单的数学运算(如均方误差和Sigmoid函数)来计算注意力分数,这使得它易于实现,并且能够与现有的CNN架构无缝集成。
- 增强特征表示:SimAM能够有效地增强重要的特征表示,从而提高模型在图像分类、目标检测等任务中的表现。
应用场景
- 图像分类:SimAM可以应用于各种图像分类任务,通过增强特征表示,提升CNN模型的分类准确性。
- 目标检测:在目标检测任务中,SimAM能够突出目标区域的特征,从而提高检测模型的精度和鲁棒性。
- 语义分割:SimAM有助于在语义分割任务中增强重要区域的特征表示,提高分割的精度。
- 轻量级模型:由于SimAM不引入额外的参数,因此非常适合在移动设备或嵌入式系统中部署轻量级的深度学习模型。
研究的影响与贡献
SimAM的提出为注意力机制的设计提供了一个新思路,即通过简化模型结构和减少参数数量来提高效率,同时保持甚至提升性能。这种方法在一些计算资源有限的应用场景中具有重要的应用价值,也为未来的注意力机制研究提供了启发。
感觉不错,点击我,立即使用
相关文章:

即插即用的3D神经元注意算法!
本文所涉及所有资源均在 传知代码平台 可获取。 目录 3D神经元注意力:为每一个神经元分配权重!(算法) 一、概述 二、研究背景 三、主要贡献 四、模型结构和代码 五、数据集介绍 六、性能展示 六、复现过程 七、运行过程 SimAM总结…...
FPGA 蜂鸣器 音乐播放器
点击: FPGA 蜂鸣器音乐播放器 基于FPGA的beep音乐播放器设计 FPGA(Field Programmable Gate Array)蜂鸣器音乐播放器是一个将FPGA编程用于控制蜂鸣器播放音乐的设备。下面是一个简单的实现步骤和思路: 一、硬件准备 FPGA开发板…...
前端-基础CSS总结常用
1.书写位置:title 标签下方添加 style 双标签,style 标签里面书写 CSS 代码。 <title>CSS 初体验</title> <style>/* 选择器 { } */p {/* CSS 属性 */color: red;} </style><p>体验 CSS</p> <link rel="stylesheet" href=…...

Coppelia Sim (v-REP)仿真 机器人3D相机手眼标定与实时视觉追踪 (一)
coppelia sim[V-REP]仿真实现 机器人于3D相机手眼标定与实时视觉追踪 一 标定板的制作生成标定的PDF文件PDF转为图像格式图像加载到仿真中 二 仿真场景设置加载机器人加载的控制dummy 
CSS常见面试题
🎯CSS常见面试题 1.CSS的盒模型2.CSS选择器的优先级3.隐藏元素的方法有哪些?4.px和rem的区别是什么?5.重绘排版有什么区别?6.让一个元素水平垂直居中的方式有哪些?7.CSS的哪些属性可以继承?哪些不可以继承&…...

ChatGPT实现旅游推荐微信小程序
随着旅游行业的快速发展,个性化推荐已成为提升用户体验的重要手段。通过AI技术,提供一个智能旅游推荐小程序,使用户能够轻松获取定制化的旅行建议。 项目概述 项目目标 开发一个AI旅游推荐小程序,基于用户输入的旅行偏好&#…...

基于单片机的智能小区门禁系统设计(论文+源码)
1总体架构 智能小区门禁系统以STM32单片机和WiFi技术为核心,STM32单片机作为主控单元,通过WiFi模块实现与手机APP的连接,构建整个门禁系统。系统硬件包括RFID模块、指纹识别模块、显示屏、按键以及继电器。通过RFID绑定IC卡、APP面部识别、指…...

stm32F103 实现呼吸灯效果
目录 硬件连接 软件实现步骤 初始化系统时钟。 配置 GPIO 引脚。 配置定时器以生成 PWM 信号。 在主循环中调整 PWM 占空比以实现呼吸效果。 示例代码 1. 初始化系统时钟 2. 配置 GPIO 引脚 3. 配置定时器以生成 PWM 信号 4. 在主循环中调整 PWM 占空比以实现呼吸效…...
SAP 为 Copilot Joule 增添协作功能
在最新的SAP TechEd大会上,SAP发布了一系列创新功能,旨在扩展其AI平台Joule的能力,同时推出了其他工具,以提高企业效率并为开发人员提供更多支持。这些创新不仅将推动AI驱动的业务转型,还将加强数据的利用和简化开发流…...

Node.js 模块化
1. 介绍 1.1 什么是模块化与模块 ? 将一个复杂的程序文件依据一定规则(规范)拆分成多个文件的过程称之为 模块化其中拆分出的 每个文件就是一个模块 ,模块的内部数据是私有的,不过模块可以暴露内部数据以便其他模块使用 1.2 什…...

【部署篇】RabbitMq-03集群模式部署
一、准备主机 准备3台主机用于rabbitmq部署,文章中是在centos7上安装部署rabbitmq3.8通过文章中介绍的方式可以同样在centos8、centos9上部署,只需下载对应的版本进行相同的操作。 主机IP角色说明192.168.128.31种子节点192.168.128.32普通节点192.16…...
【硬啃Dash-Fastapi-Admin】03-requirements-pg.txt 速览
文章目录 dash2.18.1 纯Python的Web应用框架Python Dash库的功能介绍和用法示例功能介绍用法示例 Flask-Compress1.15 Flask响应数据的压缩功能介绍用法示例注意事项 feffery-antd-charts0.1.0rc5 数据可视化组件库功能介绍用法示例 feffery-antd-components0.3.8 Dash 第三方组…...

【CS常见问题】你用的是VS2019,最高支持.NET5.0,但是项目将.NET6.0设为目标无法运行,怎么办?
.NET版本问题 报错示例报错分析最简单的方法步骤 报错示例 严重性 代码 说明 项目 文件 行 禁止显示状态 错误 NETSDK1045 当前 .NET SDK 不支持将 .NET 6.0 设置为目标。请将 .NET 5.0 或更低版本设置为目标,或使用支持 .NET 6.0 的 .NET SDK 版本。 ABFview C:\x…...

系统登录接口文档Demo
接口描述 该接口用于用户登录验证。通过用户名和密码进行身份验证,成功后返回一个用于后续请求的认证 token。这个 token 是访问受保护资源的凭证。 时序图: 登录请求: 登录查询接口: POST {url}/api/user/login 请求体: {"username…...

gin入门教程(7): 使用 Logrus + Lumberjack 创建日志中间件
结合 Logrus 和 Lumberjack,可以创建一个高效的日志中间件,用于记录请求和响应。以下是实现步骤: 1. 安装依赖 首先,确保安装了 Logrus 和 Lumberjack: go get github.com/sirupsen/logrus go get gopkg.in/natefin…...
kube-prometheus-stack 自定义 alertmanager 配置推送webhook
创建AlertmanagerConfig资源 在没有使用 prometheus-operator 的情况下,需要手动配置 alertmanager.yaml 来路由&发送从 prometheus 接收的警报。 使用 prometheus-operator 之后,事情变得简单一些。只需要创建 AlertmanagerConfig 资源࿰…...
openssl签名报错
在调用RSA_private_encrypt函数时遇到如下报错。 0:error:0D07803A:asn1 encoding routines:asn1_item_embed_d2i:nested asn1 error:crypto/asn1/tasn_dec.c:309:TypeX509 0:error:2406C06E:random number generator:RAND_DRBG_instantiate:error retrieving entropy:crypto/…...
如何在不使用 VPN 的情况下通过 SOCKS 隧道安全地路由 Web 流量
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 介绍 在某些情况下,您可能会发现自己处于一个不安全的网络或者有一个过于严格的防火墙,您会希望确保没有人在监…...

android openGL ES详解——缓冲区VBO/VAO/EBO/FBO
目录 一、缓冲区对象概念 二、分类 三、顶点缓冲区对象VBO 1、概念 2、为什么使用VBO 3、如何使用VBO 生成缓冲区对象 绑定缓冲区对象 输入缓冲区数据 更新缓冲区中的数据 删除缓冲区 4、VBO应用 四、顶点数组对象VAO 1、概念 2、为什么使用VAO 3、如何使用VAO…...

计算机网络——传输层服务
传输层会给段加上目标ip和目标端口号 应用层去识别报文的开始和结束...
基于大模型的 UI 自动化系统
基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...

Nuxt.js 中的路由配置详解
Nuxt.js 通过其内置的路由系统简化了应用的路由配置,使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...
Robots.txt 文件
什么是robots.txt? robots.txt 是一个位于网站根目录下的文本文件(如:https://example.com/robots.txt),它用于指导网络爬虫(如搜索引擎的蜘蛛程序)如何抓取该网站的内容。这个文件遵循 Robots…...

PL0语法,分析器实现!
简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...
【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)
升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点,但无自动故障转移能力,Master宕机后需人工切换,期间消息可能无法读取。Slave仅存储数据,无法主动升级为Master响应请求ÿ…...
工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配
AI3D视觉的工业赋能者 迁移科技成立于2017年,作为行业领先的3D工业相机及视觉系统供应商,累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成,通过稳定、易用、高回报的AI3D视觉系统,为汽车、新能源、金属制造等行…...

Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
MySQL账号权限管理指南:安全创建账户与精细授权技巧
在MySQL数据库管理中,合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号? 最小权限原则…...
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析 一、第一轮提问(基础概念问题) 1. 请解释Spring框架的核心容器是什么?它在Spring中起到什么作用? Spring框架的核心容器是IoC容器&#…...

Windows安装Miniconda
一、下载 https://www.anaconda.com/download/success 二、安装 三、配置镜像源 Anaconda/Miniconda pip 配置清华镜像源_anaconda配置清华源-CSDN博客 四、常用操作命令 Anaconda/Miniconda 基本操作命令_miniconda创建环境命令-CSDN博客...