【NAM】《NAM:Normalization-based Attention Module》

在这里插入图片描述

NeurIPS-2021 workshop


文章目录

  • 1 Background and Motivation
  • 2 Related Work
  • 3 Advantages / Contributions
  • 4 Method
  • 5 Experiments
    • 5.1 Datasets and Metrics
    • 5.2 Experiments
  • 6 Conclusion(own)


1 Background and Motivation

注意力机制是近些年视觉领域研究的热门方向之一

We aim to utilize the contributing factors of weights for the improvement of attention mechanisms.

2 Related Work

However, these works neglect information from the tuned weights from training.

3 Advantages / Contributions

提出 Normalization-based Attention Modul,在 resnet 和 mobilenet 上 验证了其有效性

4 Method

a NAM module is embedded at the end of each network block

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

W γ W_{\gamma} Wγ W λ W_{\lambda} Wλ 的计算方法如图 1

作者还对 γ \gamma γ λ \lambda λ 进行了归一化约束

p p p is the penalty that balances g ( γ ) g(\gamma) g(γ) and g ( λ ) g(\lambda) g(λ)

看看作者开源的代码,https://github.com/Christian-lyc/NAM

import torch.nn as nn
import torch
from torch.nn import functional as Fclass Channel_Att(nn.Module):def __init__(self, channels, t=16):super(Channel_Att, self).__init__()self.channels = channelsself.bn2 = nn.BatchNorm2d(self.channels, affine=True)def forward(self, x):residual = xx = self.bn2(x)weight_bn = self.bn2.weight.data.abs() / torch.sum(self.bn2.weight.data.abs())x = x.permute(0, 2, 3, 1).contiguous()x = torch.mul(weight_bn, x)x = x.permute(0, 3, 1, 2).contiguous()x = torch.sigmoid(x) * residual #return xclass Att(nn.Module):def __init__(self, channels,shape, out_channels=None, no_spatial=True):super(Att, self).__init__()self.Channel_Att = Channel_Att(channels)def forward(self, x):x_out1=self.Channel_Att(x)return x_out1  

仅有 channel normalization-based attention 的部分

5 Experiments

5.1 Datasets and Metrics

  • CIFAR-100

  • ImageNet

top1 and top5

5.2 Experiments

在这里插入图片描述
单加 channel NAM 比单加 spatial 的要好

在这里插入图片描述
提升不是特别的明显,优势在于基本没有引入额外的参数量,下面具体看看参数量

在这里插入图片描述

乘以 4,仅看作者开源的代码的话,应该是乘以 2,也就是 BN 的参数量

在这里插入图片描述

6 Conclusion(own)

文章篇幅较短,细节未可知,eg: pixel normalization 的具体实现

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

栈与队列part01-算法

