《Recent Advances in Deep Learning for Object Detection 》筆記

最近看了一篇目標檢測的綜述,之前對目標檢測的認識不是很多,所以簡單地記錄一下筆記,由於是很早之前寫的,對目標檢測的很多概念都還不是很清楚,簡單記錄一下。這篇論文主要講了目前的目標檢測算法的一些設置、檢測範式、基準等,包括了傳統算法和深度學習算法,主要側重深度學習算法部分。

一、傳統方法

傳統的目標檢測算法主要是三個步驟:

1、候選框生成(proposal generation):候選框生成,主要是篩選並提取出可能包含目標的區域,通常爲矩形框;

2、特徵向量提取(feature vector extraction):對每個ROI提取圖像的特徵向量;

3、區域分類(region classification):利用ROI的特徵向量來分類區域所屬的目標類別。

通常,第一步產生的候選框通常會採用滑動窗口來掃描整個圖像,這些候選框也就是ROI,同時爲了適應目標的多尺度,通常也會將圖像和滑動窗口設置爲多個尺寸;第二步的特徵提取,通常會每個窗口都提取固定長度的特徵向量,這些特徵通常是採用低級視覺描述子來編碼的,例如,SIFT、Haar、HOG、SURF等對圖像的尺度、光照、旋轉具有魯棒性的特徵算法;第三步則是爲了學習區域分類,爲每個區域分配一個目標類別,在深度學習前的傳統算法時代,用得比較多的是SVM、bagging、級聯(cascade)學習和adaboost。

2007-2009年, DPMs (Deformable Part Based Machines)連續贏得目標檢測挑戰賽Pascal VOC,之後傳統方法的改進沒有再帶來VOC目標檢測的太大的提升,也說明了傳統的目標檢測算法性能基本到了極限或者瓶頸,原因如下:

1、候選框生成階段,需要提取非常多的ROI,但是,這些ROI中有很多是冗餘的,分類過程容易帶來較大的誤報率FPR,同時,窗口和尺度等都是人爲設計的,對目標的匹配表現不良好;

2、特徵描述子基本都是人爲的基於低級視覺特徵設計的,對於更復雜的上下文很難獲取到具有代表性的語義信息; 3、整個檢測過程中,三個環節都是獨立設計和優化,所以通常很難做到系統性的全局優化;

二、深度學習方法

2.1、算法綜述

深度學習方法很大程度上是深度神經網絡,尤其是深度卷積神經網絡(Deep Convolutional Neural Networks, DCNN)的應用,早期神經網絡由Fukushima設計提出,後經Yann Lecun等人利用隨機梯度下降法(Stochastic Gradient Descent, SGD)和反向傳播算法(Back-propagation)進行優化,但是存在幾個問題:

1、缺少大規模的標註數據,容易導致過擬合;

2、計算資源限制了應用;

3、與SVM相比,理論研究較弱;

2012年,ILSVRC(ImageNet dataset and showed significant improvement on Large Scale Visual Recognition Challenge)和GPU計算資源的提升使DCNN表現出了優於傳統算法的性能。 基於深度學習的目標檢測算法的發展歷程如圖2.1所示,在2019年前後,開始進入無錨點的目標檢測(紅色)和基於AutoML的目標檢測(綠色):

圖2.1 基於深度學習的目標檢測算法發展歷程

目前基於深度學習的目標檢測算法大致上可以分爲兩個大類:二階檢測器(two-stage detectors)和一階檢測器(one-stage detections)。二階檢測器的代表模型是Region-based CNN及其變種,主要步驟爲:

1、候選框生成稀疏的區域集合並提取局部區域特徵;

2、根據區域特徵預測區域的目標分類;

一階檢測器的主要代表是YOLO及其變種,其步驟不包含候選框生成,而是直接對圖像每個位置的對象進行分類預測,而不進行級聯區域分類操作。總的來說兩者各有優勢,二階的表現往往比一階好,但是一階明顯具有很高的運行效率,更能滿足實時性的目標檢測應用要求。 目前目標檢測算法的算法和應用情況如圖2.2和表2.1所示,同時也是本文的主要介紹思路。

 

圖2.2目標檢測算法與應用情況

圖2.2目標檢測算法與應用情況

2.2、檢測設置

檢測設置主要分兩種:基於邊界框級別定位的普通目標檢測(Vanilla Object Detection, bbox-level localization)和基於像素級別或模板級別定位的實例分割(Instance Segmentation, pixel-level or mask-level localization)。 普通目標檢測應用較廣,且很多傳統算法都是採用普通目標檢測方法;實例分割則是比較新的做法,提供更精細的像素級分類預測,對空間錯位更敏感,對空間信息的處理要求也更高。

