- 深度學習高手筆記(卷2):經典應用
- 劉巖(@大師兄)
- 1801字
- 2024-09-05 16:45:31
第1章 雙階段檢測
卷積神經網絡(convolutional neural network,CNN)最早用于解決計算機視覺領域的分類任務,分類的目的是識別圖片中物體的類別。在著名的計算機視覺競賽ILSVRC(ImageNet Large Scale Visual Recognition Challenge,ImageNet大型視覺識別挑戰賽)中,還有定位和檢測兩個任務。其中,定位任務不僅要識別出物體的具體類別,還要給出物體的具體位置。檢測任務可以理解為多目標的定位任務,不僅要識別出圖像中的多個物體,還要給出每個物體的具體位置。分類任務、定位任務和檢測任務如圖1.1所示。

圖1.1 分類任務、定位任務和檢測任務
目標檢測對人類來說是非常簡單的任務,人類憑借圖像內容和日常經驗通常可以快速給出精確的檢測結果。但是這個任務對計算機來說是非常困難的,因為在計算機中,圖像是使用RGB三維矩陣來表示的,計算機很難直接從矩陣中得出目標物體的位置和類別。傳統的目標檢測一般采用滑動窗口的方式,主要包括3步:
● 使用不同尺寸的滑動窗口,得到圖的某一部分作為候選區域;
● 提取候選區域的視覺特征,例如行人檢測常用的方向梯度直方圖(histogram of oriented gradient,HOG)特征等;
● 使用分類器進行識別,常見的如支持向量機(support vector machine,SVM)分類器。
在區域卷積神經網絡(region CNN,R-CNN)[1]出現之前,無論是傳統方法,還是深度學習方法(如OverFeat等),都很難在目標檢測方向取得令人滿意的效果。2014年被提出的R-CNN則將PASCAL VOC 2007的檢測精度大幅提升至58.5%,而之前的算法的檢測精度從未超過40%。R-CNN是結合了CNN的骨干網絡、選擇性搜索(selective search)候選區域提取和SVM分類器的雙階段檢測算法,即一個階段用于候選區域提取,另一個階段用于目標的識別和分類。R-CNN還是一個結合了傳統策略、機器學習和深度學習的“雜交”模型。R-CNN對于檢測精度的巨大提升開啟了業界對R-CNN系列檢測算法的火熱研究,對這一方向做出卓越貢獻的有Ross B. Girshick和何愷明等人。
[1] 參見Ross Girshick、Jeff Donahue、Trevor Darrell等人的論文“Rich feature hierarchies for accurate object detection and semantic segmentation”。
因為R-CNN需要生成長度固定的特征向量,它采用的策略是將輸入圖像縮放或裁剪到相同的尺寸。而SPP-Net [2]一文中指出這種縮放或者裁剪會導致輸入數據丟失原本的語義信息,SPP-Net的提出便是為了解決這個問題。SPP-Net的核心模塊是一個名為空間金字塔池化(spatial pyramid pooling,SPP)的結構,空間金字塔池化將不同尺度的特征圖分成若干組大小相同的桶(bin),然后對每個大小相同的桶進行最大池化或者平均池化,便可以得到長度固定的特征向量。
[2] 參見Kaiming He、Xiangyu Zhang、Shaoqing Ren等人的論文“Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition”。
為了避免檢測模型的漏檢問題,通常需要用選擇性搜索等方法提取大量的候選區域,然后將每個候選區域提供給分類器進行特征提取和分類。但是這些候選區域中存在大量的重復內容,針對這些候選區域的獨立計算會產生大量的重復計算,嚴重影響檢測算法的速度。Ross B. Girshick等人提出的Fast R-CNN[3]是在整幅輸入圖像上進行卷積操作,然后在輸出層的特征圖上提取候選區域對應的部分,從而實現參數共享。此外,Fast R-CNN使用多層感知機(multilayer perception, MLP)替代SVM進行分類,實現了檢測模型的端到端訓練。
[3] 參見Ross Girshick的論文“Fast R-CNN”。
Faster R-CNN[4]將候選區域的提取也交由深度學習去完成,實現了檢測算法的“全深度學習化”,實現這個功能的便是Faster R-CNN最核心的區域候選網絡(region proposal network,RPN)模塊。RPN用于生成候選區域,因此它是一個只需要判斷前景或者背景的二分類網絡。RPN最重要的貢獻是引入了錨點(anchor)來提升模型的收斂速度。錨點本質上是一個先驗框,使模型預測框向著錨點收斂有助于降低模型學習的難度。
[4] 參見Shaoqing Ren、Kaiming He、Ross Girshick等人的論文“Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks”。
目標檢測和分割是一對密切相關的任務,何愷明等人將實例掩碼任務加入Faster R-CNN,提出了可以同時檢測和分割目標的Mask R-CNN[5]。分割任務要求的是像素級別的檢測精度,而ROI池化或者空間金字塔池化會存在尺寸不匹配的問題。Mask R-CNN的一個重要模塊是ROI對齊(ROI align)模塊,它采用基于雙線性插值的池化方法,不存在尺寸不匹配的問題,是能讓掩碼任務添加到Faster R-CNN中的最核心的模塊。
[5] 參見Kaiming He、Georgi a Gkioxari、Piotr Dollar等人的論文“Mask R-CNN”。
目標檢測的輸出往往是標準矩形框,但是圖像中的目標往往會有更豐富的形態。可變形卷積網絡(deformable convolution network,DCN)[6][7]是一個提高模型學習復雜不變性能力的功能模塊,由可變形卷積和可變形池化兩個模塊組成。可變形的實質是為卷積和池化操作學習一個偏移,這樣卷積核和池化核便不再是一個形狀固定的矩形。可變形模塊可以嵌入任何檢測或者分割網絡,對于提升模型檢測精度非常有效。
[6] 參見Jifeng Dai、Haozhi Qi、Yuwen Xiong等人的論文“Deformable Convolutional Networks”。
[7] 參見Xizhou Zhu、Han Hu、Stephen Lin等人的論文“Deformable Convnets v2: More Deformable, Better Results”。