栈与队列 今日任务: ● 理论基础 ● 232.用栈实现队列 ● 225. 用队列实现栈 1.232.用栈实现队列 232. 用栈实现队列 class MyQueue {//使用两个栈实现先入先出队列//定义两个Stack集合//就已经拥有了这个集合的方法了push pop peek isEmpty等等//但是我们这里是…

WPF组合控件TreeView+DataGrid之DataGrid封装

(关注博主后,在“粉丝专栏”,可免费阅读此文) wpf的功能非常强大,很多控件都是原生的,但是要使用TreeViewDataGrid的组合,就需要我们自己去封装实现。 我们需要的效果如图所示&#x…

关于mysql的知识体系

关系型数据库(二维表) 常用的SQL命令分类 管理数据库使用SQL(结构化查询语言) DDL 数据定义语言 如:CREATE、ALTER、DROP DML 数据操作语言 如:INSERT、UPDATE、DELETE DCL 数据控制语言 如&#xff1a…

[python]python实现对jenkins 的任务触发

目录 关键词平台说明背景一、安装 python-jenkins 库二、code三、运行 Python 脚本四、注意事项 关键词 python、excel、DBC、jenkins 平台说明 项目Valuepython版本3.6 背景 用python实现对jenkins 的任务触发。 一、安装 python-jenkins 库 pip install python-jenkin…

论文解读:Informer-AAAI2021年最佳论文

论文背景 应用背景 训练的是历史数据,但预测的是未来的数据,但是历史数据和未来数据的分布不一定是一样的,所以时间序列应用于股票预测往往不太稳定 动作预测: 基于之前的视频中每一帧动作,预测下一帧这个人要做什么…

Ubuntu 常用命令之 echo 命令用法介绍

📑Linux/Ubuntu 常用命令归类整理 echo 是一个在 Ubuntu 系统下常用的命令,主要用于在终端输出字符串或者变量。 echo 的基本语法 echo [option] [string]echo 命令的参数包括 -n:不输出结尾的换行符。-e:启用反斜杠转义字符。…

超级逼真人脸生成,Stable Diffusion的3个关键技巧

大家好,你是否曾想过,为什么别人可以使用AI图像生成技术生成如此逼真的人脸,而自己的尝试却充满了错误和瑕疵,让人一眼看出是假的。尝试过调整提示和设置,但似乎仍无法与他人的质量相匹配。 本文将带大家了解使用Stab…

LeetCode-17 电话号码的字母组合

LeetCode-17 电话号码的字母组合 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 示例 1: 输入:d…

医保dip质控系统如何实现医保控费?

医保DIP质控系统通过数据分析和监管手段实现医保控费的目标。下面是一些常见的实现方式: 医疗服务审核:系统对医疗机构提供的医疗服务进行审核,确保医疗行为符合规范和政策要求。例如,对门诊病历、住院病历等进行审核,…

硬件产品经理:硬件产品敏捷开发

目录 简介 敏捷 CSDN学院 作者简介 简介 之所以敏捷产品开发流程会越来越普遍。 主要得益于这个方法可以让企业使用更少的资源去开发出令客户满意的新产品。 敏捷开发强调的最重要的一点就是“快”。 也就是要求通过快速迭代来获取频繁的客户反馈。 这就特别适合应对市…

Python教你如何让代码摆脱死循环的困扰!

更多资料获取 📚 个人网站:ipengtao.com 在编写Python代码时,无限循环是一个常见的问题,可能导致程序陷入死循环,使得代码无法正常执行。这篇博客将介绍一些方法,帮助大家防止和处理无限循环,确…

ansible变量的使用

本章主要介绍playbook中的变量 自定义变量使用变量文件字典变量列表变量facts变量内置变量变量的过滤器 为了能够写出更实用的playbook,需要在playbook中使用变量。下面来讲解playbook 中常见的变量。本章实验都在/home/lduan/demo2下操作,先把 demo2目…

百度网盘资源下载慢解决方法

1、使用百度网盘客户端,设置使用空闲带宽下载 亲测,可以一定程度上解决下载慢的问题,但是对于有些文件下载还是很慢就不清楚为什么了。 2、使用IDM进行下载 (1)、第一步下载和安装IDM 搜索后,普通下载后安…

Python---静态Web服务器-返回固定页面数据

1. 开发自己的静态Web服务器 实现步骤: 编写一个TCP服务端程序获取浏览器发送的http请求报文数据读取固定页面数据,把页面数据组装成HTTP响应报文数据发送给浏览器。HTTP响应报文数据发送完成以后,关闭服务于客户端的套接字。 2. 静态Web服务器-返回固…

BWS2000倾角传感器c++测试代码【1】

使用瑞芬的倾角传感器配置的时候,数据手册一下就配置好了,但是BWS2000倾角传感器总是出错,这里进行一下记录出现的问题与解决方式。 1.初步测试 在配置BWS2000倾角传感器读取帧数据的时候,总是出现一个问题,就是进行…

Qt/QML编程学习之心得:在QML工程中添加库(十四)

实现库并且使用库,类似于vc中的静态库library、动态库dll、COM组件等方法一样,在Qt中也经常会使用库,或者将部分功能打包成库。 右击Qt项目,点击add library... 在linux中将.a文件导入,工程会自动在.pro温江中增加相应…

关于频谱仪是如何来实现辐射功率测量

1.1 内部基本原理框架 首先是接收到外部信号输入,然后经过可变衰减器衰减,接着进行变频,接着经过带宽带通滤波器进行滤波,滤波后的信号送入检波器进行信号检测,再经对数放大器放大后,送入低通滤波器进行视频…

Java文件流大家族(通俗易懂,学习推荐版,很详细)——操作文件本身和文件中的数据

1.File(操作文件本身) 1.定义 目录 2.常用方法 3.路径引用符 可以用/或者\\分隔路径 还可以用File.separator分隔路径,会根据不同系统使用啥分隔符。 4.绝对路径、相对路径及桌面路径表示 桌面路径为: 我电脑的用户名为X 5.示例…

解决找不到vcruntime140.dll无法继续执行的多种方法分享

最近,我在使用电脑时遇到了一个问题,即“由于找不到vcruntime140.dll无法继续执行”。vcruntime140.dll是Visual C Redistributable Packages中的一个组件,它是Visual Studio 2015中运行C程序所必需的。如果找不到vcruntime140.dll文件&#…