2.3、檢測範式

2.3.1、二階檢測

二階檢測器的兩個步驟爲:候選框生成、候選框預測。第一階段,先檢測可能存在對象的區域,基本思路是以高的召回率生成候選框,使圖像紅的所有對象屬於至少一個候選框區域;第二階段是對這些候選框區域預測正確的標籤。

1、R-CNN

R-CNN是典型的二階檢測代表,在Pascal VOC2010上取得了53.7%的mAP。R-CNN主要分三步:i)、候選框生成;ii)、特徵提取;iii)、區域分類。

缺點如下:i)、每個候選框由DCNN提取,重複計算,訓練和測試耗時;ii)、R-CNN三個步驟是獨立的,無法提供全局優化;iii)、選擇性搜索依賴於低級視覺線索,無法適應複雜環境,且無法用GPU加速。

2、SPP-net

SPP-net基於R-CNN的加速改進,利用DCNN計算全圖特徵,並加入了空間金字塔池化(Spatial Pyramid Pooling,SPP)提取固定長度特徵向量。

SPP-net缺點如下:i)、訓練SPP-net依然是多階段訓練,無法做到全局優化;ii)、SPP層無法與CNN的BP共用,因此無法從SPP層更新參數到前面的卷積層。

3、Fast R-CNN

Fast R-CNN是類似SPP-net的進一步改進,不用SPP層改用ROI池化來提取區域特徵,並連接到一個(C+1類)的全連接層,C類是目標類,1是背景類。

Fast R-CNN可以提供端到端的全局優化,因此訓練和應用速度得到提升;但缺點是候選框生成步驟上依然依賴傳統算法,也就是無法學習的低級視覺特徵。

4、Faster R-CNN

Faster R-CNN是對Fast R-CNN的進一步改進,也就是在候選框生成步驟中加入了可學習的Region Proposal Network(RPN),因此整個框架是可以進行端到端的全局優化。Faster R-CNN之後,很多目標檢測算法都是基於此改進。

但是Faster R-CNN的缺點有:i)、候選框生成步驟的計算與區域分類步驟的計算是無法共享的;ii)、很難做多尺度目標檢測,也很難檢測到小目標。

5、FPN

FPN(Feature Pyramid Networks)將具有豐富語義信息的深層特徵與具有空間信息的淺層特徵相結合,實現多尺度目標檢測,因此在很多領域如視頻檢測、人體姿態識別等有應用。

6、Mask R-CNN

Mask R-CNN根據候選框(proposals)和最好的結果(reported state-of-the-art results)來同時預測目標邊界框(bounding boxes)和分割掩膜(segmentation masks),使整個目標檢測過程更靈活。

7、Mask Scoring R-CNN

Mask Scoring R-CNN是基於Mask R-CNN的改進,加入學習預測掩膜的質量,並校準掩膜質量和掩膜識別分數之間的不對準。

 

圖2.3 二階目標檢測算法

2.3.2、一階檢測

不同於二階檢測器,一階檢測器不生成候選框,二十將圖像的每個位置都看作潛在對象,然後再將每個感興趣區域分類爲背景或者目標對象。

1、OverFeat

OverFeat將DCNN改爲全卷積目標檢測器(fully convolutional object detector),將DCNN的最後的全連接層。OverFeat網絡對輸入的每個區域預測目標的存在,再基於相同的DCNN特徵,學習邊界框迴歸來優化預測區域。同時爲了解決多尺度目標檢測,對輸入圖像進行多尺度縮放再用模型推導後合併爲最終的特徵。

OverFeat的缺點是分類器和迴歸器的訓練是分開的,沒有進行聯合優化,也就是沒有做到全局優化。

2、YOLO

YOLO(You Only Look Once),將目標檢測視爲迴歸問題,將整個圖像空間劃分爲固定數量的網格單元,對每個單元預測是否有目標,邊界框的座標和大小以及目標的分類。YOLO省略了候選框生成步驟,直接端到端進行優化,速度非常快。

缺點:i)、給定位置僅檢測兩個目標,對小目標和擁擠物體不適合;ii)、僅使用最後一個特徵圖,不適合多尺度和多縱橫比的目標檢測。

3、SSD

