论文阅读:Non-local Neural Networks
论文地址:https://arxiv.org/pdf/1711.07971.pdf
内容简介
- 主要讨论下提出来的non-local block
non-local block
直译下来叫“非局部块”。长这样:
既然叫“非局部”那就看看什么叫做“局部”。所谓局部指的就是感受野,比如卷积核的大小。一般来说我们使用的都是如3×3的小尺寸卷积核,所以只能提取小范围的信息。
而为了克服这种局面,获取更大范围(比如两个较远像素)之间蕴含的信息,就可以用文章中提出的non local结构。
具体的流程是这样的:
- 对于输入的特征图(假设是1024通道),用1个1×1卷积将其降维至512通道(更通用的讲,降一半),以供备用,记为ggg
- 同样,分别用2个1×1卷积处理输入特征图,记为θ\thetaθ和ϕ\phiϕ
- 将θ\thetaθ和ϕ\phiϕ做矩阵乘,得到的结果类似于协方差矩阵,包含自相关性信息
- 对该结果做softmax,获得的权重就相当于self attention系数
- 与g相乘,升维,再与原始输入x残差相加,得到最后结果
代码长这样:
class NonLocal(nn.Module):def __init__(self, channel):super(NonLocalBlock, self).__init__()self.inter_channel = channel // 2self.conv_phi = nn.Conv2d(channel, self.inter_channel, 1, 1, 0, False)self.conv_theta = nn.Conv2d(channel, self.inter_channel, 1, 1, 0, False)self.conv_g = nn.Conv2d(channel, self.inter_channel, 1, 1, 0, False)self.softmax = nn.Softmax(dim=1)self.conv_mask = nn.Conv2d(self.inter_channel, channel, 1, 1, 0, False)def forward(self, x):b, c, h, w = x.size()x_phi = self.conv_phi(x).view(b, c, -1)x_theta = self.conv_theta(x).view(b, c, -1).permute(0, 2, 1).contiguous()x_g = self.conv_g(x).view(b, c, -1).permute(0, 2, 1).contiguous()mul_theta_phi = torch.matmul(x_theta, x_phi)mul_theta_phi = self.softmax(mul_theta_phi)mul_theta_phi_g = torch.matmul(mul_theta_phi, x_g)mul_theta_phi_g = mul_theta_phi_g.permute(0, 2, 1).contiguous().view(b, self.inter_channel, h, w)mask = self.conv_mask(mul_theta_phi_g)out = mask + x return out
参考
https://mp.weixin.qq.com/s/FFEKWFgScdBZ8snZQLdfFg
论文阅读:Non-local Neural Networks相关推荐
- 论文阅读2018-Deep Convolutional Neural Networks for breast cancer screening 重点:利用迁移学习三个网络常规化进行分类
论文阅读2018-Deep Convolutional Neural Networks for breast cancer screening 摘要:我们探讨了迁移学习的重要性,并通过实验确定了在训练 ...
- [论文阅读笔记]Deep Neural Networks are Easily Fooled:High Confidence Predictions for Unrecognizable Images
Deep Neural Networks are Easily Fooled:High Confidence Predictions for Unrecognizable Images(CVPR201 ...
- 【论文阅读】Deep Neural Networks for Learning Graph Representations | day14,15
<Deep Neural Networks for Learning Graph Representations>- (AAAI-16)-2016 文章目录 一.模型 1.1解决了两个问题 ...
- 论文阅读:Recurrent Neural Networks for Time Series Forecasting Current Status and Future Directions
typora-copy-images-to: ./ Recurrent Neural Networks for Time Series Forecasting: Current Status and ...
- 论文阅读:Convolutional Neural Networks for Sentence Classification 卷积神经网络的句子分类
Convolutional Neural Networks for Sentence Classification 卷积神经网络的句子分类 目录 Convolutional Neural Networ ...
- [ICCV2019论文阅读]Asymmetric Non-local Neural Networks for Semantic Segmentation
作者:Zhen Zhu, Mengde Xu, Song Bai, Tengteng Huang, Xiang Bai 机构:Huazhong University of Science and Te ...
- 【论文阅读】Siamese Neural Networks for One-shot Image Recognition
关键词: one-short learning : 待解决的问题只有少量的标注数据,先验知识很匮乏,迁移学习就属于one-short learning的一种 zero-short learning: ...
- 【论文阅读】Diffusion-Convolutional Neural Networks (DCNNs) | day9、10
30th Conference on Neural Information Processing Systems (NIPS 2016) 文章目录 一.介绍 优势: 二.模型 三.缺点 用于图结构 ...
- 论文阅读(Improving neural networks by preventing co-adaptation of feature detectors )
显然看不懂英文然后出于各种原因最终被迫搜索了翻译版本,如有错误欢迎指出 介绍主体: DropOut 目的: 对战过拟合的基础上提升速度和学习能力(力速双A✔) 思路: 通过在每个训练案例上随机省略一般 ...
最新文章
- 图论(四)------非负权有向图的单源最短路径问题,Dijkstra算法
- 让PHP更快的提供文件下载
- 横竖三个数的和相等_怎样证明 0.999… = 1?数值上是相等的,那么两者的区别是什么?...
- html js脚本限制 正则,简单谈谈JS中的正则表达式
- php mysql插入的数据有引号_php – 由于’引号’的不同,数据没有插入到mysql数据库中...
- Java面试题目,java工程师成神之路
- rpc wmi 服务不可用_在Windows上修复“RPC服务器不可用”的方法
- myeclipse 复制项目不包含svn或CVS目录
- Hibernate征途(三)之CRUD
- java循环嵌套显示不全_循环嵌套问题
- php session auto_start,PHP出现 Warning: session_start()的解决方法
- 宝塔面板搭建ftp服务器
- bmp 图片格式读入 cv::Mat 的 C++ 实现
- 通过 SQL Server 视图访问另一个IP地址数据库服务器表的方法
- Java读取相片信息
- Xilinx FPGA DDR3设计(一)DDR3基础扫盲
- 魔兽转移账号的服务器,《魔兽世界》那些区能进行免费角色转移服务 安苏、死亡之翼服务器免费角色转移服务现已开放...
- 强大的录屏工具:Screen Recorder by Omi Mac
- 算法设计与分析: 4-27 登山机器人问题
- 浅谈人机混合智能——计算-算计模型
热门文章
- php注册 绑定的容器,php – 将Eloquent模型绑定到服务容器
- ubuntu server自动关闭屏幕背景灯_certbot-auto申请https证书,自动续期
- 从GCN中学习的信息熵
- python 打开本地程序发生异常_Python中的异常处理
- python __name__怎么使用_python学习笔记26(python中__name__的使用)
- 补码乘法实验原理_你真的理解补码吗?
- update.php,update php version to 5.6
- STL常用函数总结-stack
- Java实验7 五、JVM抛出一个OutOfMemoryError的异常
- PyTorch——解决报错“RuntimeError: running_mean should contain *** elements not ***”