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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人工智能 > pytorch >内容正文

pytorch

深度学习之 DCN(Deformable Convolution)-可变形卷积

發(fā)布時(shí)間:2023/12/20 pytorch 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 深度学习之 DCN(Deformable Convolution)-可变形卷积 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
  • Paper link:
    • http://openaccess.thecvf.com/content_ICCV_2017/papers/Dai_Deformable_Convolutional_Networks_ICCV_2017_paper.pdf
    • https://arxiv.org/pdf/1703.06211
  • Code link: https://github.com/msracver/Deformable-ConvNets

Abstract

如何有效地對幾何圖形的變化進(jìn)行建模一直是一個(gè)挑戰(zhàn),大體上有兩種處理方法:(1)構(gòu)建一個(gè)包含各種變化的數(shù)據(jù)集,其本質(zhì)是數(shù)據(jù)擴(kuò)增(2)使用具有形變不變性的特征和算法(如SIFT)。這兩種方法都有很大的局限性:幾何形變被假設(shè)是固定和已知的,這是一種先驗(yàn)信息,用這些已知的形變?nèi)ヌ幚砦粗男巫兪遣缓侠淼?#xff1b;手工設(shè)計(jì)的特征或算法無法應(yīng)對過度復(fù)雜的形變,即使該形變是已知的。近年來,CNNs在計(jì)算機(jī)視覺領(lǐng)域取得了飛速的發(fā)展和進(jìn)步,在圖像分類,語義分割,目標(biāo)檢測領(lǐng)域都有很好的應(yīng)用。然后鑒于CNNs固定的幾何結(jié)構(gòu),導(dǎo)致對幾何形變的建模受到限制。本文提出了兩個(gè)新模塊來提升CNNs的形變建模能力,稱為“deformable convolution”和“deformable ROI pooling”,這兩個(gè)方法都是基于在模塊中增加額外偏移量的空間采樣位置和從目標(biāo)任務(wù)中學(xué)習(xí)到偏移量且不需要額外的監(jiān)督。這些新的模塊可以很容易的取代現(xiàn)有CNNs的普通模塊并且利用反向傳播進(jìn)行端到端的訓(xùn)練,產(chǎn)生可變形的卷積神經(jīng)網(wǎng)絡(luò)。該方法在語義分割和目標(biāo)檢測上有很好的表現(xiàn)。

1. Introduction

CNNs對大型,未知形狀變換的建模存在固有的缺陷,這種缺陷來源于CNNs模塊固有的幾何結(jié)構(gòu):卷積單元對輸入特征圖的固定位置進(jìn)行采樣;池化層以固定的比例進(jìn)行池化;即使是ROI pooling也是將ROI分割到固定的bin中去。這些特性是有影響的,例如,在同一層Conv中,所有的激活單元的感受野是一樣的,但由于不同位置可能對應(yīng)著不同尺度或變形的物體,因此對尺度或者感受野大小進(jìn)行自適應(yīng)是進(jìn)行精確定位所需要的。為了解決或者減輕這個(gè)問題,本文提出了兩種新的模塊,可變形卷積(deformable conv)和可變形感興趣區(qū)域池化(deformable ROI Pooling),來提高對形變的建模能力。這兩個(gè)模塊都是基于一個(gè)平行網(wǎng)絡(luò)學(xué)習(xí)offset(偏移),使得卷積核在input feature map的采樣點(diǎn)發(fā)生偏移,集中于我們感興趣的區(qū)域或者目標(biāo)。通過研究發(fā)現(xiàn),標(biāo)準(zhǔn)卷積中的規(guī)則格點(diǎn)采樣是導(dǎo)致網(wǎng)絡(luò)難以適應(yīng)幾何形變的“罪魁禍?zhǔn)住?#xff0c;為了削弱這個(gè)限制,對卷積核中每個(gè)采樣點(diǎn)的位置都增加了一個(gè)偏移變量,可以實(shí)現(xiàn)在當(dāng)前位置附近隨意采樣而不局限于之前的規(guī)則格點(diǎn)。如下圖所示,是常見的采樣點(diǎn)和可變形卷積采樣的對比

(a)是常見的3x3卷積核的采樣方式,(b)是采樣可變形卷積,加上偏移量之后的采樣點(diǎn)的變化,(c)(d)是可變形卷積的特殊形式

2. Deformable Convolutional Networks

2.1 Deformable Convolution

**(1)**首先聲明一點(diǎn),在可變形卷積中,可變形卷積操作和池化操作都是2維的,都是在同一channel上進(jìn)行的,常規(guī)的卷積操作主要可以分為兩部分:(1)在輸入的feature map上使用規(guī)則網(wǎng)格R進(jìn)行采樣;(2)進(jìn)行加權(quán)運(yùn)算,R定義了感受野的大小和擴(kuò)張

R={(?1,?1),(?1,0),...,(0,1),(1,1)}R=\{(-1,-1),(-1,0),...,(0,1),(1,1)\} R={(?1,?1),(?1,0),...,(0,1),(1,1)}

對于在輸出的feature map上的每個(gè)位置P0,通過下列式子進(jìn)行計(jì)算:

其中,Pn是對R中所列位置的枚舉
**(2)**可變形卷積的操作是不同的,在可變形網(wǎng)絡(luò)的操作中,常規(guī)的規(guī)則網(wǎng)格R通過增加一個(gè)偏移量進(jìn)行擴(kuò)張,同樣的位置P0變?yōu)?#xff1a;

現(xiàn)在,采樣的位置變成了不規(guī)則位置,由于偏移量△Pn通常是小數(shù),因此我們通過雙線性插值法進(jìn)行實(shí)現(xiàn),公式為:

(3)拓展:關(guān)于雙線性插值
首先看,雙線性插值的作用,對圖像進(jìn)行縮放。假設(shè)原圖像大小為m*n,目標(biāo)圖像的大小為a*b,那么兩幅圖像的邊長比為m/a,n/b。注意,通常這個(gè)比例不是整數(shù),而非整數(shù)的坐標(biāo)是無法在圖像這種離散數(shù)據(jù)上使用的。雙線性插值通過尋找距離這個(gè)對應(yīng)坐標(biāo)最近的四個(gè)像素點(diǎn),來計(jì)算該點(diǎn)的值。比如,對應(yīng)的坐標(biāo)為(2.5,4.5),那么最近的像素是(2,4)(2,5)(3,4)(3,5)
若圖像為灰度圖像,那么(I,j)的灰度值可以通過以下公式計(jì)算:

其中,pi(i=1,2,3,4)為最近的四個(gè)像素點(diǎn),wi(i=1,2,3,4)為各點(diǎn)相應(yīng)權(quán)值
來看一下可變形卷積的網(wǎng)絡(luò)結(jié)構(gòu):如下圖所示,大體流程為,在輸入的feature map中,原始的通過sliding window得到的是綠框,引入可變形卷積后,我們把原來的卷積網(wǎng)路分為兩路,共享input feature map,其中上面的一路用一個(gè)額外的conv層來學(xué)習(xí)offset,得到H*W*2N的輸出offset,其中,2N的意思是有x,y兩個(gè)方向的偏移,得到這個(gè)之后,我們對原始卷積的每一個(gè)窗口,都不再是原來規(guī)整的sliding window(input feature map中的綠框)而是經(jīng)過平移后的window(input feature map中的籃框),取得數(shù)據(jù)后計(jì)算過程和常規(guī)卷積一樣,即input feature map和offset共同作為deformable conv層的輸入。

注意:這里有一個(gè)非常非常非常容易混淆的點(diǎn),所謂的deformable,到底deformable在哪?很多人可能以為deformable conv學(xué)習(xí)的是可變形的kernel,其實(shí)不是不是不是!本文并不是對kernel學(xué)習(xí)offset而是對feature的每個(gè)位置學(xué)習(xí)一個(gè)offset。

舉個(gè)例子來看:可變形卷積的流程為:

2.2 Deformable ROI Pooling

ROI Pooling模塊是two-stage中常見的池化方法,基于目標(biāo)檢測方法中所有的region proposal。將任意輸入大小的矩形調(diào)整為固定尺寸大小的feature。給定input feature map x 和一個(gè)大小為w*h,位于左上角的區(qū)域P0,ROI Pooling將會(huì)把這個(gè)ROI劃分為k*k個(gè)bins,同時(shí)輸出一個(gè)size為k*k的feature map y,可以用如下公式表示:

其中,nij是bin中像素的數(shù)量
有了這個(gè)基礎(chǔ),我們再來看可變形池化,公式如下:

相比普通ROI Pooling,同樣增加了一個(gè)offset,下圖為網(wǎng)絡(luò)結(jié)構(gòu):具體操作為,首先,通過普通的ROI Pooling得到一個(gè)feature map,如下圖中的綠色塊,通過得到的這個(gè)feature map,加上一個(gè)全連接層,生成每一個(gè)位置的offset,然后按照上面的公式得到△Pij,為了讓offset的數(shù)據(jù)和ROI 的尺寸匹配,需要對offset進(jìn)行微調(diào),此處不是重點(diǎn)。全連接層的參數(shù)可以通過反向傳播進(jìn)行學(xué)習(xí)。

How to use

首先回顧一下SOTA的CNN結(jié)構(gòu),可以概括為兩方面,首先,一個(gè)深度全卷積網(wǎng)絡(luò)用于對整張圖片產(chǎn)生feature map。其次,一個(gè)淺層的目標(biāo)明確的網(wǎng)絡(luò),從feature map產(chǎn)生我們需要的結(jié)果。下圖展示了標(biāo)準(zhǔn)的卷積和可變形卷積之間的對比,可以看到,在標(biāo)準(zhǔn)卷積中,圖中的區(qū)域表示在普通卷積和可變形卷積中的感受野。這張圖怎么看呢,首先看頂層的feature map,我們?nèi)蓚€(gè)激活點(diǎn)(分別在大羊和小羊身上),代表的是不同尺度和形狀。中間層:top層的feature map經(jīng)過3*3的卷積后,需要抽樣的一些點(diǎn)。最底層:再經(jīng)過一個(gè)3*3的卷積,需要采樣的點(diǎn)。通過對比可以明顯的看出,可變形卷積的采樣位置更符合物體本身的形狀和尺寸,而標(biāo)準(zhǔn)卷積的形式卻不能做到這一點(diǎn)。

下圖是一些實(shí)例對比:

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

總結(jié)

以上是生活随笔為你收集整理的深度学习之 DCN(Deformable Convolution)-可变形卷积的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。