除了第 14.7 節(jié)中描述的單次多框檢測(cè)之外,基于區(qū)域的 CNN 或具有 CNN 特征的區(qū)域 (R-CNN) 也是將深度學(xué)習(xí)應(yīng)用于對(duì)象檢測(cè)的許多開(kāi)創(chuàng)性方法之一 (Girshick等人,2014 年)。在本節(jié)中,我們將介紹 R-CNN 及其一系列改進(jìn):fast R-CNN ( Girshick, 2015 )、faster R-CNN ( Ren et al. , 2015 )和掩模 R-CNN ( He等,2017)。由于篇幅有限,我們將只關(guān)注這些模型的設(shè)計(jì)。
14.8.1。R-CNN
R -CNN首先從輸入圖像中提取許多(例如,2000 個(gè))region proposals (例如,anchor boxes 也可以被認(rèn)為是 region proposals),標(biāo)記它們的類別和邊界框(例如,offsets)。
(Girshick等人,2014 年)
然后使用 CNN 對(duì)每個(gè)候選區(qū)域執(zhí)行前向傳播以提取其特征。接下來(lái),每個(gè)區(qū)域提案的特征用于預(yù)測(cè)該區(qū)域提案的類別和邊界框。
圖 14.8.1 R-CNN 模型。
圖 14.8.1顯示了 R-CNN 模型。更具體地說(shuō),R-CNN包括以下四個(gè)步驟:
執(zhí)行選擇性搜索以在輸入圖像上提取多個(gè)高質(zhì)量區(qū)域建議 (Uijlings等人,2013 年)。這些提議的區(qū)域通常是在具有不同形狀和大小的多個(gè)尺度上選擇的。每個(gè)區(qū)域提案都將標(biāo)有一個(gè)類別和一個(gè)真實(shí)邊界框。
選擇一個(gè)預(yù)訓(xùn)練的 CNN 并在輸出層之前截?cái)嗨?。resize每個(gè)region proposal到網(wǎng)絡(luò)需要的輸入大小,通過(guò)前向傳播輸出為region proposal提取的特征。
以每個(gè)region proposal的提取特征和標(biāo)注類別為例。訓(xùn)練多個(gè)支持向量機(jī)對(duì)對(duì)象進(jìn)行分類,其中每個(gè)支持向量機(jī)單獨(dú)確定示例是否包含特定類。
以每個(gè)region proposal的提取特征和標(biāo)注bounding box為例。訓(xùn)練線性回歸模型來(lái)預(yù)測(cè)地面實(shí)況邊界框。
盡管 R-CNN 模型使用預(yù)訓(xùn)練的 CNNs 來(lái)有效地提取圖像特征,但速度很慢。想象一下,我們從單個(gè)輸入圖像中選擇了數(shù)千個(gè)區(qū)域建議:這需要數(shù)千個(gè) CNN 前向傳播來(lái)執(zhí)行對(duì)象檢測(cè)。這種龐大的計(jì)算負(fù)載使得在實(shí)際應(yīng)用中廣泛使用 R-CNN 變得不可行。
14.8.2。快速 R-CNN
R-CNN 的主要性能瓶頸在于每個(gè) region proposal 的獨(dú)立 CNN 前向傳播,沒(méi)有共享計(jì)算。由于這些區(qū)域通常有重疊,獨(dú)立的特征提取會(huì)導(dǎo)致大量重復(fù)計(jì)算。Fast R-CNN相比 R-CNN的主要改進(jìn)之一是 CNN 前向傳播僅在整個(gè)圖像上進(jìn)行 ( Girshick, 2015 )。
圖 14.8.2快速 R-CNN 模型。
圖 14.8.2描述了快速 R-CNN 模型。其主要計(jì)算如下:
與 R-CNN 相比,在快速 R-CNN 中,CNN 用于特征提取的輸入是整個(gè)圖像,而不是單個(gè)區(qū)域建議。此外,這個(gè) CNN 是可訓(xùn)練的。給定輸入圖像,讓 CNN 輸出的形狀為 1×c×h1×w1.
假設(shè)選擇性搜索生成n區(qū)域提案。這些區(qū)域提議(不同形狀)在 CNN 輸出上標(biāo)記感興趣區(qū)域(不同形狀)。然后這些感興趣的區(qū)域進(jìn)一步提取相同形狀的特征(比如高度 h2和寬度w2指定)以便于連接。為了實(shí)現(xiàn)這一點(diǎn),快速 R-CNN 引入了 感興趣區(qū)域 (RoI) 池化層:CNN 輸出和區(qū)域提議被輸入到該層,輸出形狀的級(jí)聯(lián)特征n×c×h2×w2為所有區(qū)域提案進(jìn)一步提取。
使用全連接層,將連接的特征轉(zhuǎn)換為形狀的輸出n×d, 在哪里d取決于模型設(shè)計(jì)。
預(yù)測(cè)每個(gè)類別和邊界框n區(qū)域提案。更具體地說(shuō),在類和邊界框預(yù)測(cè)中,將全連接層輸出轉(zhuǎn)換為形狀的輸出 n×q(q是類的數(shù)量)和形狀的輸出n×4, 分別。類別預(yù)測(cè)使用 softmax 回歸。
fast R-CNN 中提出的感興趣區(qū)域池化層與7.5 節(jié)中介紹的池化層不同。在池化層中,我們通過(guò)指定池化窗口、填充和步幅的大小來(lái)間接控制輸出形狀。相反,我們可以直接在感興趣區(qū)域池化層中指定輸出形狀。
例如,讓我們將每個(gè)區(qū)域的輸出高度和寬度指定為h2和w2, 分別。對(duì)于形狀的任何感興趣區(qū)域窗口h×w, 這個(gè)窗口被分為 h2×w2子窗口的網(wǎng)格,其中每個(gè)子窗口的形狀大約是(h/h2)×(w/w2). 在實(shí)際應(yīng)用中,任何一個(gè)子窗口的高和寬都要向上取整,最大的元素作為子窗口的輸出。因此,即使感興趣區(qū)域具有不同的形狀,感興趣區(qū)域池化層也可以提取相同形狀的特征。
作為說(shuō)明性示例,在圖 14.8.3中,左上角 3×3感興趣的區(qū)域被選擇在4×4 輸入。對(duì)于這個(gè)感興趣的區(qū)域,我們使用2×2感興趣區(qū)域池化層以獲得2×2輸出。請(qǐng)注意,四個(gè)劃分的子窗口中的每一個(gè)都包含元素 0、1、4 和 5(5 是最大值);2 和 6(6 是最大值);8 和 9(9 是最大值);和 10。
圖 14.8.3 A2×2感興趣區(qū)域池化層。
下面我們演示感興趣區(qū)域池化層的計(jì)算。假設(shè)CNN提取的特征的高和寬 X都是4,并且只有一個(gè)通道。
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.]]]])
讓我們進(jìn)一步假設(shè)輸入圖像的高度和寬度均為 40 像素,并且選擇性搜索在該圖像上生成兩個(gè)區(qū)域建議。每個(gè)區(qū)域建議由五個(gè)元素表示:其對(duì)象類,后跟(x,y)- 其左上角和右下角的坐標(biāo)。
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]])
因?yàn)榈母叨群蛯挾萖是1/10輸入圖像的高度和寬度,根據(jù)指定參數(shù)將兩個(gè)區(qū)域提議的坐標(biāo)乘以0.1 spatial_scale 。然后將兩個(gè)感興趣區(qū)域分別標(biāo)記X為 和。終于在X[:, :, 0:3, 0:3]X[:, :, 1:4, 0:4]2×2region of interest pooling,將每個(gè)感興趣區(qū)域劃分為子窗口的網(wǎng)格,進(jìn)一步提取相同形狀的特征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
為了在目標(biāo)檢測(cè)中更加準(zhǔn)確,快速 R-CNN 模型通常必須在選擇性搜索中生成大量區(qū)域建議。為了在不損失準(zhǔn)確性的情況下減少區(qū)域建議,更快的 R-CNN提出用區(qū)域建議網(wǎng)絡(luò) 代替選擇性搜索(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。模型的其余部分保持不變。區(qū)域建議網(wǎng)絡(luò)的工作步驟如下:
用一個(gè)3×3填充為 1 的卷積層將 CNN 輸出轉(zhuǎn)換為新的輸出c渠道。這樣,CNN提取的特征圖的空間維度上的每個(gè)單元都會(huì)得到一個(gè)新的長(zhǎng)度為c.
以特征圖的每個(gè)像素為中心,生成多個(gè)不同尺度和縱橫比的anchor boxes并進(jìn)行標(biāo)注。
使用長(zhǎng)度-c每個(gè)錨框中心的特征向量,預(yù)測(cè)該錨框的二元類(背景或?qū)ο螅┖瓦吔缈颉?/p>
考慮那些預(yù)測(cè)的邊界框,其預(yù)測(cè)的類是對(duì)象。使用非最大抑制去除重疊的結(jié)果。其余預(yù)測(cè)的對(duì)象邊界框是感興趣區(qū)域池化層所需的區(qū)域建議。
值得注意的是,作為更快的 R-CNN 模型的一部分,區(qū)域建議網(wǎng)絡(luò)與模型的其余部分聯(lián)合訓(xùn)練。換句話說(shuō),F(xiàn)aster R-CNN的目標(biāo)函數(shù)不僅包括目標(biāo)檢測(cè)中的類和邊界框預(yù)測(cè),還包括區(qū)域提議網(wǎng)絡(luò)中anchor boxes的二值類和邊界框預(yù)測(cè)。作為端到端訓(xùn)練的結(jié)果,區(qū)域建議網(wǎng)絡(luò)學(xué)習(xí)如何生成高質(zhì)量的區(qū)域建議,從而在減少?gòu)臄?shù)據(jù)中學(xué)習(xí)的區(qū)域建議數(shù)量的情況下保持目標(biāo)檢測(cè)的準(zhǔn)確性。
14.8.4。Mask R-CNN
在訓(xùn)練數(shù)據(jù)集中,如果對(duì)象的像素級(jí)位置也被標(biāo)記在圖像上,mask R-CNN可以有效地利用這些詳細(xì)的標(biāo)記來(lái)進(jìn)一步提高對(duì)象檢測(cè)的準(zhǔn)確性 ( He et al. , 2017 )。
圖 14.8.5 mask R-CNN 模型。
如圖14.8.5所示,mask R-CNN在faster R-CNN的基礎(chǔ)上進(jìn)行了修改。具體來(lái)說(shuō),mask R-CNN 將感興趣區(qū)域池化層替換為感興趣區(qū)域 (RoI) 對(duì)齊 層。該感興趣區(qū)域?qū)R層使用雙線性插值來(lái)保留特征圖上的空間信息,更適合像素級(jí)預(yù)測(cè)。該層的輸出包含所有感興趣區(qū)域的相同形狀的特征圖。它們不僅用于預(yù)測(cè)每個(gè)感興趣區(qū)域的類和邊界框,還用于通過(guò)額外的全卷積網(wǎng)絡(luò)預(yù)測(cè)對(duì)象的像素級(jí)位置。本章后續(xù)部分將提供有關(guān)使用全卷積網(wǎng)絡(luò)預(yù)測(cè)圖像像素級(jí)語(yǔ)義的更多詳細(xì)信息。
14.8.5。概括
R-CNN從輸入圖像中提取出多個(gè)region proposals,使用一個(gè)CNN對(duì)每個(gè)region proposals進(jìn)行前向傳播來(lái)提取其特征,然后使用這些特征來(lái)預(yù)測(cè)這個(gè)region proposals的類別和bounding box。
Fast R-CNN 相比 R-CNN 的一大改進(jìn)是 CNN 前向傳播只對(duì)整幅圖像進(jìn)行。它還引入了感興趣區(qū)域池化層,使得具有不同形狀的感興趣區(qū)域可以進(jìn)一步提取相同形狀的特征。
Faster R-CNN 用聯(lián)合訓(xùn)練的區(qū)域建議網(wǎng)絡(luò)代替了 Fast R-CNN 中使用的選擇性搜索,因此前者可以在減少區(qū)域建議數(shù)量的情況下保持目標(biāo)檢測(cè)的準(zhǔn)確性。
在Faster R-CNN的基礎(chǔ)上,mask R-CNN額外引入全卷積網(wǎng)絡(luò),利用像素級(jí)標(biāo)簽進(jìn)一步提高目標(biāo)檢測(cè)的準(zhǔn)確率。
14.8.6。練習(xí)
我們能否將目標(biāo)檢測(cè)框定為單個(gè)回歸問(wèn)題,例如預(yù)測(cè)邊界框和類別概率?你可以參考YOLO模型的設(shè)計(jì) (Redmon et al. , 2016)。
將單次射擊多框檢測(cè)與本節(jié)介紹的方法進(jìn)行比較。它們的主要區(qū)別是什么?您可以參考Zhao等人的圖 2。(2019)。
-
cnn
+關(guān)注
關(guān)注
3文章
354瀏覽量
22741 -
pytorch
+關(guān)注
關(guān)注
2文章
809瀏覽量
13954
發(fā)布評(píng)論請(qǐng)先 登錄
TF之CNN:CNN實(shí)現(xiàn)mnist數(shù)據(jù)集預(yù)測(cè)
如何利用PyTorch API構(gòu)建CNN?
如何將DS_CNN_S.pb轉(zhuǎn)換為ds_cnn_s.tflite?
如何將PyTorch模型與OpenVINO trade結(jié)合使用?
介紹目標(biāo)檢測(cè)工具Faster R-CNN,包括它的構(gòu)造及實(shí)現(xiàn)原理

Mask R-CNN:自動(dòng)從視頻中制作目標(biāo)物體的GIF動(dòng)圖
什么是Mask R-CNN?Mask R-CNN的工作原理
引入Mask R-CNN思想通過(guò)語(yǔ)義分割進(jìn)行任意形狀文本檢測(cè)與識(shí)別
手把手教你操作Faster R-CNN和Mask R-CNN
基于改進(jìn)Faster R-CNN的目標(biāo)檢測(cè)方法

基于Mask R-CNN的遙感圖像處理技術(shù)綜述
用于實(shí)例分割的Mask R-CNN框架
PyTorch教程14.8之基于區(qū)域的CNN(R-CNN)

評(píng)論