SSD(Single-Shot Mulibox Detector),同YOLO一樣也劃分網格,但每個網格生成一組具有多尺度和寬高比的錨點,每個錨點由迴歸學習的4值偏移量優化,並由分類器分配(C + 1)分類概率。SSD對多個特徵圖預測對象,並能檢測大尺寸物體。SSD通過端到端訓練,使用預測圖中的定位損失和分類損失的加權和優化整個網絡,將不同特徵圖的所有檢測結果合併作爲最終輸出。

4、RetinaNet

沒有候選框生成步驟,一階檢測器容易出現背景和目標類別不均衡問題,RetinaNet通過focal loss抑制容易負樣本的梯度,而不是簡單的丟棄;然後使用金字塔網絡檢測不同尺度的目標。

5、YOLOv2

YOLOv2引入基於ImageNet數據集訓練的更好的深度卷積網絡做基礎,借鑑了SSD的做法,提出更好的錨點先驗策略,即對訓練數據執行K均值聚類(而不是手動設置),同時也加入BN層(Batch Normalization layers)和多尺度的訓練技術。

6、CornerNet

前面提到的都是基於錨點的檢測,還有一些基於無錨的檢測算法,是預測邊界框的關鍵點來實現。CornerNet就是無錨框架的一種,不使用錨點,而是將目標檢測視爲對角檢測,在特徵圖的每個位置預測類熱圖(Class heatmaps)、成對嵌入(pair embeddings)和角偏移量(corner offsets)。

圖2.4 一階目標檢測算法

2.3、骨幹架構

在目標檢測中常用的CNN骨幹架構有深度方向發展的:VGG16、ResNet及其變種(如DenseNe、ResNeXt)、MobileNet;寬度方向發展的:GoogleNet和inception模塊。 前面這幾個網絡都是基於圖像分類任務作爲目標檢測任務的預訓練架構,與目標檢測存在一定衝突,因此,出現了DetNet、Hourglass Network等網絡。

2.4、候選框生成

候選框生成目前主要有:

1、傳統計算機視覺方法,可以分爲三個階段:目標分數 (Objectness Score based methods)衡量候選框包含目標的可能性、亞像素合併 (Superpixels Merging)、種子分割(Seed Segmentation)從多個種子區域開始,爲每個種子點生成前景和背景分割;

2、基於錨點的方法:RPN(Region Proposal Network)、S3FD(Single Shot Scaleinvariant Face Detector)、DeRPN(Dimension-Decomposition Region Proposal Network)、DeepProposals、RefineDet(Single-Shot Refinement Neural Network)、Cascade R-CNN等;

圖2.5 RPN示意圖

3、基於特徵點算法有兩個類別,基於角點的和基於中心的。基於角點的有Denet、CornerNet等;基於中心的有FSAF(feature-selection-anchor-free)、CenterNet等;

4、其他算法:AZnet。

2.5、特徵表達學習

2.5.1、多尺度學習

多尺度學習主要利用CNN中的一個特性,網絡的淺層特徵是包含比較多的空間信息,其分辨率相對較高、感受野相對較小,適合檢測小物體;深層特徵包含較多的語義信息,感受野相對較大,對光照、平移具有較強的魯棒性,適合檢測大物體。

目前主要有四種範式:圖像金字塔(Image Pyramid)、預測金字塔(Prediction Pyramid)、綜合特徵(Integrated Features)、特徵金字塔(Feature Pyramid)。

1、圖像金字塔

圖像金字塔的做法有:i)、將輸入圖像縮放到不同尺度,訓練不同分類器;ii)、將輸入圖像縮放到同一尺度(設計一個輕量級比例感知網絡)再用單尺度網絡檢測;iii)、訓練多個尺度相關的檢測器,每個檢測器負責一定比例的目標;

典型網絡有:SNIP(Scale Normalization for Image Pyramids)。

2、綜合特徵

設計單一尺度網絡,將不同層的的特徵融合爲一個綜合的特徵用於學習和分類。其中多數算法會用到跳級連接(skip connections)、ROI池化(ROI Pooling)、反捲積層(Deconvolutional)等。

典型網絡有:ION(Inside-Outside Network)、HyperNet、MLKP(Multi-scale Location-aware Kernel Representation)。

3、預測金字塔

訓練的時候將多層特徵綜合訓練,預測的時候是對多個層進行的,每個層負責一定尺度的目標。

典型網絡:SSD、MSCNN(Multi-scale Deep Convolutional Neural Network)、RFBNet(Receptive Field Block Net)。

4、特徵金字塔

