deeplab hole algorithm


最近看了幾篇文章,其中均用到了hole algorithm。

最早用的就是deeplab的文章了,Semantic Image Segmentation with Deep Convolutional Nets and Fully Connected CRFS  這篇文章和fcn不同的是,在最后產生score map時,不是進行upsampling,而是采用了hole algorithm,就是在pool4和pool5層,步長由2變成1,必然輸出的score map變大了,但是receptive field也變小了,為了不降低receptive field,怎么做呢?利用hole algorithm,將卷積weights膨脹擴大,即原來卷積核是3x3,膨脹后,可能變成7x7了,這樣receptive field變大了,而score map也很大,即輸出變成dense的了。

這么做的好處是,輸出的score map變大了,即是dense的輸出了,而且receptive field不會變小,而且可以變大。這對做分割、檢測等工作非常重要。

基於這個做檢測的文章:SSD: Single Shot MultiBox Detector    

接下來做分割的文章:Learning Dense Convolutional Embeddings for Semantic Segmentation      Multi-Scale Context Aggregation by Dilated Convolutions

 

后來經同事提醒,回頭看了看xiaogang wang的文章,Highly Efficient Forward and Backward Propagation of Convolutional Neural Networks for PixelwiseClassification 確實是一樣的,但是他們的這篇文章引用率卻不咋地啊,可能也和他們的開源態度有關系吧,他們只放出來部分代碼,沒誠心啊。

 

 

和同事討論這個算法,我同事覺得這個后面的卷積核的變化必須和前面的pooling協調使用。可我始終覺得沒有這個限定啊,目前都是這樣用,是因為基本上都是用pooling進行降維,而不是convlution,感覺從文章里看也是沒這個限定啊。當然如果能協調使用,就最大限度保證了位置信息,但是pooling步長變化了,其實嚴格來講,已經不完全和之前的模型完全一樣了,已經有變化了,但是如果不協調使用的話,變化就會更大了。而且如果從receptive field的角度來講,其實是可以變化的,也就是說可以把receptive field變大,而且可以變的很大,而不是僅僅保持不變小,感覺其實hole algorithm的存在,一方面原因也是不想讓receptive field變小。

 

這兩篇文章都是我講的,估計過幾天我又忘記了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM