中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

目標檢測入門系列手冊二:RCNN訓練教程

發布時間:2020-08-10 10:01:42 來源:ITPUB博客 閱讀:120 作者:視覺計算 欄目:互聯網科技

>>戳此處立即下載電子書<< ,學習全套目標檢測算法&模型

目標檢測入門系列手冊二:RCNN訓練教程

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

目標檢測入門系列手冊二:RCNN訓練教程

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

目標檢測入門系列手冊二:RCNN訓練教程

目標檢測入門系列手冊二:RCNN訓練教程

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

R-CNN

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

目標檢測入門系列手冊二:RCNN訓練教程

圖2-3 R-CNN 訓練過程[9]

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

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

目標檢測入門系列手冊二:RCNN訓練教程

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

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

至此,R-CNN 的第二步特征提取器可以開始訓練了,不過在訓練過程中要注意,需要對負樣本進行采樣,因為訓練數據中正樣本太少會導致正負樣本極度不平衡。最終在該步得到的是一個卷積神經網絡的特征提取器,其特征是一個4096 維特征向量。

目標檢測入門系列手冊二:RCNN訓練教程

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

注意:正負樣本的選擇比較有講究,Fast R-CNN 和Faster R-CNN 是根據IOU 的大小選取正負樣本,2.2.3 節有詳細介紹。

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

目標檢測入門系列手冊二:RCNN訓練教程

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

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

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

(2)所有ROI 調整為特征提取網絡所需的輸入大小并進行特征提取,得到2000個ROI 對應的2000 個4096 維的特征向量。

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

(4)通過回歸網絡微調ROI 的位置。

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

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

● 卷積神經網的特征提取器和用來預測分類的 SVM 是分開的,也就是特征提取的過程不會因SVM 和回歸的調整而更新。

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

文章來源:阿里云-機器智能技術



向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

高雄县| 新龙县| 张掖市| 麟游县| 馆陶县| 博野县| 韩城市| 长丰县| 华宁县| 青田县| 吉木乃县| 永嘉县| 渝中区| 武汉市| 高雄市| 金门县| 衡山县| 始兴县| 武胜县| 清新县| 武鸣县| 沙坪坝区| 江门市| 昌邑市| 丹江口市| 彭泽县| 巢湖市| 大城县| 麦盖提县| 咸阳市| 金寨县| 博野县| 钦州市| 西乌珠穆沁旗| 林州市| 靖宇县| 喀什市| 集安市| 丹江口市| 于田县| 青岛市|