44 物體檢測算法:R-CNN,SSD,YOLO【動手學深度學習v2】

目標檢測常用算法:
區(qū)域卷積神經(jīng)網(wǎng)絡
原理:1、使用啟發(fā)式搜索算法選擇錨框。2、將每個錨框視為一張圖片,使用卷積網(wǎng)絡抽取Feature。3、訓練SVM(向量機)用于類別分類。4、訓練線性回歸模型預測偏移。
注:圖中Category prediction是對錨框的類別進行判斷。Bounding box prediction是對偏移量進行判斷

但是每次選出的錨框大小可能會不同,如何將大小不同的錨框統(tǒng)一進行運算?
將各個錨框轉(zhuǎn)化為訓練用的batch:RoI興趣區(qū)域池化層。
RoI優(yōu)點:不管原錨框大小是多少,經(jīng)過RoI池化層后輸出的數(shù)據(jù)結(jié)構(gòu)都是相同的,可以放到一個batch中進行訓練。

此方法存在效率上的弊端,如果一張圖片上存在1000個錨框,每個錨框都要用CNN進行識別,則相當于識別了1000張圖片的計算量。
R-CNN的主要性能瓶頸在于,對每個提議區(qū)域,卷積神經(jīng)網(wǎng)絡的前向傳播是獨立的,而沒有共享計算。 由于這些區(qū)域通常有重疊,獨立的特征抽取會導致重復的計算。?Fast R-CNN?對R-CNN的主要改進之一,是僅在整張圖象上執(zhí)行卷積神經(jīng)網(wǎng)絡的前向傳播。
Fast RCNN:在RCNN的基礎上的改進,先對整個圖片進行CNN抽取特征。再用選擇性抽取CNN過的小圖獲得若干錨框。

為了較精確地檢測目標結(jié)果,F(xiàn)ast R-CNN模型通常需要在選擇性搜索中生成大量的提議區(qū)域。?Faster R-CNN?(Ren?et al., 2015)提出將選擇性搜索替換為區(qū)域提議網(wǎng)絡(region proposal network),從而減少提議區(qū)域的生成數(shù)量,并保證目標檢測的精度。

如果在訓練集中還標注了每個目標在圖像上的像素級位置,那么Mask R-CNN能夠有效地利用這些詳盡的標注信息進一步提升目標檢測的精度。

RCNN用于對高精度場景下的目標檢測

單發(fā)多框檢測(SSD)

原理:對網(wǎng)絡中的每一段都生成錨框
?此模型主要由基礎網(wǎng)絡組成,其后是幾個多尺度特征塊。 基本網(wǎng)絡用于從輸入圖像中提取特征,因此它可以使用深度卷積神經(jīng)網(wǎng)絡。 單發(fā)多框檢測論文中選用了在分類層之前截斷的VGG?(Liu?et al., 2016),現(xiàn)在也常用ResNet替代。 我們可以設計基礎網(wǎng)絡,使它輸出的高和寬較大。 這樣一來,基于該特征圖生成的錨框數(shù)量較多,可以用來檢測尺寸較小的目標。 接下來的每個多尺度特征塊將上一層提供的特征圖的高和寬縮?。ㄈ鐪p半),并使特征圖中每個單元在輸入圖像上的感受野變得更廣闊。
回想一下在?13.5節(jié)中,通過深度神經(jīng)網(wǎng)絡分層表示圖像的多尺度目標檢測的設計。 由于接近?圖13.7.1頂部的多尺度特征圖較小,但具有較大的感受野,它們適合檢測較少但較大的物體。 簡而言之,通過多尺度特征塊,單發(fā)多框檢測生成不同大小的錨框,并通過預測邊界框的類別和偏移量來檢測大小不同的目標,因此這是一個多尺度目標檢測模型。


YOLO(You Only Live Once)
為防止錨框重疊造成重復計算,YOLO將圖片均勻分成錨框,每個錨框預測若干邊緣框(反之有多個預測目標被同一錨框框住)

總結(jié):生成的無效錨框越少,識別速度就越快
無錨框識別:center net
知識補充:
多模型融合對提升準確率比較有用