1. 程式人生 > >Deformable Convolution Net論文筆記

Deformable Convolution Net論文筆記

  1. 論文大致背景及思路
    a. MSRA在2017年的作品,最近出了V2版本。
    b. 提出了兩個模組用於加強CNN對變形的適應能力。
    c. 對於幾何變化,目前有兩種方法:
    i. 構造一個足夠強的資料集
    ii. 使用一些具有旋轉變形不變性的特徵演算法,比如SIFT
    d. 上述方法有兩個問題:
    i. 我們假定了這些幾何變化都是固定且已知的,那麼在處理未知情況時,就無法很好地得到結果了。
    ii. 手工設計的特徵很難適應複雜的變化。
    e. 那麼強大如CNN,能否解決這個問題呢,答案也是否定的。由於CNN的結構中並不包含能處理幾何變化的模組,這就造成了在同一層上,所有的啟用單元的感受野都是一樣的。那麼,較高層就無法很好的在空間位置上進行語義的編碼,因為不同的位置可能對應著不同尺寸和變形的物體。
    f. 作者提出了deformable convolution 也就是在標準卷積中加入了增加了一層偏移量,使得可以響應不同形狀的物體。如下圖。偏移量通過輸入的特徵圖學習得到。
    在這裡插入圖片描述


    g. 第二個部分就是deformable RoI pooling。也是在普通的RoI pooling前對每一塊bin都增加了偏移量。也是從前一層學習得到。

  2. 網路結構
    a. Deformable Convolution:
    i. 對於標準卷積,我們可以如下定義:
    在這裡插入圖片描述
    其中:
    在這裡插入圖片描述
    ii. 而我們在其中加入偏移量,使得可以響應不同形狀位置。即

    在這裡插入圖片描述
    可以預料,這個偏移量大概率並不是一個整數,那麼我們該如何得到對應的位置的值呢。這裡使用雙線性插值:
    在這裡插入圖片描述
    在這裡插入圖片描述
    那麼這個該如何反向傳播呢,挖個坑,待推導。
    iii. 3*3的卷積核對應的deformable convolution示意圖如下:
    在這裡插入圖片描述

  3. 首先通過一個普通卷積,得到一個和輸入解析度一致的特徵圖,但是通道數翻倍,對應於X,Y兩個軸。然後再和輸入圖進行帶偏移量的卷積。
    b. Deformable RoI Pooling
    i. 首先普及一下RoI Pooling:對於每個W大小的RoI,我們把它劃分為k

    k個塊,然後對每一塊計算均值,得到一個kk的輸出。
    ii. 現在我們加上Deformable,也就是也加上一個偏移量。我們先進行一次pooling,然後通過一個全連線層買得到歸一化的偏移量。這裡對於偏移量的操作並不理解,挖坑。
    iii. PS RoI Pooling:這裡和RoI Pooling大不相同,我們要產生k
    k*(c+1)通道數的分數圖,對應於kk個bin和C個類。然後就是相似的給出2通道數的偏移值,對原本的分數圖加偏移量,得到結果。
    c. Deformable ConvNets:
    i. 由於上述模組的輸入輸出和標準模組是一樣的,所以可以直接替代對應的模組。訓練還是靠反向傳播。
    ii. 效果示意如下:
    在這裡插入圖片描述

    iii. 思路總體來源於根據目標任務,學習和新增偏移量,增大在卷積和池化時的空間取樣位置。

PS:這篇文章看的不太清楚,還需要通過看原始碼和反覆研讀才能透徹理解。