特徵金字塔結合了綜合特徵和預測金字塔的兩種做法,既融合深淺層特徵,又做了多尺度預測。 典型網絡:FPN(Feature Pyramid Network)及其變種。

 

 

圖2.6 四種多尺度學習範式

2.5.2、區域特徵編碼

區域特徵編碼(Region Feature Encoding )是對候選框生成步驟生成的各個候選框區域進行圖像特徵提取和編碼。常見的操作有R-CNN的基於雙線性插值縮放;ROI Pooing、ROI Warping、ROI Align、以及改進的PrROIPooling(Precise ROI Pooing)、PSROIPooling(Position Sensitive ROI Pooing)等;

典型網絡:CoupleNet等。

2.5.3、語境推理

語境推理(Contextual Reasoning)是分析圖像中的語境信息,用於提高目標檢測的性能。主要有兩種:全局語境推理和區域語境推理。

全局語境推理(Global context reasoning)應該是加入了目標檢測圖像中的背景信息。主要採用的網絡模型有ION、DeepId、Faster R-CNN的改進等。

區域語境推理(Region Context Reasoning)則是編碼區域周圍的語境信息,並學習目標與周圍語境之間的推理關係。主要採用的網絡有:SMN(Spatial Memory Network)、SIN(Structure Inference Net)、GBDNet(GatedBi-DirectionalCNN)等。

2.5.4、可形變特徵學習

可形變特徵學習(Deformable Feature Learning)主要是應對目標檢測任務中的對非剛性、易形變的目標的檢測。深度學習之前常用的是DPMs(Deformable Part based Models)算法,而深度學習算法中則是用模型來檢測目標的各個部位。主要的網絡結構有:DeepID,比較新的研究中有提出可形變的卷積層。

2.6、學習策略

學習策略在深度學習的應用中主要分訓練階段和測試階段。

2.6.1、訓練階段

1、數據增強

數據增強(Data Augmentation)主要操作:鏡像、旋轉、隨即裁剪、縮放、顏色調整等

2、不平衡採樣

不平衡採樣(Imbalance Sampling),因爲在候選框生成階段生成的很多區域中其實都是不包含目標的,就導致實際包含目標的正樣本太少,而包含背景的負樣本又太多,造成正負樣本不平衡(imbalance of negative and positive samples)。

正負樣本不平衡會引起類別不平衡(class imbalance)和差異不平衡(difficulty imbalance),類別不平衡中由於負樣本多於正樣本,導致在反向傳播算法中,負樣本的值會佔主導;差異不平衡與類別不平衡相關,由於類別不平衡導致分類器容易對背景負樣本進行分類,而對正樣本的分類反而變得困難。

對類別不平衡,在二階檢測器中,R-CNN和Fast R-CNN主要是篩選掉大部分負樣本,並限制候選框生成的區域在大約2000個。Fast R-CNN還進一步限制正負樣本比例在1:3。還有的做法是固定前景和背景的樣本比例,但是對負樣本的選擇,會偏向選擇有較高的分類損失的負樣本。

對差異不平衡,在類別設計上,採用C+1類,也就是多了背景類來訓練;在損失函數上,設計了梯度協調機制GHM(gradient harmonizing mechanism)。

3、定位優化

定位優化(Localization Refinement):i)、生成高質量的候選框,R-CNN使用了L2輔助邊界迴歸器,Fast R-CNN則使用了平滑的L1迴歸器;ii)、迭代的邊界迴歸器;iii)、LocNe:模擬每個邊界框的分佈並優化學習到的預測結果;iiii)、優化網絡結構或目標函數:Multi-Path Network、Fitness-NMS、Grid R-CNN。

4、級聯學習

級聯學習(Cascade learning),是一種粗糙到精細的學習策略,從給定分類器的輸出蒐集信息,通過級聯的方式構建強分類器。

深度學習目標檢測任務中的做法有CRAFT(Cascade Region-proposal-network And FasT-rcnn)、RefineDet、Cascade R-CNN等。

5、其他 其它算法中有:i)、Adversarial Learning,對抗學習,主要有GAN,如用於小目標檢測的Perceptual GAN、A-Fast-R-CNN;ii)、Training from Scratch,重新訓練,不依賴基於分類任務訓練的預訓練模型,有DSOD (Deeply Supervised Object Detectors)等;iii)、Knowledge Distillation,知識蒸餾。

2.6.2、測試階段

目標檢測算法的預測是一組密集預測,因此不能直接作爲預測輸出。同時也需要一定策略來提升測試階段的預測輸出。

1、刪除重複

刪除重複(Duplicate Removal),非極大值抑制是常用的方法。一階檢測器同個目標周圍的候選框可能會有相同的分數導致出現假陽性;二階檢測器的邊界框迴歸容易將一些候選框迴歸到同一個目標,也容易導致這樣的問題。因此引入NMS。

NMS根據預測值排序同個類下所有候選框,取最大預測值的框爲M,計算M與其他框B的IoU,大於一定值B的分數就置零。

但是容易出現某些目標就剛好出現在Ω_test範圍內而漏掉,因此引入Soft-NMS,就是對IoU(B,M)≥Ω_test情況下的Score_B做一個函數映射:

2、模型加速

模型加速(Model Acceleration):i)、R-FCN提取空間敏感的特徵圖並與空間敏感ROI池化共享計算損失,但特徵圖的通道數量隨着類別數量的增加會隨之明顯增加;ii)、Light Head R-CNN極大降低特徵圖的通道數量(1024 to 16)而不是共享計算,因此計算成本較低。iii)、改用更有效率的網絡骨架,MobileNet、PVANet或者TensorRT來優化模型。

3、其它

不同尺度的目標構建不同尺度的圖像等。

2.7、應用

2.7.1、人臉檢測

人臉檢測(Face detection)與通用的目標檢測之間的不同:i)、人臉的尺度方位更大。且遮擋、模糊等情況更常見;ii)、人臉有更強的結構信息,且只有一個檢測目標。

早期的人臉檢測是通過滑動窗口、密集圖像網格來手動編碼,並用於訓練和定位目標。主要有基於Haar特徵的AdaBoost分類器算法。

深度學習方法有:基於Fast R-CNN或SSD、一階的S3FD、SSH(Single Stage Headless Face Detector)、Scale Aware Face network、基於RetinaNet的、MTCNN、Face MegNet、FDNet、CMSRCNN(Contextual Multi-Scale Region-based Convolution Neural Network)、PyramidBox等。

2.7.2、行人檢測

行人檢測(Pedestrian Detection) 與通用的目標檢測之間的不同:i)、行人目標的結構性較好,寬高比例比較固定,但尺度範圍非常大;ii)、行人檢測的擁擠、遮擋、模糊的問題更嚴重;iii)、環境複雜,有更多硬性負樣本(如交通燈、郵箱等)。

傳統方法主要利用滑動窗口策略利用積分通道特徵定位對象,並用SVM等來實現區域分類器。因此早期工作會集中在用於分類的穩定的特徵描述子的構建上,如HOG。

深度學習方法有利用級聯深度神經網絡(cascade of deep convolutional networks)、利用決策樹分類多尺度特徵圖、SAFRCNN(Scale-aware Fast R-CNN)、SDP(Scale Dependent Pooling)和CRC(Cascaded Rejection Classifiers)、OR-CNN(Occlusion-aware R-CNN)、DeepParts等。

2.7.3、其它

logo檢測(Logo detection),難度是logo可能會更小,非剛性變換更強;

Existing detection algorithms,檢測圖像或視頻中是否有某目標,主要是視頻中,與目標出現的時間和空間都有關係;

其他的還有車輛檢測、交通信號檢測、骨架檢測等。

2.8、檢測基準

2.8.1、通用檢測基準

1、數據集

2、評價指標

2.8.2、人臉檢測基準

1、數據集

2、評價指標

2.8.3、行人檢測基準

1、數據集

2、評價指標

* 評價指標中出現的符號與定義

2.8.4、算法對比

1、VOC數據集

2、MS COCO

2.8.5、未來方向

1、可擴展的候選框生成策略(Scalable Proposal Generation Strategy)

2、有效的上下文信息編碼(Effective Encoding of Contextual Information)

3、基於自動機器學習的檢測(Detection based on Auto Machine Learning(AutoML)),耗GPU,但最近的進展不錯。

4、針對對象檢測的新基準(Emerging Benchmarks for Object Detection)

5、少樣本目標檢測(Low-shot Object Detection)

6、適合目標檢測任務的骨幹架構(Backbone Architecture for Detection Task)

7、其它研究問題(Other Research Issues):大批量學習(large batch learning)和增量學習(incremental learning)

論文:https://arxiv.org/pdf/1908.03673.pdf

 

北風初秋至,吹我章華臺。

浮雲多暮色,似從崦嵫來。

枯桑鳴中林,絡緯響空階。

翩翩飛蓬徵,愴愴遊子懷。

故鄉不可見,長望始此回。

  -- 《古八變歌》

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章