来自CCNet的一种创新:语义分割中的十字交叉视觉注意力
写在文章开头
不知何故,我很喜欢CCNet这个名字,也许是因为读起来朗朗上口、清新的感觉。CCNet是对Non-local模块(有关Non-local可以参看我的这篇文章)改进与进一步应用的典范,因此我觉得有必要对其进行深入剖析。
CCNet的原作是CCNet: Criss-Cross Attention for Semantic Segmentation,大家有兴趣可以Google Scholar一下,这里我就不给出原文地址了。与以往一致,还是这句话:本篇文章用作我个人笔记,面向人群是我自己,因此一些我本人已经熟悉的知识便不会详述,所以文章的知识体系可能会显得不够系统。
看个大概
先从摘要说起。作者提出的CCNet可以以非常有效的方式捕获完整图像的上下文信息。具体而言,作者提出了一种新颖的图像信息捕捉方式——criss-cross attention模块(我译作十字交叉注意力模块,接下的文章简称为CCA),该模块可以从每个像素点的criss-cross path(我译作十字交叉路径,接下的文章简称为CCP)获取图像的上下文信息。接着,通过进一步的循环处理(加上循环后,CCA还称为recurrent CCA,简称为RCCA,后文有提及),每个像素最终都可以理顺完整图像像素间的依赖关系(是不是有Non-local模块的味道了)。此外,本文还引入了一个概念叫做类别一致性损失(category consistent loss,CCL),该损失可以增强CCA模块的识别能力。
接下来作者吹个不停:
- GPU memory friendly. Compared with the non-local block, the proposed recurrent criss-cross attention module requires 11× less GPU memory usage.
- High computational efficiency. The recurrent criss-cross attention significantly reduces FLOPs by about 85% of the non-local block.
- The state-of-the-art performance.
好了,这篇文章不用看也知道CCNet很厉害了。
后记
现在得出门一趟,先写到这里吧,晚上再来深入探讨CCNet及其实现。