本篇纯个人见解,如有错误请指出
文章素材及资料来源
【极市】李夏-语义分割中的自注意力机制和低秩重建[https://www.bilibili.com/video/BV11E411y7Dr]
流程图
左为NonLocal,右为A^2,其中N代表特征图中的像素数目,C代表channel数,HW为高宽,我们都知道C的数量一定是远小于N的数量的,K代表种类(也可能不是)
由于矩阵的乘法结合律,这两种算法计算出来的信息是差不多的
对比两个都计算复杂度,左边的复杂度相当于是NNC,右边为NCC
NonLocal
Q与K叉乘
进行了像素之间的Attention
之后再乘上V
A^2
K与V叉乘
对通道之间做Attention,打个比方,每个通道都是一张图,也就是每张图之间进行注意力计算,比如背景图与某个物体的图之间进行计算。
之后Q与其叉乘
总结
两种算法都实现了图中物体之间的attention,但计算复杂度完全不一样
并且第一种算法随着图像像素的提升,复杂程度也会不断增加
比如100x100x256的特征图
第一种复杂度为10000x10000x256=2.56e+10
第二种复杂度为10000x256x256=6.5536e+8
512x512x256的特征图
第一种为1.7e+13
第二种为1.7e+10