1. 程式人生 > >基於深度學的目標檢測方法二之基於候選框的方法

基於深度學的目標檢測方法二之基於候選框的方法

 

上篇內容介紹了一些基本的只是概念,這篇主要介紹一下運用這些基本概念產生的基於候選框的識別方法。

 

R-CNN

該方法作為深度學習用於物體識別的開山之作,後續很多基於候選框為基礎的方法都是在該方法上進行改進得到的。該方法的具體實現為:

(1):輸入一張圖片

(2):利用selective  search的方式從圖中選出2000個左右的Region proposal 。

(3):對每一個Region proposal內的圖片縮放至指定的大小並放入CNN中進行特徵提取,並將指定的特徵儲存下來。

(4):訓練一個SVM分類器,對儲存的特徵進行分類。

缺點:

(1):每一個框進行一次訓練,一副圖片有多個候選框就需要進行多次,因此速度慢。

(2):每個特徵儲存下來,浪費儲存空間。

(3):分類器的訓練和特徵提取的訓練被強行分離開,導致訓練分類器時沒有更新網路引數。

(4):圖片被強行縮放至指定的尺寸,會引起物體的形變。

 

Fast  R-CNN:

根據R-CNN的缺點,該方法採用先將一副圖片放入到卷積神經網路中生成對應的特徵即(feature map),然後將候選框的位置按照網路實現的方式對應到feature map中(上面提到的區域計算),接著在feature map中找出各個不同框包括的物體,送入SPP Net中使其得到相同大小的輸出。這樣就解決了每個候選框進行一次卷積以及圖片強行縮放的問題,通過卷積層共享以提高計算的速度。通過SPP將不同輸入變成了相同的輸出。最後通過softmax進行物體分類以及bounding box進行邊框迴歸以保證分類的過程和卷積的提取過程相一致。其具體步驟如下:

(1):輸入圖片並採用selective search演算法從圖片中選出對應的候選框。

(2):將圖片整體放入到CNN網路中得到feature map

(3):將候選框對映到feature map中找出不同的特徵大小

(4): 通過SPP Net將不同大小的feature 變成固定輸出大小並訓練分類器(softmax)和邊框迴歸(bounding box regression)

缺點:

(1):依然需要提前產生大量的候選框,該計算依然比較複雜。

Faster R-CNN

針對Fast R-CNN存在的問題,研究者提出了使用神經網路來完成候選框的提取以提高候選框的速度,減少候選框的數量,提高候選框的質量。也就是RPN Net的誕生,這樣就產生了Faster R-CNN,其具體實現步驟如下:

(1):輸入一張任意大小的圖片,

(2):將圖片的整體放入到CNN中得到對應的feature,

(3):使用RPN網路生成對應的proposal(300個),

(4):將proposal放入feature map中。

(5):使用ROI Pooling(一種特殊的SPP)將不同的feature map變成固定大小的輸出,並使用softmax和bounding  boxing進行迴歸。

 

                                           

                                            

 

缺點:

(1):ROI Pooling池化丟失了一定的細節資訊,

(2):過分依賴於RPN網路的錨點,固定尺寸對應變化的大小會存在較大差異導致收斂過慢,

(3):ROI Pooling後面用於目標識別的子網路對每個候選框都要處理一遍,訓練量大,並且後面的全連線層較多,

(4):ROI Pooling池化會打破平移不變性。

(5):ROI Pooling池化對應的一個點也許是原來的一個較大區域,因為此時一個大區域變成了一個固定的尺寸中的一個點。會導致空間量化太過粗糙。

(6):小目標檢測效能不佳

Mask R-CNN

Mask R-CNN主要是根據Faster R-CNN的最後一個問題,將ROI Pooling變成了ROI Align,減少ROI Pooling 過程中使用的量化過程。並且又增加了一個影象分割的過程,將分類,定位,分割三者聯合訓練,其在檢測精度和例項分割方面均近已達到目前比較高的水平。其具體流程如下:

                                          

 

相當於在整個Faster R-CNN中增加了一個mask branch 分支用來進行影象的分割,主體框架依然是Faster R-CNN,但此時使用的基礎網路是ResNext-101的結構,此結構有更大的分類效果。

其實Mask R-CNN的根本宗旨是Faster R-CNN加FCN(全卷積網路,沒有全連線層,全部是卷積計算),主要目的是完成影象畫素級別上的分割。至於ROI Align只是方法,是策略,是一種手段並不是Mask特有的。其流程大概如下:

                                            

關於Mask部分最後的幾層卷積採用了上取樣(尺寸變大),主要是為了保證圖片恢復至原圖的大小,進行畫素級別上的分割。

該方法例項分割準確,檢測精度高,但是例項分割的代價也很大

總結

上述過程是目前主要流行的基於候選框的物體檢測方法,其中使用較為廣泛的是Faster R-CNN和Mask R-CNN。 Mask R-CNN在理論精度上是目前基於候選框識別方法的最高水平。

但無論哪一種方式均存在一定的優缺點,Faster R-CNN雖然真正完成端到端的訓練測試,但是其模型較為複雜,小目標檢測不到,並且空間量化粗糙。Mask R-CNN雖然可以滿足例項分割,提高準確度,但是其分割的代價又比較大。

除此之外,無論是哪種基於候選框的檢測方法均存在一個缺點,就是由於卷積計算越靠後其一個點對應的原圖中的區域越大,換句話也就是說原圖中的一個較大範圍在隨著網路的加深,範圍慢慢變小甚至消失。所以只使用最後一層網路無法捕捉小目標物體。此時可以加入FPN網路使用高低特徵相結合的方式來解決。在mask結構的設計時將該網路加入了RPN層,即不止使用最後一個輸出的feature map進行RPN。所以他可以檢測小物體(具體可以見效果展示部分)。但是該方法是一個解決問題的通用方法絕不是Mask 特有的。