《CCNet:Criss-Cross Attention for Semantic Segmentation》论文笔记
参考代码:CCNet
1. 概述
导读:CNN网络中较大范围的依赖(long-range dependencies)可以捕捉到很多有用的上下文信息,这个特性在图像理解任务中具有重要作用(如分割)。文章在参考non-local设计理念的基础上使用在像素点位置十字交叉的方式进行attention操作,用以获取丰富的上下文信息,提出由CCA模块构建的CCNet(criss-cross Network)。文章的方法相比之前的non-local具有如下两个优点:
1)相比non-local在显存上的开销更小,之间差距差了11倍;
2)在计算开销上,相比non-local减少了85%的计算量;
文章的方法在Cityscapes和ADE20K数据集上mIoU分别达到了81.4和45.22。
文章网络attention模块设计的思路很大程度上是来自于non-local方法,文中在其基础上对计算效率和显存占用做了优化。下图是一个典型的non-local的计算流程图:
其在分辨率为(H∗W)(H*W)(H∗W)下计算量可以大体描述为O((H∗W)∗(H∗W))O((H*W)*(H*W))O((H∗W)∗(H∗W))。对此文章使用十字型采样的方式减少对应的资源消耗,但是为了弥补简单十字型采样带来的表达不足,文章使用了参数共享的堆叠方式,从而得到下图中的attention计算流程:
则经过十字型采样之后整个的计算量大体变为了O((W+H−1)∗H∗W)O((W+H-1)*H*W)O((W+H−1)∗H∗W)。
在下表中比较了在相同baseline下non-local和CCA模块的性能比较,见下表所示:
2. 方法设计
2.1 网络结构
文章的整体网络结构比较简单,具体见下图所示:
输入的图像首先经过一个带有dilation convolution的卷积得到特征图XXX(其stride=8),之后经过一个channel采样的卷积通道数下采样得到特征图HHH,之后经过两个权值共享的CCA模块得到经过优化的特征图,之后送入后面的分割头得到最后的分割结果。
2.2 CCA模块
文章的CCA模块其具体结构见下图所示:
输入的特征图表示为H∈RC∗W∗HH\in R^{C*W*H}H∈RC∗W∗H,之后分别经过两个1∗11*11∗1的卷积得到特征图{Q,K}∈RC‘∗W∗H\{Q,K\}\in R^{C^{‘}*W*H}{Q,K}∈RC‘∗W∗H,再经过一个Affinity的操作(内部包含较多的切片操作,手机端部署难弄-_-||)得到对应的attention map A∈R(W+H−1)∗H∗WA\in R^{(W+H-1)*H*W}A∈R(W+H−1)∗H∗W。
具体的,对于(H,W)(H,W)(H,W)空间位置uuu处进行切片操作,对于特征图QQQ进行切片得到Qu∈RC‘Q_u\in R^{C^{‘}}Qu∈RC‘,对于特征图KKK再横向和纵向进行切片得到Ωu∈R(W+H−1)∗C‘\Omega_u\in R^{(W+H-1)*C^{‘}}Ωu∈R(W+H−1)∗C‘。那么在空间位置uuu处的attention值(channel 维度进行softmax之前)计算描述为:
di,u=QuΩi,uTd_{i,u}=Q_u\Omega_{i,u}^Tdi,u=QuΩi,uT
其中,di,u∈D,D∈R(H+W−1)∗H∗Wd_{i,u}\in D,\ D\in R^{(H+W-1)*H*W}di,u∈D, D∈R(H+W−1)∗H∗W,其中的i∈[1,…,∣Ωu∣]i\in[1,\dots,|\Omega_u|]i∈[1,…,∣Ωu∣]代表的是特征图KKK切片之后元素的索引。
在另外一个分支上输入的特征图HHH经过一个1∗11*11∗1卷积之后得到V∈RC∗W∗HV\in R^{C*W*H}V∈RC∗W∗H,之后对特征图VVV使用与特征QQQ像素的切片操作得到在位置uuu处得到Vu∈RCV_u\in R^CVu∈RC,按照特征图KKK类似的切片操作得到特征图Φu∈R(H+W−1)∗C\Phi_u\in R^{(H+W-1)*C}Φu∈R(H+W−1)∗C。则经过融合之后得到对应位置处的输出数据:
Hu‘=∑i∈∣Φu∣Ai,uΦi,u+HuH_u^{‘}=\sum_{i\in |\Phi_u|}A_{i,u}\Phi_{i,u}+H_uHu‘=i∈∣Φu∣∑Ai,uΦi,u+Hu
其中,H‘∈RC∗W∗HH^{‘}\in R^{C*W*H}H‘∈RC∗W∗H。
2.3 堆叠CCA模块
单独使用一个CCA模块并不能很好抽取丰富的广范围信息,对此文章提出的解决方案是使用参数共享的形式多次堆叠CCA模块,下图展示的是在不同堆叠次序下特征图中信息的传播途径:
对于堆叠的次数对于性能的影响,见下表所示:
3. 实验结果
Cityscapes validation set:
ADE20K validation set & COCO:
《CCNet:Criss-Cross Attention for Semantic Segmentation》论文笔记相关推荐
- 论文笔记之Understanding and Diagnosing Visual Tracking Systems
Understanding and Diagnosing Visual Tracking Systems 论文链接:http://dwz.cn/6qPeIb 本文的主要思想是为了剖析出一个跟踪算法中到 ...
- 《Understanding and Diagnosing Visual Tracking Systems》论文笔记
本人为目标追踪初入小白,在博客下第一次记录一下自己的论文笔记,如有差错,恳请批评指正!! 论文相关信息:<Understanding and Diagnosing Visual Tracking ...
- 论文笔记Understanding and Diagnosing Visual Tracking Systems
最近在看目标跟踪方面的论文,看到王乃岩博士发的一篇分析跟踪系统的文章,将目标跟踪系统拆分为多个独立的部分进行分析,比较各个部分的效果.本文主要对该论文的重点的一个大致翻译,刚入门,水平有限,如有理解错 ...
- 目标跟踪笔记Understanding and Diagnosing Visual Tracking Systems
Understanding and Diagnosing Visual Tracking Systems 原文链接:https://blog.csdn.net/u010515206/article/d ...
- 追踪系统分模块解析(Understanding and Diagnosing Visual Tracking Systems)
追踪系统分模块解析(Understanding and Diagnosing Visual Tracking Systems) PROJECT http://winsty.net/tracker_di ...
- ICCV 2015 《Understanding and Diagnosing Visual Tracking Systems》论文笔记
目录 写在前面 文章大意 一些benchmark 实验 实验设置 基本模型 数据集 实验1 Featrue Extractor 实验2 Observation Model 实验3 Motion Mod ...
- Understanding and Diagnosing Visual Tracking Systems
文章把一个跟踪器分为几个模块,分别为motion model, feature extractor, observation model, model updater, and ensemble po ...
- CVPR 2017 SANet:《SANet: Structure-Aware Network for Visual Tracking》论文笔记
理解出错之处望不吝指正. 本文模型叫做SANet.作者在论文中提到,CNN模型主要适用于类间判别,对于相似物体的判别能力不强.作者提出使用RNN对目标物体的self-structure进行建模,用于提 ...
- ICCV 2017 UCT:《UCT: Learning Unified Convolutional Networks forReal-time Visual Tracking》论文笔记
理解出错之处望不吝指正. 本文模型叫做UCT.就像论文题目一样,作者提出了一个基于卷积神经网络的end2end的tracking模型.模型的整体结构如下图所示(图中实线代表online trackin ...
- CVPR 2018 STRCF:《Learning Spatial-Temporal Regularized Correlation Filters for Visual Tracking》论文笔记
理解出错之处望不吝指正. 本文提出的模型叫做STRCF. 在DCF中存在边界效应,SRDCF在DCF的基础上中通过加入spatial惩罚项解决了边界效应,但是SRDCF在tracking的过程中要使用 ...
最新文章
- pandas替换列值+1
- Android aidl 正确使用 callback的方式
- 精通python语言要多久-这样学可以精通Python语言
- css3新特性总结(视觉表现方面)
- C#窗口间传递消息(聊天记录)
- 在eclipse中使用第三方库总结
- mfc实验报告心得体会_mfc实验报告.doc
- 【BZOJ1500】[NOI2005]维修数列
- MySQL四种事务隔离级的说明
- php抓取视频教程,PHP抓取、分析国内视频网站的视频信息工具类_PHP
- Web2.0之Tag标签原理实现浅析
- 深度解密HTTP通信细节
- mtk刷机显示连接服务器失败,MTK刷机常见错误分析 报错代码解释3
- Win10专业工作站版本激活并获得数字权利的方法和密钥
- 学习使用php实现公历农历转换的方法代码
- WordPress-Tony极简免费单栏博客主题
- java基于安卓Android微信小程序的音乐论坛uniAPP小程序
- 最后防线:字节跳动HIDS分析
- VNC Viewer 远程 Unable to connect to VNC Server using your chosen securitysetting. 问题解决
- 有什么博客营销技巧?
热门文章
- 私域流量和公域流量的区别
- 微软拼音输入法 2003 精选版 怎么用
- Python组合数据类型
- 三种方法求解Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1,当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少。
- 微信怎么制作朋友圈H5链接
- android刷机工具mac版,Apeaksoft Android Toolkit for Mac(安卓数据恢复软件)
- Postman使用详解
- http是什么,其实很简单
- 学学习笔记:利用TCGA Assembler工具下载及处理数据
- 如何更改域计算机用户名和密码错误,win7加入域失败:未知的用户名或密码错误 | 绿萝...