論文地址:https://arxiv.org/pdf/1811.11721v1.pdf code address: https://github.com/speedinghzl/CCNet
相關論文:https://arxiv.org/pdf/1904.09229.pdf 《XLSor: A Robust and Accurate Lung Segmentor on ChestX-Rays Using Criss-Cross Attention and CustomizedRadiorealistic Abnormalities Generation》
擴展論文:https://github.com/NVlabs/MUNIT https://arxiv.org/abs/1804.04732 《Multimodal Unsupervised Image-to-Image Translation》
看第二個論文時,使用了論文一作為分割網路,論文三作為數據增強的手段。其實論文三是 style transform, pixel2pixel 最新工作,以后再看。
論文二中使用了CCNet這個新的網絡結構,為了搞清楚CCA到底是怎么計算的,只能肯原始論文一:
這就是CCA的計算方式
H是一個 C通道 寬高 W,H的特征圖
從出發有四條路徑,最上邊的是 殘差結構 或者叫shortcut path(高速通道) 目的地是和Aggregation相加 那么這里 Aggregrateion就必須和H通樣的形狀 C*H*W
殘差結構就是公式(2)。 那個求和就是 符號部分就是Aggregation做的
要理解Aggregation就要看從H 分出的下三路
最下邊一路V沒什么好看的 直接對 H做1*1的卷積,輸出還是 和H相同的形狀 C*H*W
Q,K也是1*1卷積 只不過 通道數量是: C' < C 。
Q和K都是 C'*H*W 大小的特征圖
下邊就是高能的Affinity, 可以看到affinity后softmax得到A ,而A的結構是 (W+H-1)*W*H
A有 W+H-1個通道,所以Affinit后的結構也是 (W+H-1)*W*H
因為 A 和 Q K 的寬度和高度相同。每個位置u,u可以認為是二維特征圖w,h上的一個像素。
由於CNN的對稱性。只需要關注某一個位置u的計算方式即可。
這時候我們拿Q 上的一個位置 u ,我們知道在u這個位置看下去 是一個 C' 維度的向量。 記作Qu 維度 C‘
這時候要A中對應u的地方應該是由 Qu 和 K作用而來 ,由於A對應的維度是 (W+H-1)維
W+H-1 剛好是位置u 所在 行數+列數 方向的像元總數,自己算了兩次減去一次。 就是下圖中十字的形狀。這個十字形狀
就是H+W-1
那么從向量 Qu 和 K中的 H+W-1個向量 需要得到一個 (H+w-1)的向量
因為 Qu 和 K中的向量維度相同 我們把K中的H+W-1個向量 編號為 Ku1 ku2, ku(h+w-1)
那么 Au= ((Qu* Ku1 , Qu*Ku2, Qu*Ku3, Qu*Ku4, ... ,... Qu*Ku(h+w-1)) 就是這樣 Qu*Kui 表示 Qu和Kui的內積
其實這樣算完之后還在通道方向做了個softmax。
這樣就算把A算完了
A最終得到的形狀是 (H+W-1)*H*W 每個通道表示attention 因為經過softmax了,就是概率了。
接下來就是A和V的結合 Aggregation ,就是公式2的 求和部分
V的通道數是 C
那么這個和上邊的操作有點像,這次只不過從內積變成了 線性組合
這里方便起見以A為中心,
對應於位置u
從A看下去是 H+W-1維的向量
V中對應位置 u,同樣找到過他的橫豎兩條線段,同樣是個十字形狀有 H+W-1個向量 每個向量是 C維
這時候 用A中的 向量作為系數, 作用到 V中的H+W-1個向量 加起來,就是線性組合啊。 得到一個 C維的向量,這個向量是V中十字領域向量的線性組合
這樣Aggreation就是2是中的 求和一項做的完成 Aggreation。
以上就是CCA, 作者還證明了 兩個CCA就能夠獲取全局視野。不看了我。
效果很好,取得很好的結果。
CNN發明以來,各種矩陣操作。
問題是Aggregation部分不就是個卷積嗎,十字形狀的卷積。
通常的卷積是同位置不同通道的卷積的參數不同。
這個整的是不同位置的卷積核不同,但是在通道上相同。
汗啊,CNN快要被玩壞了。