除了第 14.7 節中描述的單次多框檢測之外,基于區域的 CNN 或具有 CNN 特征的區域 (R-CNN) 也是將深度學習應用于對象檢測的許多開創性方法之一 (Girshick等人,2014 年)。在本節中,我們將介紹 R-CNN 及其一系列改進:fast R-CNN ( Girshick, 2015 )、faster R-CNN ( Ren et al. , 2015 )和掩模 R-CNN ( He等,2017)。由于篇幅有限,我們將只關注這些模型的設計。
14.8.1。R-CNN
R -CNN首先從輸入圖像中提取許多(例如,2000 個)region proposals (例如,anchor boxes 也可以被認為是 region proposals),標記它們的類別和邊界框(例如,offsets)。
(Girshick等人,2014 年)
然后使用 CNN 對每個候選區域執行前向傳播以提取其特征。接下來,每個區域提案的特征用于預測該區域提案的類別和邊界框。
圖 14.8.1 R-CNN 模型。
圖 14.8.1顯示了 R-CNN 模型。更具體地說,R-CNN包括以下四個步驟:
執行選擇性搜索以在輸入圖像上提取多個高質量區域建議 (Uijlings等人,2013 年)。這些提議的區域通常是在具有不同形狀和大小的多個尺度上選擇的。每個區域提案都將標有一個類別和一個真實邊界框。
選擇一個預訓練的 CNN 并在輸出層之前截斷它。resize每個region proposal到網絡需要的輸入大小,通過前向傳播輸出為region proposal提取的特征。
以每個region proposal的提取特征和標注類別為例。訓練多個支持向量機對對象進行分類,其中每個支持向量機單獨確定示例是否包含特定類。
以每個region proposal的提取特征和標注bounding box為例。訓練線性回歸模型來預測地面實況邊界框。
盡管 R-CNN 模型使用預訓練的 CNNs 來有效地提取圖像特征,但速度很慢。想象一下,我們從單個輸入圖像中選擇了數千個區域建議:這需要數千個 CNN 前向傳播來執行對象檢測。這種龐大的計算負載使得在實際應用中廣泛使用 R-CNN 變得不可行。
14.8.2。快速 R-CNN
R-CNN 的主要性能瓶頸在于每個 region proposal 的獨立 CNN 前向傳播,沒有共享計算。由于這些區域通常有重疊,獨立的特征提取會導致大量重復計算。Fast R-CNN相比 R-CNN的主要改進之一是 CNN 前向傳播僅在整個圖像上進行 ( Girshick, 2015 )。
圖 14.8.2快速 R-CNN 模型。
圖 14.8.2描述了快速 R-CNN 模型。其主要計算如下:
與 R-CNN 相比,在快速 R-CNN 中,CNN 用于特征提取的輸入是整個圖像,而不是單個區域建議。此外,這個 CNN 是可訓練的。給定輸入圖像,讓 CNN 輸出的形狀為 1×c×h1×w1.
假設選擇性搜索生成n區域提案。這些區域提議(不同形狀)在 CNN 輸出上標記感興趣區域(不同形狀)。然后這些感興趣的區域進一步提取相同形狀的特征(比如高度 h2和寬度w2指定)以便于連接。為了實現這一點,快速 R-CNN 引入了 感興趣區域 (RoI) 池化層:CNN 輸出和區域提議被輸入到該層,輸出形狀的級聯特征n×c×h2×w2為所有區域提案進一步提取。
使用全連接層,將連接的特征轉換為形狀的輸出n×d, 在哪里d取決于模型設計。
預測每個類別和邊界框n區域提案。更具體地說,在類和邊界框預測中,將全連接層輸出轉換為形狀的輸出 n×q(q是類的數量)和形狀的輸出n×4, 分別。類別預測使用 softmax 回歸。
fast R-CNN 中提出的感興趣區域池化層與7.5 節中介紹的池化層不同。在池化層中,我們通過指定池化窗口、填充和步幅的大小來間接控制輸出形狀。相反,我們可以直接在感興趣區域池化層中指定輸出形狀。
例如,讓我們將每個區域的輸出高度和寬度指定為h2和w2, 分別。對于形狀的任何感興趣區域窗口h×w, 這個窗口被分為 h2×w2子窗口的網格,其中每個子窗口的形狀大約是(h/h2)×(w/w2). 在實際應用中,任何一個子窗口的高和寬都要向上取整,最大的元素作為子窗口的輸出。因此,即使感興趣區域具有不同的形狀,感興趣區域池化層也可以提取相同形狀的特征。
作為說明性示例,在圖 14.8.3中,左上角 3×3感興趣的區域被選擇在4×4 輸入。對于這個感興趣的區域,我們使用2×2感興趣區域池化層以獲得2×2輸出。請注意,四個劃分的子窗口中的每一個都包含元素 0、1、4 和 5(5 是最大值);2 和 6(6 是最大值);8 和 9(9 是最大值);和 10。
圖 14.8.3 A2×2感興趣區域池化層。
下面我們演示感興趣區域池化層的計算。假設CNN提取的特征的高和寬 X都是4,并且只有一個通道。
import torch import torchvision X = torch.arange(16.).reshape(1, 1, 4, 4) X
tensor([[[[ 0., 1., 2., 3.], [ 4., 5., 6., 7.], [ 8., 9., 10., 11.], [12., 13., 14., 15.]]]])
from mxnet import np, npx npx.set_np() X = np.arange(16).reshape(1, 1, 4, 4) X
array([[[[ 0., 1., 2., 3.], [ 4., 5., 6., 7.], [ 8., 9., 10., 11.], [12., 13., 14., 15.]]]])
讓我們進一步假設輸入圖像的高度和寬度均為 40 像素,并且選擇性搜索在該圖像上生成兩個區域建議。每個區域建議由五個元素表示:其對象類,后跟(x,y)- 其左上角和右下角的坐標。
rois = torch.Tensor([[0, 0, 0, 20, 20], [0, 0, 10, 30, 30]])
rois = np.array([[0, 0, 0, 20, 20], [0, 0, 10, 30, 30]])
因為的高度和寬度X是1/10輸入圖像的高度和寬度,根據指定參數將兩個區域提議的坐標乘以0.1 spatial_scale 。然后將兩個感興趣區域分別標記X為 和。終于在X[:, :, 0:3, 0:3]X[:, :, 1:4, 0:4]2×2region of interest pooling,將每個感興趣區域劃分為子窗口的網格,進一步提取相同形狀的特征2×2.
torchvision.ops.roi_pool(X, rois, output_size=(2, 2), spatial_scale=0.1)
tensor([[[[ 5., 6.], [ 9., 10.]]], [[[ 9., 11.], [13., 15.]]]])
npx.roi_pooling(X, rois, pooled_size=(2, 2), spatial_scale=0.1)
array([[[[ 5., 6.], [ 9., 10.]]], [[[ 9., 11.], [13., 15.]]]])
14.8.3。更快的 R-CNN
為了在目標檢測中更加準確,快速 R-CNN 模型通常必須在選擇性搜索中生成大量區域建議。為了在不損失準確性的情況下減少區域建議,更快的 R-CNN提出用區域建議網絡 代替選擇性搜索(Ren等人,2015 年)。
圖 14.8.4更快的 R-CNN 模型。
圖 14.8.4顯示了更快的 R-CNN 模型。與fast R-CNN相比,faster R-CNN只是將region proposal方法從selective search改為region proposal network。模型的其余部分保持不變。區域建議網絡的工作步驟如下:
用一個3×3填充為 1 的卷積層將 CNN 輸出轉換為新的輸出c渠道。這樣,CNN提取的特征圖的空間維度上的每個單元都會得到一個新的長度為c.
以特征圖的每個像素為中心,生成多個不同尺度和縱橫比的anchor boxes并進行標注。
使用長度-c每個錨框中心的特征向量,預測該錨框的二元類(背景或對象)和邊界框。
考慮那些預測的邊界框,其預測的類是對象。使用非最大抑制去除重疊的結果。其余預測的對象邊界框是感興趣區域池化層所需的區域建議。
值得注意的是,作為更快的 R-CNN 模型的一部分,區域建議網絡與模型的其余部分聯合訓練。換句話說,Faster R-CNN的目標函數不僅包括目標檢測中的類和邊界框預測,還包括區域提議網絡中anchor boxes的二值類和邊界框預測。作為端到端訓練的結果,區域建議網絡學習如何生成高質量的區域建議,從而在減少從數據中學習的區域建議數量的情況下保持目標檢測的準確性。
14.8.4。Mask R-CNN
在訓練數據集中,如果對象的像素級位置也被標記在圖像上,mask R-CNN可以有效地利用這些詳細的標記來進一步提高對象檢測的準確性 ( He et al. , 2017 )。
圖 14.8.5 mask R-CNN 模型。
如圖14.8.5所示,mask R-CNN在faster R-CNN的基礎上進行了修改。具體來說,mask R-CNN 將感興趣區域池化層替換為感興趣區域 (RoI) 對齊 層。該感興趣區域對齊層使用雙線性插值來保留特征圖上的空間信息,更適合像素級預測。該層的輸出包含所有感興趣區域的相同形狀的特征圖。它們不僅用于預測每個感興趣區域的類和邊界框,還用于通過額外的全卷積網絡預測對象的像素級位置。本章后續部分將提供有關使用全卷積網絡預測圖像像素級語義的更多詳細信息。
14.8.5。概括
R-CNN從輸入圖像中提取出多個region proposals,使用一個CNN對每個region proposals進行前向傳播來提取其特征,然后使用這些特征來預測這個region proposals的類別和bounding box。
Fast R-CNN 相比 R-CNN 的一大改進是 CNN 前向傳播只對整幅圖像進行。它還引入了感興趣區域池化層,使得具有不同形狀的感興趣區域可以進一步提取相同形狀的特征。
Faster R-CNN 用聯合訓練的區域建議網絡代替了 Fast R-CNN 中使用的選擇性搜索,因此前者可以在減少區域建議數量的情況下保持目標檢測的準確性。
在Faster R-CNN的基礎上,mask R-CNN額外引入全卷積網絡,利用像素級標簽進一步提高目標檢測的準確率。
14.8.6。練習
我們能否將目標檢測框定為單個回歸問題,例如預測邊界框和類別概率?你可以參考YOLO模型的設計 (Redmon et al. , 2016)。
將單次射擊多框檢測與本節介紹的方法進行比較。它們的主要區別是什么?您可以參考Zhao等人的圖 2。(2019)。
-
cnn
+關注
關注
3文章
353瀏覽量
22336 -
pytorch
+關注
關注
2文章
808瀏覽量
13361
發布評論請先 登錄
相關推薦
評論