- 深度學習高手筆記(卷2):經典應用
- 劉巖(@大師兄)
- 1048字
- 2024-09-05 16:45:32
1.1.4 訓練數據準備
1.SVM分類器的數據準備
標簽:由于SVM只能做二分類,因此在N類分類任務中,R-CNN使用了N個SVM分類器。對于第K類物體,與該類物體的真值框的IoU大于0.3的視為正樣本,其余視為負樣本。R-CNN論文中指出,0.3是通過柵格搜索(grid search)得到的最優閾值。
特征:在決定使用哪一層的特征作為SVM的輸入時,R-CNN通過對比AlexNet網絡中的最后一個池化層Pool5以及兩個全連接層FC6和FC7的特征在PASCAL VOC 2007數據集上的表現,發現Pool5層得到的錯誤率更低,得出結論——Pool5更能表達輸入數據的特征。因此,SVM使用的是從Pool5層提取的特征,原因是全連接會破壞圖像的位置信息。
2.嶺回歸位置精校器的數據準備
特征:位置精校和分類的思路類似,不同之處是它們一個是分類任務,一個是回歸任務。同SVM一樣,嶺回歸位置精校器使用的也是從Pool5層提取的特征。候選區域選取的是和真值框的IoU大于0.6的樣本。
標簽:嶺回歸位置精校器使用的是相對位置,這有助于降低模型學習的難度,提升對不同尺寸的目標的檢測能力。在這里,G = {Gx, Gy, Gw, Gh}表示真值框的坐標和長寬,P = {Px, Py, Pw, Ph}表示候選區域的大小和長寬。相對位置的回歸目標為T = {tx, ty, tw, th},它的計算方式為:

(1.1)
3.任務訓練細節
CNN預訓練。出于當時硬件資源的限制,R-CNN并沒有選擇容量更大的VGG-16,而是選擇了速度更快的AlexNet。預訓練指的是在ILSVRC 2013上訓練分類網絡,微調訓練使用了小批次的SGD進行優化,批次大小是128,其中32個正樣本,96個負樣本。因為預訓練是分類任務,所以CNN使用的損失函數是交叉熵損失函數。
SVM分類器訓練。SVM的訓練使用了難負樣本挖掘(hard negative mining,HNM)。對于目標檢測我們會事先標記出真值框,然后在算法中生成一系列候選區域,這些候選區域有和標記的真值框重合的,也有沒重合的,那么IoU超過一定閾值(通常設置為0.5)的則認定為正樣本,閾值之下的則認定為負樣本。然后將這些樣本放入SVM分類器中訓練。然而,這也許會出現一個問題,那就是正樣本的數量遠遠小于負樣本,這樣訓練出來的分類器的效果總是有限的,會出現許多假陽性樣本。把其中得分較高的假陽性樣本當作所謂的難負樣本,既然挖掘出了這些難負樣本,就把它們放入SVM分類器中再訓練一次,從而加強分類器判別假陽性的能力。
嶺回歸位置精校器訓練。精校器的作用是找到一組映射,使候選區域的位置信息P通過某種映射,能夠轉化為G。這也可以理解為根據Pool5層的圖像特征,學習G和P的相對位置關系(1.1.4節中的t),然后根據相對位置關系,將候選區域對應成檢測框,所以目標函數可以為:

(1.2)
其中,表示候選區域Pi對應的Pool5層特征向量,
是可訓練的網絡參數,λ是正則化系數。