最近在讀一篇2017的CVPR的論文,Not All Pixels Are Equal: Difficulty-Aware Semantic Segmentation
via Deep Layer Cascade,並非所有像素都是相等的:通過深層級聯實現困難感知的語義分割。下面從論文進行細緻的分析。
摘要
我們提出了一個深層級聯(Layer cascade, LC)的方法來提高精度和分割速度。與那些多個模型組合的傳統模型級聯(Model cascade, MC)不一樣,層級聯將單個深層模型視爲多個子模型的級聯。訓練前期的子模型來處理簡單和高置信的區域,然後逐漸地將較難的區域前饋給下一個子模型進行處理。
深的層級聯
上圖是IRNet的網絡結構,即Inception-ResNet-v2,這個網絡不是這個論文提出,詳細的結構說明可以從網上查到。
作者將IRNet轉爲IRNet-LC,網絡結構如下圖所示。從結構能夠看出,對於那些已經確定標籤的結果,不用再進行下一步的分割,而下一次分割只處理那些不確定標籤的區域。
作者將整個網絡分爲3個階段。
第一階段,識別出像素標籤,其餘區域前傳。輸入一個的圖片,經過階段1的前三層+2層卷積,產生的特徵圖。對每個特徵圖,有21維的向量,對這個向量使用softmax函數進行歸一化。對於最高像素大於0.95的確定是最終結果,不再進行下一階段的傳遞。對於那些仍未被標記的像素區域傳入下一階段。
第二階段,識別出更加細緻的標籤,其餘區域前傳。方法同階段1
第三階段,確定最終標籤。根據更新的區域,計算最終標籤。
區域卷積
階段2和階段3只卷積那些需要前向處理的像素,也就是那些無法確定標籤的像素,下圖a表示了傳統區域卷積的形式。下圖b表示了區域卷積的形式。實現方法就是在卷積上面加了個掩膜(目標區域爲1,其他爲0)。區域卷積的濾波只在ROI上卷積,忽略其他區域,這樣能減少許多計算量,假設這個ROI爲。其他區域的值直接被設置爲0,類似的卷積很常見,Faster RCNN就是一個經典的例子。
特別的下圖c表示了區域卷積在殘差模型上的表示,。將卷積方式定義爲上述的區域卷積,反向傳播時只傳播目標區域導數即可。
總結
文章主要結構就是這樣,其核心就是區域卷積,將整個階段劃分爲3個階段,不斷地剔除已經標記出的結果,只進一步處理有效區域,這也是其速度快的核心原因。
對於其提高精度的說明,我認爲之前的網絡背景部分佔據了大量的信息,迭代時候背景誤差主導。而考慮區域之後,其實是目標主導,這樣能夠有效地對目標進行訓練,提高精度。
論文中作者給出的速度是42ms,使用的是Titan X顯卡,如果應用於嵌入式,實時性上還是需要繼續考慮的,但是區域卷積是個趨勢,後續也會繼續跟蹤相關文獻,進行進一步理解
備註:論文代碼只提供了區域卷積層的代碼,完整代碼沒有給出,但是根據論文自己其實也能復現,論文我主要關注其思想,具體細節只有復現才能知道,後續有相關不清楚的地方歡迎評論區討論,我會及時進行分析解答。