>戳此處立即下載電子書=0.5 時(shí)則認(rèn)為是正樣本,其余為負(fù)樣本。 至此,R-CNN 的第二步特征提取器可以開始訓(xùn)練了,不過在訓(xùn)練過程中要注意,需要對負(fù)樣本進(jìn)?..."/>
溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

目標(biāo)檢測入門系列手冊二:RCNN訓(xùn)練教程

發(fā)布時(shí)間:2020-08-10 10:01:42 來源:ITPUB博客 閱讀:120 作者:視覺計(jì)算 欄目:互聯(lián)網(wǎng)科技

>>戳此處立即下載電子書<< ,學(xué)習(xí)全套目標(biāo)檢測算法&模型

目標(biāo)檢測入門系列手冊二:RCNN訓(xùn)練教程

目標(biāo)檢測需要獲取圖片中所有目標(biāo)的位置及其類別,對于圖2-1 中的 3 張圖而言,當(dāng)圖片中只有一個目標(biāo)時(shí),“regression head”預(yù)測 4 個值,當(dāng)圖片中有 3 個目標(biāo)時(shí),“regression head”預(yù)測 12 個值,那么當(dāng)圖片中有多個目標(biāo)時(shí),“regression head”要預(yù)測多少個值呢?

目標(biāo)檢測入門系列手冊二:RCNN訓(xùn)練教程

這時(shí)根據(jù)讀者已經(jīng)學(xué)過的一些知識,可能會嘗試用滑窗的方法來解決,如圖2-2所示。但是,這里有一個問題,我們需要設(shè)計(jì)大量的不同尺度和長寬比的“滑窗”使它們通過CNN,然而這個計(jì)算量是非常巨大的。有沒有什么方法能使得我們快速定位到目標(biāo)的潛在區(qū)域,從而減少大量不必要的計(jì)算呢?

目標(biāo)檢測入門系列手冊二:RCNN訓(xùn)練教程

目標(biāo)檢測入門系列手冊二:RCNN訓(xùn)練教程

學(xué)者們在這個方向做了很多研究,比較有名的是selective search 方法,具體方法這里不做詳細(xì)說明,感興趣的讀者可以看關(guān)于selective search 的論文。大家只要知道這是一種從圖片中選出潛在物體候選框(Regions of Interest,ROI)的方法即可。有了獲取ROI 的方法,接下來就可以通過分類和合并的方法來獲取最終的目標(biāo)檢測結(jié)果?;谶@個思路有了下面的R-CNN 方法。

R-CNN

下面介紹R-CNN[1] 的訓(xùn)練過程,整體訓(xùn)練流程如圖2-3 所示:

目標(biāo)檢測入門系列手冊二:RCNN訓(xùn)練教程

圖2-3 R-CNN 訓(xùn)練過程[9]

(1)選出潛在目標(biāo)候選框(ROI)
objectness[10], selective search[11], category-independent object proposals[12]等很多論文都講述了候選框提取的方法,R-CNN 使用selective search 的方法選出2000 個潛在物體候選框。

(2)訓(xùn)練一個好的特征提取器
R-CNN 的提出者使用卷積神經(jīng)網(wǎng)絡(luò)AlexNet 提取4096 維的特征向量,實(shí)際上使用VGGNet/GoogLeNet/ResNet 等也都可以。細(xì)心的讀者會發(fā)現(xiàn),AlexNet等網(wǎng)絡(luò)要求輸入的圖片尺寸是固定的,而步驟(1)中的ROI 尺寸大小不定,這就需要將每個ROI 調(diào)整到指定尺寸,調(diào)整的方法有多種,可參見圖2-4,其中(a)是原始ROI 圖片,(b)是包含上下文的尺寸調(diào)整,(c)是不包含上下文的尺寸調(diào)整,(d)是尺度縮放。

目標(biāo)檢測入門系列手冊二:RCNN訓(xùn)練教程

接下來,為了獲得一個好的特征提取器,一般會在ImageNet 預(yù)訓(xùn)練好的模型基礎(chǔ)上做調(diào)整(因?yàn)镮mageNet 預(yù)測的種類較多,特征學(xué)習(xí)相對完善),唯一的改動就是將ImageNet 中的1000 個類別的輸出改為(C+1)個輸出,其中C 是真實(shí)需要預(yù)測的類別個數(shù),1 是背景類。新特征的訓(xùn)練方法是使用隨機(jī)梯度下降(stochastic gradient descent,即SGD),與前幾章介紹的普通神經(jīng)網(wǎng)絡(luò)的訓(xùn)練方法相同。

