论文地址: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相关推荐

  1. 论文阅读2018-Deep Convolutional Neural Networks for breast cancer screening 重点:利用迁移学习三个网络常规化进行分类

    论文阅读2018-Deep Convolutional Neural Networks for breast cancer screening 摘要:我们探讨了迁移学习的重要性,并通过实验确定了在训练 ...

  2. [论文阅读笔记]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 ...

  3. 【论文阅读】Deep Neural Networks for Learning Graph Representations | day14,15

    <Deep Neural Networks for Learning Graph Representations>- (AAAI-16)-2016 文章目录 一.模型 1.1解决了两个问题 ...

  4. 论文阅读: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 ...

  5. 论文阅读:Convolutional Neural Networks for Sentence Classification 卷积神经网络的句子分类

    Convolutional Neural Networks for Sentence Classification 卷积神经网络的句子分类 目录 Convolutional Neural Networ ...

  6. [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 ...

  7. 【论文阅读】Siamese Neural Networks for One-shot Image Recognition

    关键词: one-short learning :  待解决的问题只有少量的标注数据,先验知识很匮乏,迁移学习就属于one-short learning的一种 zero-short learning: ...

  8. 【论文阅读】Diffusion-Convolutional Neural Networks (DCNNs) | day9、10

    30th Conference on Neural Information Processing Systems (NIPS 2016) 文章目录 一.介绍   优势: 二.模型 三.缺点 用于图结构 ...

  9. 论文阅读(Improving neural networks by preventing co-adaptation of feature detectors )

    显然看不懂英文然后出于各种原因最终被迫搜索了翻译版本,如有错误欢迎指出 介绍主体: DropOut 目的: 对战过拟合的基础上提升速度和学习能力(力速双A✔) 思路: 通过在每个训练案例上随机省略一般 ...

最新文章

  1. 图论(四)------非负权有向图的单源最短路径问题,Dijkstra算法
  2. 让PHP更快的提供文件下载
  3. 横竖三个数的和相等_怎样证明 0.999… = 1?数值上是相等的,那么两者的区别是什么?...
  4. html js脚本限制 正则,简单谈谈JS中的正则表达式
  5. php mysql插入的数据有引号_php – 由于’引号’的不同,数据没有插入到mysql数据库中...
  6. Java面试题目,java工程师成神之路
  7. rpc wmi 服务不可用_在Windows上修复“RPC服务器不可用”的方法
  8. myeclipse 复制项目不包含svn或CVS目录
  9. Hibernate征途(三)之CRUD
  10. java循环嵌套显示不全_循环嵌套问题
  11. php session auto_start,PHP出现 Warning: session_start()的解决方法
  12. 宝塔面板搭建ftp服务器
  13. bmp 图片格式读入 cv::Mat 的 C++ 实现
  14. 通过 SQL Server 视图访问另一个IP地址数据库服务器表的方法
  15. Java读取相片信息
  16. Xilinx FPGA DDR3设计(一)DDR3基础扫盲
  17. 魔兽转移账号的服务器,《魔兽世界》那些区能进行免费角色转移服务 安苏、死亡之翼服务器免费角色转移服务现已开放...
  18. 强大的录屏工具:Screen Recorder by Omi Mac
  19. 算法设计与分析: 4-27 登山机器人问题
  20. 浅谈人机混合智能——计算-算计模型

热门文章

  1. php注册 绑定的容器,php – 将Eloquent模型绑定到服务容器
  2. ubuntu server自动关闭屏幕背景灯_certbot-auto申请https证书,自动续期
  3. 从GCN中学习的信息熵
  4. python 打开本地程序发生异常_Python中的异常处理
  5. python __name__怎么使用_python学习笔记26(python中__name__的使用)
  6. 补码乘法实验原理_你真的理解补码吗?
  7. update.php,update php version to 5.6
  8. STL常用函数总结-stack
  9. Java实验7 五、JVM抛出一个OutOfMemoryError的异常
  10. PyTorch——解决报错“RuntimeError: running_mean should contain *** elements not ***”