参考代码: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》论文笔记相关推荐

  1. 论文笔记之Understanding and Diagnosing Visual Tracking Systems

    Understanding and Diagnosing Visual Tracking Systems 论文链接:http://dwz.cn/6qPeIb 本文的主要思想是为了剖析出一个跟踪算法中到 ...

  2. 《Understanding and Diagnosing Visual Tracking Systems》论文笔记

    本人为目标追踪初入小白,在博客下第一次记录一下自己的论文笔记,如有差错,恳请批评指正!! 论文相关信息:<Understanding and Diagnosing Visual Tracking ...

  3. 论文笔记Understanding and Diagnosing Visual Tracking Systems

    最近在看目标跟踪方面的论文,看到王乃岩博士发的一篇分析跟踪系统的文章,将目标跟踪系统拆分为多个独立的部分进行分析,比较各个部分的效果.本文主要对该论文的重点的一个大致翻译,刚入门,水平有限,如有理解错 ...

  4. 目标跟踪笔记Understanding and Diagnosing Visual Tracking Systems

    Understanding and Diagnosing Visual Tracking Systems 原文链接:https://blog.csdn.net/u010515206/article/d ...

  5. 追踪系统分模块解析(Understanding and Diagnosing Visual Tracking Systems)

    追踪系统分模块解析(Understanding and Diagnosing Visual Tracking Systems) PROJECT http://winsty.net/tracker_di ...

  6. ICCV 2015 《Understanding and Diagnosing Visual Tracking Systems》论文笔记

    目录 写在前面 文章大意 一些benchmark 实验 实验设置 基本模型 数据集 实验1 Featrue Extractor 实验2 Observation Model 实验3 Motion Mod ...

  7. Understanding and Diagnosing Visual Tracking Systems

    文章把一个跟踪器分为几个模块,分别为motion model, feature extractor, observation model, model updater, and ensemble po ...

  8. CVPR 2017 SANet:《SANet: Structure-Aware Network for Visual Tracking》论文笔记

    理解出错之处望不吝指正. 本文模型叫做SANet.作者在论文中提到,CNN模型主要适用于类间判别,对于相似物体的判别能力不强.作者提出使用RNN对目标物体的self-structure进行建模,用于提 ...

  9. ICCV 2017 UCT:《UCT: Learning Unified Convolutional Networks forReal-time Visual Tracking》论文笔记

    理解出错之处望不吝指正. 本文模型叫做UCT.就像论文题目一样,作者提出了一个基于卷积神经网络的end2end的tracking模型.模型的整体结构如下图所示(图中实线代表online trackin ...

  10. CVPR 2018 STRCF:《Learning Spatial-Temporal Regularized Correlation Filters for Visual Tracking》论文笔记

    理解出错之处望不吝指正. 本文提出的模型叫做STRCF. 在DCF中存在边界效应,SRDCF在DCF的基础上中通过加入spatial惩罚项解决了边界效应,但是SRDCF在tracking的过程中要使用 ...

最新文章

  1. pandas替换列值+1
  2. Android aidl 正确使用 callback的方式
  3. 精通python语言要多久-这样学可以精通Python语言
  4. css3新特性总结(视觉表现方面)
  5. C#窗口间传递消息(聊天记录)
  6. 在eclipse中使用第三方库总结
  7. mfc实验报告心得体会_mfc实验报告.doc
  8. 【BZOJ1500】[NOI2005]维修数列
  9. MySQL四种事务隔离级的说明
  10. php抓取视频教程,PHP抓取、分析国内视频网站的视频信息工具类_PHP
  11. Web2.0之Tag标签原理实现浅析
  12. 深度解密HTTP通信细节
  13. mtk刷机显示连接服务器失败,MTK刷机常见错误分析 报错代码解释3
  14. Win10专业工作站版本激活并获得数字权利的方法和密钥
  15. 学习使用php实现公历农历转换的方法代码
  16. WordPress-Tony极简免费单栏博客主题
  17. java基于安卓Android微信小程序的音乐论坛uniAPP小程序
  18. 最后防线:字节跳动HIDS分析
  19. VNC Viewer 远程 Unable to connect to VNC Server using your chosen securitysetting. 问题解决
  20. 有什么博客营销技巧?

热门文章

  1. 私域流量和公域流量的区别
  2. 微软拼音输入法 2003 精选版 怎么用
  3. Python组合数据类型
  4. 三种方法求解Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1,当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少。
  5. 微信怎么制作朋友圈H5链接
  6. android刷机工具mac版,Apeaksoft Android Toolkit for Mac(安卓数据恢复软件)
  7. Postman使用详解
  8. http是什么,其实很简单
  9. 学学习笔记:利用TCGA Assembler工具下载及处理数据
  10. 如何更改域计算机用户名和密码错误,win7加入域失败:未知的用户名或密码错误 | 绿萝...