提到訓(xùn)練,就一定要有正樣本和負(fù)樣本,這里先拋出一個用于衡量兩個矩形交疊情況的指標(biāo):IOU(Intersection Over Union)。IOU 其實(shí)就是兩個矩形面積的交集除以并集,如圖2-5 所示。一般情況下,當(dāng)IOU>=0.5 時(shí),可以認(rèn)為兩個矩形基本相交,所以在這個任務(wù)中,假定兩個矩形框中,1 個矩形代表ROI,另一個代表真實(shí)的矩形框,那么當(dāng)ROI 和真實(shí)矩形框的IOU>=0.5 時(shí)則認(rèn)為是正樣本,其余為負(fù)樣本。

至此,R-CNN 的第二步特征提取器可以開始訓(xùn)練了,不過在訓(xùn)練過程中要注意,需要對負(fù)樣本進(jìn)行采樣,因?yàn)橛?xùn)練數(shù)據(jù)中正樣本太少會導(dǎo)致正負(fù)樣本極度不平衡。最終在該步得到的是一個卷積神經(jīng)網(wǎng)絡(luò)的特征提取器,其特征是一個4096 維特征向量。

目標(biāo)檢測入門系列手冊二:RCNN訓(xùn)練教程

(3)訓(xùn)練最終的分類器
這里為每個類別單獨(dú)訓(xùn)練一個SVM 分類器。這里面有個小技巧,SVM 的訓(xùn)練也需要選擇正負(fù)樣本,R-CNN 的提出者做了一個實(shí)驗(yàn)來選擇最優(yōu)IOU 閾值,最終僅僅選擇真實(shí)值的矩形框作為正樣本。

注意:正負(fù)樣本的選擇比較有講究,F(xiàn)ast R-CNN 和Faster R-CNN 是根據(jù)IOU 的大小選取正負(fù)樣本,2.2.3 節(jié)有詳細(xì)介紹。

(4)為每個類訓(xùn)練一個回歸模型,用來微調(diào)ROI 與真實(shí)矩形框位置和大小的偏差,如圖2-6 所示。

目標(biāo)檢測入門系列手冊二:RCNN訓(xùn)練教程

下面是所有檢測問題都會用到的一塊代碼:IOU 的計(jì)算。

def bboxIOU (bboxA, bboxB):

A_xmin = bboxA[0]
A_ymin = bboxA[1]
A_xmax = bboxA[2]
A_ymax = bboxA[3]
A_width = A_xmax - A_xmin
A_height = A_ymax - A_ymin

B_xmin = bboxB[0]
B_ymin = bboxB[1]
B_xmax = bboxB[2]
B_ymax = bboxB[3]
B_width = B_xmax - B_xmin
B_height = B_ymax - B_ymin

xmin = min(A_xmin, B_xmin)
ymin = min(A_ymin, B_ymin)
xmax = max(A_xmax, B_xmax)
ymax = max(A_ymax, B_ymax)

A_width_and = (A_width + B_width) - (xmax - xmin) # 寬的交集
A_height_and = (A_height + B_height) - (ymax - ymin) # 高的交集

if ( A_width_and <= 0.0001 or A_height_and <= 0.0001):
return 0

area_and = (A_width_and * A_height_and)
area_or = (A_width  A_height) + (B_width B_height)
IOU = area_and / (area_or - area_and)

return IOU

預(yù)測階段有如下幾個步驟:
(1)同樣地,使用selective search 方法先選出2000 個ROI。

(2)所有ROI 調(diào)整為特征提取網(wǎng)絡(luò)所需的輸入大小并進(jìn)行特征提取,得到2000個ROI 對應(yīng)的2000 個4096 維的特征向量。

(3)將2000 個特征向量分別輸入到SVM 中,得到每個ROI 預(yù)測的類別。

(4)通過回歸網(wǎng)絡(luò)微調(diào)ROI 的位置。

(5)最終使用非極大值抑制(Non-Maximum Suppression,NMS)方法對同一個類別的ROI 進(jìn)行合并得到最終檢測結(jié)果。NMS 的原理是得到每個矩形框的分?jǐn)?shù)(置信度),如果兩個矩形框的IOU 超過指定閾值,則僅僅保留分?jǐn)?shù)大的那個矩形框。

以上就是R-CNN 的全部過程,我們可以從中看出,R-CNN 存在的一些問題:
● 不論是訓(xùn)練還是預(yù)測,都需要對 selective search 出來的 2000 個 ROI 全部通過CNN 的forward 過程來獲取特征,這個過程非常慢。

● 卷積神經(jīng)網(wǎng)的特征提取器和用來預(yù)測分類的 SVM 是分開的,也就是特征提取的過程不會因SVM 和回歸的調(diào)整而更新。

● R-CNN 有非常復(fù)雜的操作流程,而且每一步都是分裂的,如特征提取器通過softmax 分類獲得,最終分類結(jié)果由SVM 獲得,矩形框的位置通過回歸方式獲得。

文章來源:阿里云-機(jī)器智能技術(shù)



向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI