deeplab V3 在皮肤检测,表面缺陷检测上的应用。
參考:https://blog.csdn.net/Guo_rongxin/article/details/79842895
參考:https://www.jianshu.com/p/952aae926d08
參考:https://zhuanlan.zhihu.com/p/40470298
論文:Rethinking Atrous Convolution for Semantic Image Segmentation
摘要
??本文中,我們再次討論帶孔卷積,一個調整卷積核感受野的強大工具,并且可以控制深度卷積神經網絡計算得到特征的分辨率,應用在圖像語義分割上。為了處理在多尺度條件下的語義分割難題,我們設計了串行和并行的帶孔卷積模塊,采用多種不同的孔洞步長來獲取多尺度的內容信息。除此之外,我們還提出了多層級空間金字塔式孔洞池化模塊,挖掘多尺度卷積特征,以及編碼了全局內容信息的圖像層特征,提升分割效果。我們還詳細闡述了實施細節,并分享了我們訓練自己系統的經驗。我們提出的“deeplabv3”系統比起我們以前的deeplab版本有了顯著的提高,在沒有使用全連接條件隨機場做后置處理的情況下達到媲美與其他模型在PASCAL VOC 2012圖像語義分割的性能。
1、引言
在這項工作中,我們重新研究帶孔卷積的應用,在級聯模塊和空間金字塔池化的框架下,使我們能夠有效地擴大filter的視野,以組合多尺度的圖片信息。特別是,我們提出的帶孔卷積模塊中多種孔的步長和批次歸一化層,發現在訓練中也非常重要。我們的實驗按級聯或并行排列模塊(特別實驗了帶孔的空間金字塔池化(ASPP)方法[ 11 ])。我們討論一個重要的現實問題,當應用3×3帶孔卷積時孔的步長非常大的時候,因為圖像邊界的影響就不能捕捉到長跨度的信息,事實上會退化為1×1的卷積,并提出將圖像級特征納入ASPP模塊。此外,我們分享了精心設計的一些技術細節和模型的訓練經驗,包括簡單而有效的自助抽樣法處理標簽稀少和標簽精細對象。在最后,我們提出的“DeepLabv3”模型,超越了我們以前的工作[ 10, 11 ],并且在沒有使用DenseCRF做最后的處理的情況下在PASCAL VOC 2012的測試集上達到了85.7%的正確率。
2、相關工作
常見的四種全卷積網絡
本文中,我們主要探索帶孔卷積作為一個上下文模塊和一個空間金字塔池化的工具。我們提出的框架是在各種場景中通用的,可以被應用在任何網絡當中。具體來說,我們復制了幾個最初的ResNet的最后部分然后把它們級聯在一起,而且也再次使用了包含幾個并行的帶孔卷積ASPP模塊。注意我們級聯的模塊被直接應用在特征映射上而不是結果映射。對于提出的模塊,我們經驗化地發現批次正規化訓練非常重要。為了更進一步捕獲全局上下文,我們提出增加ASPP帶有圖像級別的特征,與[58, 95]相似。
帶孔卷積:基于帶孔卷積的模型已經在語義分割領域被研究很多了。例如,[85]修改孔洞步長對捕獲長跨度信息影響的實驗。[84]在ResNet的最后2塊采用混合孔洞步長,而[18]進一步提議學習可變形的卷積,對輸入特征進行采樣加上學習到的偏移,產生帶孔卷積。為了進一步提高分割模型的準確率,利用圖像標注,利用視頻動作,結合深度信息。除此之外,帶孔卷積被應用到目標檢測上。
3、方法
帶孔卷積提取精細特征
對輸入特征x(二維信號)特征x進行帶孔卷積:
y [ i ] = ∑ k x [ i + r k ] w [ k ] y[i]=\sum_kx[i+rk]w[k] y[i]=k∑?x[i+rk]w[k]
其中,i為位置,y為對應位置輸出,w為卷積核權重,r為對輸入信號進行采樣的步長,等價于x和通過在兩個連續的filter值之間沿著各空間維度插入r-1個0得到上采樣filter進行卷積,標準卷積即為r=1的一種特殊形式。
深入了解帶孔卷積
帶孔卷積模塊串行級聯的設計
整個圖像的特征可以被集中在最后一個小分辨率的特征圖上,如上圖(a)所示。然而,連續的striding損害了細節信息,因此采用步長確定的帶孔卷積,按照輸出步長的要求而設計。這個模型中,實驗了級聯resnet到第7個模型(額外的模塊5、6、7是由模塊4復制而來)。
多網格方法 Multigrid
受到了采用不同大小網格層次結構的多重網格方法的啟發,我們提出的模型在block4和block7中采用了不同的空洞率。特別是,我們定義了 M u l t i _ G r i d = ( r 1 , r 2 , r 3 ) Multi\_Grid = ( r1, r2, r3) Multi_Grid=(r1,r2,r3),對于從模塊4到模塊7每個模塊有著獨立的單元步長。最終的帶孔步長對于卷積層來說與單元步長和對應的步長相乘的值相等。例如,當輸出步長為16, M u l t i _ G r i d = ( 1 , 2 , 4 ) Multi\_Grid = (1,2,4) Multi_Grid=(1,2,4),模塊4中三個卷積的步長將會分別等于 2 × ( 1 , 2 , 4 ) = ( 2 , 4 , 8 ) 2×( 1,2,4 ) =(2,4,8) 2×(1,2,4)=(2,4,8)。 f i n a l _ a t r o u s _ r a t e = M u l t i G r i d ? c o r r e s p o n d i n g r a t e final\_atrous\_rate = Multi Grid * corresponding rate final_atrous_rate=MultiGrid?correspondingrate.(每個Block有三個卷積層)
帶孔空間金字塔池化
空間金字塔池化在用不同尺度重復采樣特征提高精確率方面是有效的而且任意的尺度都對分割很有效果,本文在ASSP中加入BN。
隨著孔洞步長增加,歸一化計算3x3的filter的有效權重,此時特征映射為65x65。當孔洞步長比較小的時候,全部9個filter權重在特征映射上的大部分有效區內都有作用,而當孔洞步長增加時,3x3的filter逐漸退化為一個1x1的filter,因為只有中心的權重是有效的。
針對此問題,并將全局內容信息整合進模型中,我們采用圖像級特征。特別是,我們應用了全局平均池化處理模型的特征映射,將得到的圖像級特征輸入到一個有256個filter的 1×1 卷積(加入批次歸一化)中,然后將特征進行雙線性上采樣(bilinearly upsample)到特定的空間維度。最后,我們的改進的ASPP由一個 1×1 卷積,和三個 3×3卷積組成,步長為(6,12,18),輸出步長為16(所有的filter個數為256,并加入批次歸一化),如上圖5所示,(b)是圖像級的特征。 需要注意的是,當輸出步長為8時,步長將加倍。所有分支處理好的特征將會連接在一起通過另一個 1×1 卷積(也有著256個filter,加入批次歸一化),最后還有一個 1×1 卷積產生最終的分類。
4、實驗
imagenet上預訓練,bacbbone為resnet,tensorflow框架,pascal voc 2012語義分割數據集,評價方式為計算平均21類的預測像素的準確率(IOU)。
訓練
使用‘poly’學習率策略,初始學習率與 ( 1 ? i t e r / m a x _ i t e r ) p o w e r (1-iter/max\_iter)^{power} (1?iter/max_iter)power,power為0.9,裁剪尺寸為513。輸出步長為16,批次歸一化參數訓練得到衰減為0.9997。初始化學習率為0.007,在訓練集上訓練3萬次后固定批次歸一參數,使用輸出步長為8時,使用小點學習率0.001,在離線pascal voc 2012 trainval又訓練3萬次。
上采樣預測結果:輸出步長設置為8時,目標的真實結果被下采樣了8倍。我們發現使真實結果保持原來的尺寸非常重要,因此需要上采樣我們預測的結果,因為下采樣真實結果會除去掉沒有反向傳播的很好的標注細節。
數據擴張:我們通過隨機縮小或者放大輸入圖片(從0.5倍到2倍)和訓練時隨機左右反轉圖片來使數據擴張。
深入帶孔卷積
表1顯示采用output_stride=8在以更多內存使用的代價下有更好的性能
表2resnet50與resnet101對比
多網格:我們在ResNet-101上對幾個級聯的添加模塊應用多網格方法,如表3所示。單元步長,Multi_Grid = ( r1, r2, r3)被應用在所有添加的模塊當中。正如表中所示,我們觀察到使用多網格方法普遍比原來要好,單純地加倍單元步長沒有效果,同樣使用多網格方法隨著網絡變深,效果也更好。我們最好的模型是7層( r1, r2, r3)=(1,2,1)。
在驗證集上測試推廣的策略:開始模型是在輸出步長為16的基礎上訓練的,之后我們推斷,用輸出步長為8可以得到更多的特征映射的細節。如表4所示,當輸出步長為8時,我們用之前表現最好的級聯結構,7層( r1, r2, r3)=(1,2,1),準確率比步長為16時提高了1.39%。加入縮小放大輸入圖片和左右翻轉圖片的操作之后,準確率進一步提高(放大比例有{0.5, 0.75, 1.0, 1.25, 1.5, 1.75})。特別地,我們將多個尺度和翻轉圖像計算出的平均值作為最終的計算結果。
帶孔空間金字塔池化
使用調整好的批次歸一化參數和圖像尺度的特征。
ASPP:在表5中,我們實驗了在第4模塊包含多網格操作和圖像級別特征的ASPP模型。首先我們固定ASPP =(6,12,18)(即在三個并行的3×3 帶孔卷積分支規定步長分別為(6,12,18)),改變多網格的值。Multi_Grid = ( 1,2,1)的結果比Multi_Grid = ( 1,1,1)要好,不過這種步長下最好的Multi_Grid = ( 1,2,4)。如果再加一個并行的步長為24的帶孔卷積層來獲取更大范圍的上下文信息,準確率會稍微降低到0.12%。另一方面,在ASPP模型上加入圖像級別的特征是有效的,最終準確率達到了77.21%。
在驗證集上測試推廣的策略:相似的,我們將模型的輸出步長改為8。如表6所示,準確率增加了1.3%,加入縮小放大輸入圖片和左右翻轉圖片的操作之后,準確率進一步提高了0.94%和0.32%,ASPP最好的模型準確率為79.77%,比級聯帶孔卷積模型的最優值更高,因此選擇ASPP作為我們最終的模型。
和DeepLabv2對比:v3的級聯模型和ASPP模型在PASCAL VOC 2012的驗證集上表現都要比v2好,提升主要來自增加了調好的批次歸一化參數和更好地編碼多尺度上下文信息。
測試集上的結果和有效的自助抽樣法:我們注意到PASCAL VOC 2012數據集提供的標注信息比增加的數據集要更有質量,特別是自行車這一類。因此我們在測試集上測試之前先在PASCAL VOC 2012的訓練集和驗證集上進一步微調我們的模型。我們的模型是在輸出步長為8的情況下訓練的(因此標注細節得以保留),批次歸一化參數固定。除此之外,與[85,70]的pixel
hard example mining方法不同,我們用自助抽樣法處理不好訓練的圖片。特別是,我們在訓練集中復制了一些圖片,包含的類別不好訓練(自行車,椅子,桌子,盆栽和沙發)。如圖7所示,自助抽樣法對分割自行車很有效。最后,DeepLabv3在沒有用全連接條件隨機場預處理的情況下達到了85.7%的準確率,見圖7。
在JFT-300M上預訓練模型:收到[79]最近工作的啟發,我們進一步使用了已經在ImageNet和JFT-300M數據集上預訓練的ResNet-101模型,結果在PASCAL VOC 2012的測試集上達到了86.9%的準確率。
總結
我們的DeepLabv3模型使用了有著上采樣filter的帶孔卷積,來使特征映像更精確、捕獲長跨度的上下文信息。特別是為了編碼多尺度的信息,我們提出了級聯模塊使孔洞步長加倍,我們的帶孔空間金字塔池化模型增大了圖像級別的特征,探索filters的多個采樣率和感受野。我們的實驗結果表明DeepLabv3相較于之前的DeepLab模型有了極大的提高,達到媲美與其他模型在PASCAL VOC 2012圖像語義分割的性能。
總結
以上是生活随笔為你收集整理的deeplab V3 在皮肤检测,表面缺陷检测上的应用。的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: home
- 下一篇: who are you-实验吧1