基於深度學習的目標檢測算法詳解(二):Faster R-CNN與Mask R-CNN

本教程由深度學習中文社區(Studydl.com)持續發佈與更新, 關注我頭條號, 發送私信"目標檢測"即可獲取文中算法實現代碼.

前言

在 (點擊可閱讀)中我們介紹了一下R-CNN與Fast R-CNN的算法原理, 在這篇文章中我們將接著介紹一下目標檢測算法中比較經典的Faster R-CNN與Mask R-CNN.

3, Faster R-CNN

上面兩種方法都依賴於Selective Search生成候選區域,十分耗時。考慮到CNN如此強大,Faster R-CNN提出使用CNN來得到候選區域。假設有兩個卷積神經網絡,一個是區域生成網絡,得到圖像中的各個候選區域,另一個是候選區域的分類和邊框迴歸網路。這兩個網絡的前幾層都要計算卷積,如果讓它們在這幾層共享參數,只是在末尾的幾層分別實現各自的特定的目標任務,那麼對一幅圖像只需用這幾個共享的卷積層進行一次前向卷積計算,就能同時得到候選區域和各候選區域的類別及邊框。

基於深度學習的目標檢測算法詳解(二):Faster R-CNN與Mask R-CNN

Faster R-CNN:在卷積後的特徵圖上使用Region Proposal Network

候選區域生成網絡(Region Proposal Network, RPN)如下,先通過對輸入圖像的數層卷積得到一個特徵圖像,然後在特徵圖像上生成候選區域。它使用一個n x n(n = 3)的滑動窗口,將局部的特徵圖像轉換成一個低維特徵, 預測k個的區域(cls層,2k個輸出)是否為候選區域和對應的k個邊框(reg層,4k個輸出)。這裡的k個區域被稱為錨(anchor), 對應著與滑動窗口具有相同的中心的不同大小和不同長寬比的矩形框。假設卷積後的特徵圖像大小為WxH,那麼一共有WHK個錨。這種特徵提取和候選區域生成的方法具有位移不變性。

基於深度學習的目標檢測算法詳解(二):Faster R-CNN與Mask R-CNN

對一個滑動窗口中的anchor預測候選區域

使用RPN得到候選區域後,對候選區域的分類和邊框迴歸仍然使用Fast R-CNN。這兩個網絡使用共同的卷積層。 由於Fast R-CNN的訓練過程中需要使用固定的候選區域生成方法,不能同時對RPN和Fast R-CNN使用反向傳播算法進行訓練。該文章使用了四個步驟完成訓練過程:1,單獨訓練RPN;2,使用步驟中1得到的區域生成方法單獨訓練Fast R-CNN; 3, 使用步驟2得到的網絡作為初始網絡訓練RPN;4, 再次訓練Fast R-CNN, 微調參數。

Faster R-CNN的精度和Fast R-CNN差不多,但是訓練時間和測試時間都縮短了10倍。

4, Mask R-CNN

Faster R-CNN 在物體檢測中已達到非常好的性能,Mask R-CNN在此基礎上更進一步:得到像素級別的檢測結果。 對每一個目標物體,不僅給出其邊界框,並且對邊界框內的各個像素是否屬於該物體進行標記。

基於深度學習的目標檢測算法詳解(二):Faster R-CNN與Mask R-CNN

Mask R-CNN: 像素級別的目標檢測

Mask R-CNN利用Faster R-CNN中已有的網絡結構,再添加了一個頭部分支,使用FCN對每個區域做二值分割。

基於深度學習的目標檢測算法詳解(二):Faster R-CNN與Mask R-CNN

Mask R-CNN還提出了兩個小的改進使分割的結果更好。第一,對各個區域分割時,解除不同類之間的耦合。假設有K類物體,一般的分割方法直接預測一個有K個通道的輸出,其中每個通道代表對應的類別。而Mask R-CNN預測K個有2個通道(前景和背景)的輸出,這樣各個類別的預測是獨立的。第二,Faster R-CNN中使用ROI Pooling之前的取整操作使特徵圖中所使用的ROI與原圖中ROI的位置不完全對應。在Fast和Faster R-CNN中,在使用ROI Pooling之前的特徵圖大小是原圖的1/16。假設一個ROI在原圖中的橫座標範圍是 W0到 W1,縱座標範圍是h0到 h1,那麼在特徵圖中該ROI的橫坐範圍是 W0/16到 w1/16, 縱座標範圍是 h0/16到 h1/16 , 取整得到 [w0/16],[w1/16],[h0/16],[h1/16]。這樣會導致Pooling前的特徵圖中的ROI與原圖中的ROI沒有完全對齊。這不會對分類和邊框迴歸造成大的影響,但是會影響分割的結果,因為沒有保持空間對應關係。Faster R-CNN不取整,使用雙線性插值得到 與原圖中ROI對應的特徵圖中的區域,保留座標的對應關係,該方法稱作ROIAlign.

文中所有代碼實現Demo均已收集, 關注我頭條號, 發送私信"目標檢測"即可獲取文中算法實現代碼.

本系列教程文章地址:

本系列已發表如下教程,點擊文末了解更多按鈕繼續閱讀, 同時關注我可在第一時間獲得最新教程.

基於深度學習的目標檢測算法詳解(二):Faster R-CNN與Mask R-CNN

基於深度學習的目標檢測算法詳解(二):Faster R-CNN與Mask R-CNN


分享到:


相關文章: