日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > pytorch >内容正文

pytorch

深度学习之DCN

發布時間:2023/12/16 pytorch 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 深度学习之DCN 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這篇文章介紹了一種可針對空間不變性的卷積方法,不同于常規的卷積網絡種卷積核和待提取feature map是相同的(假設dilation=1),可變形卷積(Deformable Convolution Networks)的待提取feature map可能是任意變形之后的一個個采樣點。DCN的提出使得網絡不再對經過變換之后的輸入敏感,即增加了空間不變性。

Note:

  • 本文只介紹論文中的可變形卷積部分,而沒有介紹論文中的可變形ROI池化部分
  • 參考目錄:
    ①深度學習可形變卷積
    ②源碼
    ③深度學習之 DCN(Deformable Convolution)-可變形卷積
    ④卷積神經網絡結構變化——可變形卷積網絡deformable convolutional networks

    Deformable Convolutional Networks

    • 1. Abstract
    • 2. DCN
      • 2.1. Classical convolution networks
      • 2.2. Proposed convolution networks
    • 3. Conclusion

    1. Abstract

    傳統的CNN網絡因為用固定的卷積核大小去提取同樣固定采樣窗口的特征,使得CNN的表現力受限于輸入空間變換帶來的影響。

  • 在本論文中,作者提出了一種和STN網絡高度相似的新模型——Deformable Convolution Network,他們都可以使得網絡具有空間不變性。
  • 作者介紹2種空間不變性結構:可變形卷積可變形ROI池化
  • DCN的核心思想就是在不增加額外的監督學習上,增加輸入feature map在采樣格點位置(location)上的位置偏移(offset),這個偏移和濾波器的參數W、bW、bWb一起通過梯度下降參數更新得到。
  • 本文提出的DCN可以直接取代我們平時使用的普通CNN結構來增加原本CNN不具備的空間不變性!
  • Note:

  • 空間不變性:當你輸入feature map發生變換時,空間不變性網絡會對抗這種變換,使得最后的輸出結果就和沒有發生變換之前的輸入feature map產生類似的結果。常見的變換如仿射變換(包括平移、旋轉、縮放、裁剪)、投影變換等warp方法。
  • 在經典視頻超分VESPCN中,也提出了一種STN變體的運動補償方法,其本質也是個空間變換網絡。
  • 本文提出的DCN是一個輕量級的網絡!
  • 2. DCN

    這一節開始正式介紹可變形卷積。
    可變形卷積總的來說就是在傳統CNN的基礎上,在輸入feature map(或輸入圖像)上的采樣格點上增加一個位置偏移,如下圖所示:
    但是濾波器的大小還是不變(?dilation\forall \;dilation?dilation),然后我們拿著這個卷積核的每一個格點去提取對應每一個新位置的特征點,這種方式對于卷積核來說就相當于無視你的變形,用通俗點的話來講,就算你特征點逃到(變形)到天涯海角(feature map上的新位置),還是可以把你抓回來(卷積核特征提取);這種無視變形的方式就等同于傳統的CNN對未變形圖像提取特征一樣。這一點其實是DCN和STN最大的不同,因為STN無視變形是通過反向采樣的思想實現的!

    所以DCN的關鍵就是這個可學習的偏移量Δ\DeltaΔ,這個offset是通過一次卷積得到的,而這個額外的卷積層可以通過最后的Loss經過梯度反傳參數更新來學習出Δ\DeltaΔ


    接下來我們進一步了解2D-DCN是怎么實現的,3D可變形卷積可以直接通過2D遷移延申得到。

    2.1. Classical convolution networks

    經典的CNN包括2個步驟:

  • 在輸入feature map XXX上使用固定形狀的卷積核進行采樣,我們設3×33\times 33×3格點坐標R={(?1,?1),(?1,0),?,(0,1),(1,1)}\mathcal{R}=\{(-1,-1), (-1,0), \cdots, (0, 1), (1,1)\}R={(?1,?1),(?1,0),?,(0,1),(1,1)},如下圖所示(dilation=1):
  • 將輸入特征和濾波器參數W、bW、bWb做乘加運算得到輸出feature map YYY。具體的,對于輸出feature map上每一個格點位置p0p_0p0?,遍歷卷積核中每一個格點pn∈Rp_n\in\mathcal{R}pn?R,乘加運算為:Y(p0)=∑pn∈RW(pn)?X(p0+pn)+b(pn).(1)Y(p_0) = \sum_{p_n\in\mathcal{R}} W(p_n)\cdot X(p_0 + p_n) + b(p_n) \tag{1}.Y(p0?)=pn?R?W(pn?)?X(p0?+pn?)+b(pn?).(1)
  • Note:

  • 輸出feature map上的點p0p_0p0?就相當于對應到給輸入feature map做采樣的卷積核窗口中位置(0,0)(0,0)(0,0)
  • 2.2. Proposed convolution networks

    在DCN中,就是在上述式(1)中添加了一個位置偏移項Δpn\Delta p_nΔpn?,其中n={1,2,?,N=∣R∣}n=\{1,2, \cdots, N=|\mathcal{R}|\}n={1,2,?,N=R},具體公式如下:
    Y(p0)=∑pn∈RW(pn)?X(p0+pn+Δpn)+b(pn)=∑pn∈RW(pn)?X(p)+b(pn),p=p0+pn+Δpn.(2)Y(p_0) = \sum_{p_n\in\mathcal{R}}W(p_n)\cdot X(p_0 + p_n + {\color{yellowgreen}\Delta p_n}) + b(p_n) = \sum_{p_n\in\mathcal{R}}W(p_n)\cdot X(p) + b(p_n),\\ p=p_0 + p_n + \Delta p_n.\tag{2} Y(p0?)=pn?R?W(pn?)?X(p0?+pn?+Δpn?)+b(pn?)=pn?R?W(pn?)?X(p)+b(pn?),p=p0?+pn?+Δpn?.(2)
    Note:

  • DCN中卷積核仍然是保持和經典CNN一樣的,比如3×33\times 33×3一樣的形狀,DCN變的只是輸入feature map上的采樣點形狀,而不是形變kernel!
  • 這里的W、bW、bWb是可變形卷積參數,而不是學習偏移量的經典卷積參數,那個參數是額外的。
  • 其中偏移量Δpn\Delta p_nΔpn?就是通過學習得到,其值通常是個浮點數,這樣會使得最終在輸入feature map上的格點ppp也是個小數,因此接下來和STN中的Differentiable sampling環節一模一樣,是個重采樣過程:我們對X(p)X(p)X(p)進行雙線性插值,來獲取這個在輸入feature map上的非整數坐標位置的像素值:
    X(p)=∑qG(q,p)?X(q).(3)X(p) = \sum_q G(q, p)\cdot X(q).\tag{3} X(p)=q?G(q,p)?X(q).(3)其中qqqXXX上的整數坐標p為XXX上浮點坐標G(?,?)G(\cdot,\cdot)G(?,?)為雙線性插值函數。

    本文中的GGG和STN中的雙線性插值函數是一樣的,使用可導的maxmaxmax函數:
    G(q,p)=g(qx,px)?g(qy,py).G(q,p) = g(q_x, p_x)\cdot g(q_y, p_y). G(q,p)=g(qx?,px?)?g(qy?,py?).其中,g(a,b)=max(0,1?∣a?b∣)g(a,b) = max(0, 1-|a-b|)g(a,b)=max(0,1?a?b),所以公式(3)可以轉變成:
    X(p)=∑qX(q)?max(0,1?∣qx?px∣)?max(0,1?∣qy?py∣).(4)X(p) = \sum_q X(q) \cdot max(0, 1-|q_x-p_x|) \cdot max(0, 1-|q_y-p_y|).\tag{4} X(p)=q?X(q)?max(0,1?qx??px?)?max(0,1?qy??py?).(4)這個公式怎么理解呢?其實和我們理解的雙線性插值的思想是一樣的,如下圖所示:

    PPP為亞像素,其坐標為浮點坐標,我們遍歷所有整數坐標QQQ。如果Q、PQ、PQP的距離大于1,這樣的整數坐標QQQ我們就不要,給他賦予0的權重;相反,如果Q、PQ、PQP的橫軸和縱軸距離均小于1,如上圖的Q11、Q12、Q21、Q22Q_{11}、Q_{12}、Q_{21}、Q_{22}Q11?Q12?Q21?Q22?所示,那我們就選用他們這4格點,這里maxmaxmax函數力之所以寫了"1",就是要保持QQQ是離PPP最近的4個格點。更進一步,如下圖所示:

    這4個點里面,離PPP最近的點被賦予最大的權重,即Q12Q_{12}Q12?,它的權值就相當于是對角綠色快的面積,Q21Q_{21}Q21?PPP最遠,所以其權重是其對角的米黃色塊面積,Q11、Q22Q_{11}、Q_{22}Q11?Q22?也是同理。

    到這DCN的流程就走完了,接下來我們看下DCN總體結構和一些細節的介紹。



    如上圖所示就是DCN網絡的總體結構:

  • 整個DCN網絡包括2個卷積過程:①可變形卷積,卷積核為3×33\times 33×3,但是采樣點ppp被偏移量變成了不規則的形狀,此外卷積核和現在的一般卷積核是一模一樣的。②經典的卷積過程,輸入是和可變形卷積一樣的輸入feature map,offset輸出feature map和輸入具有一樣的高和寬。

  • Offset輸出feature map的深度為2N,N=∣R∣2N,N=|\mathcal{R}|2N,N=R,這里的“2”指的是每個位置有x、yx、yxy軸兩個方向;這里的"N"指的是卷積核的所有參數FH×HWFH\times HWFH×HW。具體解釋如下:論文中Figure 2表達不夠清晰,2N2N2N個offset feature map應該是一張輸入feature map產生,也就是說,對于通道數為CCC的輸入feature map,產生的所有offset輸出feature map一共有對應的C?2NC*2NC?2N張!接下來我們分析下上圖所示1張輸入feature map情況下,產生的offset輸出feature map上每一個像素點(1,2N,1,1)(1, 2N, 1, 1)(1,2N,1,1)通過Pixel Shuffle之后就產生了222(N×N)(\sqrt{N}\times \sqrt{N})(N?×N?)大小的偏移量Δpnx、Δpny\Delta p_n^x、\Delta p_n^yΔpnx?Δpny?,分別表示x、yx、yxy軸方向的偏移量,接著兩者均與原輸入feature map的位置相加,即與輸入feature map上的采樣位置相結合得到新的采樣位置(上圖藍色小框),然后根據式(2)就可以獲得Y(p0)Y(p_0)Y(p0?)了。

  • DCN濾波器WWW的訓練和offset中濾波器www的訓練是同時進行的:?Y(p0)?W(pn)=∑pn∈RX(p0+pn+Δpn)?Y(p0)?w(pn)=?Y(p0)?X(p)??X(p)?p??p?Δpn??Δpn?w(pn)\frac{\partial{Y(p_0)}}{\partial{W(p_n)}} = \sum_{p_n\in\mathcal{R}}X(p_0 + p_n + \Delta p_n)\\ \frac{\partial{Y(p_0)}}{\partial{w(p_n)}}=\frac{\partial{Y(p_0)}}{\partial{X(p)}}\cdot\frac{\partial{X(p)}}{\partial{p}}\cdot\frac{\partial{p}}{\partial{\Delta p_n}}\cdot\frac{\partial{\Delta p_n}}{\partial{w(p_n)}}?W(pn?)?Y(p0?)?=pn?R?X(p0?+pn?+Δpn?)?w(pn?)?Y(p0?)?=?X(p)?Y(p0?)???p?X(p)???Δpn??p???w(pn?)?Δpn??其中?X(p)?p\frac{\partial{X(p)}}{\partial{p}}?p?X(p)?通過雙線性插值式(4)使用次梯度下降獲得。DCN之所以是可導的,或者說STN為何是可導的,是因為如果沒有雙線性插值的話,我們上述的所有操作不是對feature map操作的,而是對離散的feature position(位置坐標)操作的,這顯然無法通過深度網絡來訓練學習的,而增加了雙線性插值之后,除了解決亞像素值的問題以外,最重要的就是使得整個網絡變得可導了,使得兩個卷積網絡的參數都可以通過梯度反傳更新學習!

  • 3. Conclusion

  • 本文主要介紹了2D可變形卷積的原理,DCN通過學習一個offset位置偏移網絡,使得學習到的位置偏移可以直接和輸入feature map相結合,從而當標準的卷積核進行采樣的時候,可以采樣到變形之后的特征信息,這就相當于使用標準的卷積核對未變形之前的特征信息進行提取,從而使得網絡具有空間不變性。
  • 需要注意的是,可變形卷積中變形的是輸入feature map,而不是kernel!
  • DCN和STN核心思想高度雷同,都是為了解決傳統CNN網絡在處理變換輸入條件下性能下降的問題。
  • DCN中的重采樣環節使得整個DCN變得可導,從而讓DCN成為一個可學習得輕量級網絡。
  • 總結

    以上是生活随笔為你收集整理的深度学习之DCN的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。