目標檢測算法進展大盤點
目標檢測算法進展大盤點
一.早期的目標檢測盤點
將從多個方面回顧對象檢測的歷史,包括里程碑檢測器、目標檢測數據集、指標和關鍵技術的發展。在過去的10年中,人們普遍認為,目標檢測的發展大致經歷了兩個歷史時期:“ 傳統的目標檢測時期 ” ( 2014年以前 ) 和 “ 基於深度學習的檢測時期 ” ( 2014年以后 ),如下圖所示。
01傳統檢測器
如果把今天的物體檢測看作是深度學習力量下的一種技術美學,那么回到幾年年前,將見證“冷兵器時代的智慧”。早期的目標檢測算法大多是基於手工特征構建的。由於當時缺乏有效的圖像表示,人們別無選擇,只能設計復雜的特征表示,以及各種加速技術來用盡有限的計算資源。
(1)Viola Jones Detectors
18年前,P. Viola和M. Jones在沒有任何約束條件(如膚色分割)的情況下首次實現了人臉的實時檢測。在700MHz Pentium III CPU上,在同等的檢測精度下,檢測器的速度是其他算法的數十倍甚至數百倍。這種檢測算法,后來被稱為“維奧拉-瓊斯”(VJ)檢測器”,在此以作者的名字命名,以紀念他們的重大貢獻。
VJ檢測器采用最直接的檢測方法,即,滑動窗口:查看圖像中所有可能的位置和比例,看看是否有窗口包含人臉。雖然這似乎是一個非常簡單的過程,但它背后的計算遠遠超出了計算機當時的能力。VJ檢測器結合了 “ 積分圖像 ”、“ 特征選擇 ” 和 “ 檢測級聯 ” 三種重要技術,大大提高了檢測速度。
積分圖像:積分圖像是一種計算方法,以加快盒濾波或卷積過程。與當時的其他目標檢測算法一樣,在VJ檢測器中使用Haar小波作為圖像的特征表示。積分圖像使得VJ檢測器中每個窗口的計算復雜度與其窗口大小無關。
特征選擇:作者沒有使用一組手動選擇的Haar基過濾器,而是使用Adaboost算法從一組巨大的隨機特征池 ( 大約180k維 ) 中選擇一組對人臉檢測最有幫助的小特征。
檢測級聯:在VJ檢測器中引入了一個多級檢測范例 ( 又稱“檢測級聯”,detection cascades ),通過減少對背景窗口的計算,而增加對人臉目標的計算,從而減少了計算開銷。
(2)HOG Detector
方向梯度直方圖(HOG)特征描述符最初是由N. Dalal和B.Triggs在2005年提出的。HOG可以被認為是對當時的尺度不變特征變換(scale-invariant feature transform)和形狀上下文(shape contexts)的重要改進。為了平衡特征不變性 ( 包括平移、尺度、光照等 ) 和非線性 ( 區分不同對象類別 ),將HOG描述符設計為在密集的均勻間隔單元網格上計算,並使用重疊局部對比度歸一化 ( 在“塊”上 ) 來提高精度。雖然HOG可以用來檢測各種對象類,但它的主要動機是行人檢測問題。若要檢測不同大小的對象,則HOG檢測器在保持檢測窗口大小不變的情況下,多次對輸入圖像進行重新標度。多年來,HOG檢測器一直是許多目標檢測器[13,14,36]和各種計算機視覺應用的重要基礎。
(3)Deformable Part-based Model (基於可變形部件的模型,DPM)
DPM作為voco -07、-08、-09檢測挑戰的優勝者,是傳統目標檢測方法的巔峰。DPM最初是由P. Felzenszwalb提出的,於2008年作為HOG檢測器的擴展,之后R. Girshick進行了各種改進。
DPM遵循“分而治之”的檢測思想,訓練可以簡單地看作是學習一種正確的分解對象的方法,推理可以看作是對不同對象部件的檢測的集合。例如,檢測“汽車”的問題可以看作是檢測它的窗口、車身和車輪。工作的這一部分,也就是“star model”由P.Felzenszwalb等人完成。后來,R. Girshick進一步將star model擴展到 “ 混合模型 ”,以處理更顯著變化下的現實世界中的物體。
一個典型的DPM檢測器由一個根過濾器(root-filter)和一些零件濾波器(part-filters)組成。該方法不需要手動指定零件濾波器的配置 ( 如尺寸和位置 ),而是在DPM中開發了一種弱監督學習方法,所有零件濾波器的配置都可以作為潛在變量自動學習。R. Girshick將這個過程進一步表述為一個多實例學習的特殊案例,“硬負挖掘”、“邊界框回歸”、“上下文啟動”等重要技術也被用於提高檢測精度。為了加快檢測速度,Girshick開發了一種技術,將檢測模型 “ 編譯 ” 成一個更快的模型,實現了級聯結構,在不犧牲任何精度的情況下實現了超過10倍的加速度。
雖然今天的物體探測器在檢測精度方面已經遠遠超過了DPM,但仍然受到DPM的許多有價值的見解的影響,如混合模型、硬負挖掘、邊界盒回歸等。2010年,P. Felzenszwalb和R. Girshick被授予PASCAL VOC的 “ lifetime achievement ”。
02 CNN based Two-stage Detectors
隨着手工特征的性能趨於飽和,目標檢測在2010年之后達到了一個穩定的水平。R.Girshick說:“ ... progress has been slow during 2010-2012, with small gains obtained by building ensemble systems and employing minor variants of successful methods ”。2012年,卷積神經網絡在世界范圍內重生。由於深卷積網絡能夠學習圖像的魯棒性和高層次特征表示,一個自然的問題是能否將其應用到目標檢測中?R. Girshick等人在2014年率先打破僵局,提出了具有CNN特征的區域(RCNN)用於目標檢測。從那時起,目標檢測開始以前所未有的速度發展。
在深度學習時代,目標檢測可以分為兩類:“ two-stage detection ” 和 “ one-stage detection ”,前者將檢測框定為一個 “ 從粗到細 ” 的過程,而后者將其定義為 “ 一步完成 ”。
(1)RCNN
RCNN背后的想法很簡單:它首先通過選擇性搜索提取一組對象建議(對象候選框)。然后,每個提案都被重新調整成一個固定大小的圖像,並輸入到一個在ImageNet上訓練得到的CNN模型(例如,AlexNet) 來提取特征。最后,利用線性SVM分類器對每個區域內的目標進行預測,識別目標類別。RCNN在VOC07上產生了顯著的性能提升,平均精度(mean Average Precision,mAP)從33.7%(DPM-v5) 大幅提高到58.5%。
雖然RCNN已經取得了很大的進步,但它的缺點是顯而易見的:在大量重疊的提案上進行冗余的特征計算 ( 一張圖片超過2000個框 ),導致檢測速度極慢(GPU下每張圖片14秒)。同年晚些時候,SPPNet被提出並克服了這個問題。
(2)SPPNet
2014年,K. He等人提出了空間金字塔池化網絡( Spatial Pyramid Pooling Networks,SPPNet)。以前的CNN模型需要固定大小的輸入,例如,AlexNet需要224x224圖像。SPPNet的主要貢獻是引入了空間金字塔池化(SPP)層,它使CNN能夠生成固定長度的表示,而不需要重新縮放圖像/感興趣區域的大小。利用SPPNet進行目標檢測時,只對整個圖像進行一次特征映射計算,然后生成任意區域的定長表示,訓練檢測器,避免了卷積特征的重復計算。SPPNet的速度是R-CNN的20多倍,並且沒有犧牲任何檢測精度(VOC07 mAP=59.2%)。
SPPNet雖然有效地提高了檢測速度,但仍然存在一些不足:第一,訓練仍然是多階段的,第二,SPPNet只對其全連接層進行微調,而忽略了之前的所有層。次年晚些時候,Fast RCNN被提出並解決了這些問題。
(3)Fast RCNN
2015年,R. Girshick提出了Fast RCNN檢測器,這是對R-CNN和SPPNet的進一步改進。Fast RCNN使能夠在相同的網絡配置下同時訓練檢測器和邊界框回歸器。在VOC07數據集上,Fast RCNN將mAP從58.5%( RCNN)提高到70.0%,檢測速度是R-CNN的200多倍。
雖然Fast-RCNN成功地融合了R-CNN和SPPNet的優點,但其檢測速度仍然受到提案/建議檢測的限制。然后,一個問題自然而然地出現了:“ 能用CNN模型生成對象建議嗎? ” 稍后,Faster R-CNN解決了這個問題。
(4)Faster RCNN
2015年,S. Ren等人提出了Faster RCNN檢測器,在Fast RCNN之后不久。Faster RCNN 是第一個端到端的,也是第一個接近實時的深度學習檢測器(COCO mAP@.5=42.7%,COCO mAP@[.5,.95]=21.9%, VOC07 mAP=73.2%,VOC12 mAP=70.4%,17fps with ZFNet)。Faster RCNN的主要貢獻是引入了區域建議網絡 (RPN),使幾乎cost-free的區域建議成為可能。從RCNN到Faster RCNN,一個目標檢測系統中的大部分獨立塊,如提案檢測、特征提取、邊界框回歸等,都已經逐漸集成到一個統一的端到端學習框架中。
雖然Faster RCNN突破了Fast RCNN的速度瓶頸,但是在后續的檢測階段仍然存在計算冗余。后來提出了多種改進方案,包括RFCN和 Light head RCNN。
(5)Feature Pyramid Networks(FPN)
2017年,T.-Y.Lin等人基於Faster RCNN提出了特征金字塔網絡(FPN)。在FPN之前,大多數基於深度學習的檢測器只在網絡的頂層進行檢測。雖然CNN較深層的特征有利於分類識別,但不利於對象的定位。為此,開發了具有橫向連接的自頂向下體系結構,用於在所有級別構建高級語義。由於CNN通過它的正向傳播,自然形成了一個特征金字塔,FPN在檢測各種尺度的目標方面顯示出了巨大的進步。在基礎的Faster RCNN系統中使用FPN,在MSCOCO數據集上實現了最先進的單模型檢測結果,沒有任何附加條件(COCO mAP@.5=59.1%,COCO mAP@[.5,.95]= 36.2%)。FPN現在已經成為許多最新探測器的基本組成部分。
03 CNN based One-stage Detectors
(1)You Only Look Once (YOLO)
YOLO由R. Joseph等人於2015年提出。它是深度學習時代[20]的第一個單級檢測器。YOLO非常快:YOLO的一個快速版本運行速度為155fps, VOC07 mAP=52.7%,而它的增強版本運行速度為45fps, VOC07 mAP=63.4%, VOC12 mAP=57.9%。YOLO是 “ You Only Look Once ” 的縮寫。從它的名字可以看出,作者完全拋棄了之前的 “ 提案檢測+驗證 ” 的檢測范式。相反,它遵循一個完全不同的哲學:將單個神經網絡應用於整個圖像。該網絡將圖像分割成多個區域,同時預測每個區域的邊界框和概率。后來R. Joseph在 YOLO 的基礎上進行了一系列改進,提出了其 v2 和 v3 版本,在保持很高檢測速度的同時進一步提高了檢測精度。
盡管與兩級探測器相比,它的探測速度有了很大的提高,但是YOLO的定位精度有所下降,特別是對於一些小目標。YOLO的后續版本和后者提出的SSD更關注這個問題。
(2)Single Shot MultiBox Detector (SSD)
SSD由W. Liu等人於2015年提出。這是深度學習時代的第二款單級探測器。SSD的主要貢獻是引入了多參考和多分辨率檢測技術,這大大提高了單級檢測器的檢測精度,特別是對於一些小目標。SSD在檢測速度和准確度上都有優勢(VOC07 mAP=76.8%,VOC12 mAP=74.9%, COCO mAP@.5=46.5%,mAP@[.5,.95]=26.8%,快速版本運行速度為59fps) 。SSD與以往任何檢測器的主要區別在於,前者在網絡的不同層檢測不同尺度的對象,而后者僅在其頂層運行檢測。
(3)RetinaNet
單級檢測器速度快、結構簡單,但多年來一直落后於兩級檢測器的精度。T.-Y.Lin等人發現了背后的原因,並在2017年提出了RetinaNet。他們聲稱,在密集探測器訓練過程中所遇到的極端的前景-背景階層不平衡(the extreme foreground-background class imbalance)是主要原因。為此,在RetinaNet中引入了一個新的損失函數 “ 焦損失(focal loss)”,通過對標准交叉熵損失的重構,使檢測器在訓練過程中更加關注難分類的樣本。焦損耗使得單級檢測器在保持很高的檢測速度的同時,可以達到與兩級檢測器相當的精度。(COCO mAP@.5=59.1%,mAP@[.5, .95]=39.1% )。
04 Object Detection Datasets
建立具有更少的偏置的更大的數據集,是開發先進的計算機視覺算法的關鍵。在目標檢測方面,在過去10年中,已經發布了許多著名的數據集和基准測試,包括PASCAL VOC挑戰的數據集(例如,VOC2007, VOC2012)、ImageNet大尺度視覺識別挑戰(例如,ILSVRC2014)、MS-COCO檢測挑戰等。下表1給出了這些數據集的統計數據。
下圖顯示了這些數據集的一些圖像示例:
(a)VOC,(b)ILSVRC,(c)COCO,(d)Open Images
下圖顯示了從2008年到2018年對VOC07、VOC12和MS-COCO數據集檢測精度的提高。
具體介紹如下:
(1)Pascal VOC
PASCAL可視化對象類(Visual Object Classes,VOC)挑戰(2005-2012)是早期計算機視覺界最重要的比賽之一。PASCAL VOC中包含多種任務,包括圖像分類、目標檢測、語義分割和動作檢測。兩種版本的Pascal-VOC主要用於對象檢測:VOC07和VOC12,前者由5k tr. images + 12k annotated objects組成,后者由11k tr. images + 27k annotated objects組成。這兩個數據集中注釋了生活中常見的20類對象(Person: person; Animal: bird, cat, cow, dog, horse, sheep; Vehicle: aeroplane, bicycle, boat, bus, car, motor-bike, train; Indoor: bottle, chair, dining table, potted plant, sofa, tv/monitor)。近年來,隨着ILSVRC、MS-COCO等大型數據集的發布,VOC逐漸淡出人們的視野,成為大多數新型檢測器的試驗台。
(2)ILSVRC
ImageNet大規模視覺識別挑戰(Large Scale Visual Recognition Challenge,ILSVRC)推動了通用目標檢測技術的發展。ILSVRC從2010年到2017年每年舉辦一次。它包含一個使用ImageNet圖像的檢測挑戰。ILSVRC檢測數據集包含200類視覺對象。它的圖像/對象實例的數量比VOC大兩個數量級。例如ILSVRC-14包含517k圖像和534k帶注釋的對象。
(3)MS-COCO
MS-COCO是目前最具挑戰性的目標檢測數據集。自2015年以來一直保持一年一度的基於MS-COCO數據集的比賽。它的對象類別比ILSVRC少,但是對象實例多。例如,MS-COCO-17包含來自80個類別的164k圖像和897k帶注釋的對象。與VOC和ILSVRC相比,MS-COCO最大的進步是除了邊框標注外,每個對象都進一步使用實例分割進行標記,以幫助精確定位。此外,MS-COCO包含更多的小對象 ( 其面積小於圖像的1% ) 和比VOC和ILSVRC更密集的定位對象。所有這些特性使得MSCOCO中的對象分布更接近真實世界。就像當時的ImageNet一樣,MS-COCO已經成為對象檢測社區的實際標准。
(4)Open Images
繼MS-COCO之后,開放圖像檢測(OID)技術在2018年迎來了前所未有的挑戰。在開放圖像中有兩個任務:1) 標准目標檢測,2) 視覺關系檢測,檢測特定關系中成對的目標。對於目標檢測任務,數據集由1,910k張圖像和15,440k個帶注釋的邊界框組成,這些邊界框位於600個對象類別上。
05 Datasets of Other Detection Tasks
在過去的幾年年里,除了一般的目標檢測外,在行人檢測、人臉檢測、文本檢測、交通標志/燈光檢測、遙感目標檢測等特定領域的檢測應用也十分繁榮。下面一系列表列出了這些檢測任務的一些流行數據集。有關這些任務的檢測方法的詳細介紹可在后期分享中找到。
pedestrian detection
06 Object DetectionMetrics
如何評估目標探測器的有效性? 這個問題甚至可能在不同的時間有不同的答案。
在早期的檢測社區中,對於檢測性能的評價標准並沒有得到廣泛的認可。例如,在行人檢測的早期研究中,“每個窗口的漏報率與誤報率(FPPW)” 通常用作度量。然而,逐窗測量(FPPW)可能存在缺陷,在某些情況下無法預測的完整圖像特性。2009年,加州理工學院(Caltech)建立了行人檢測基准,從那時起,評估指標從每窗口(per-window,FPPW)改為每圖像的偽陽性(false positive per-image,FPPI)。
近年來,對目標檢測最常用的評估方法是 “ 平均精度(AP) ”,該方法最早是在VOC2007中引入的。AP定義為不同召回情況下的平均檢測精度,通常以類別特定的方式進行評估。為了比較所有對象類別的性能,通常使用所有對象類別的平均AP(mAP)作為性能的最終度量。為了測量目標定位精度,使用Union上的交集(Intersection over Union,IoU)來檢查預測框和地面真實框之間的IoU是否大於預定義的閾值,比如0.5。如果是,則將該對象標識為 “ 成功檢測到 ”,否則將標識為 “ 未檢測到 ”。因此,基於mAP的0.5 -IoU多年來已成為用於目標檢測問題的實際度量。
2014年以后,由於MS-COCO數據集的普及,研究人員開始更加關注邊界框位置的准確性。MS-COCO AP沒有使用固定的IoU閾值,而是在多個IoU閾值上取平均值,閾值介於0.5(粗定位)和0.95(完美定 )之間。這種度量的變化鼓勵了更精確的對象定位,並且對於一些實際應用可能非常重要 ( 例如,假設有一個機器人手臂試圖抓住扳手 )。
近年來,對開放圖像數據集的評價有了進一步的發展,如考慮了組框(group-of boxes)和非窮舉的圖像級類別層次結構。一些研究者也提出了一些替代指標,如 “ 定位回憶精度 ”。盡管最近發生了一些變化,基於VOC/COCO的mAP仍然是最常用的目標檢測評估指標。
二.最近3年目標檢測盤點
本文將回顧近三年來最先進的目標檢測方法。
Detection with Better Engines
近年來,Deep CNN 在許多計算機視覺任務中發揮了核心作用。由於檢測器的精度在很大程度上取決於其特征提取網絡,因此本文將主干網絡 ( 如 ResNet 和 VGG ) 稱為檢測器的 “ 引擎 ”。下圖為三種知名檢測系統選擇不同引擎時的檢測精度:Faster RCNN,R-FCN和SSD。
在本節中,將介紹深度學習時代的一些重要的檢測引擎。關於這個話題的更多細節,請讀者參考下面的調查。
(1)AlexNetAlexNet是一個八層的深度網絡,是第一個開啟計算機視覺深度學習革命的 CNN 模型。AlexNet 通過大幅領先(15.3% 對 26.2% ( 第二名 ) 錯誤率),贏得了 2012 年 ImageNet LSVRC-2012 大賽。截至 2019 年 2 月,Alexnet 論文被引用超過 3 萬次。(2)VGGVGG是由牛津大學的視覺幾何學組(Visual Geometry Group,VGG)在2014年提出的。VGG將模型的深度增加到16-19層,使用非常小的卷積濾波器 ( 3x3 ) ,而不是以前 AlexNet 使用的 5x5 和 7x7 。VGG 在當時的 ImageNet 數據集上實現了最先進的性能。(3)GoogLeNetGoogLeNet 又稱 Inception,是由谷歌公司在2014年提出的一個CNN模型大家族。GoogLeNet 增加了 CNN 的寬度和深度 ( 多達22層 ) 。Inception 系列的主要貢獻是介紹了分解卷積和批量標准化(batch normalization)。(4)ResNetDeep Residual Networks ( 深度殘差網絡,ResNet )是由K. He等人在2015年提出的一種新型的卷積網絡架構,它比以前使用的卷積網絡架構要深很多(高達152層)。ResNet 的目標是簡化網絡的訓練,通過參考輸入層將其層重新構造為學習殘差函數。2015年,ResNet 在多個計算機視覺比賽中獲獎,包括 ImageNet 檢測,ImageNet 定位,COCO檢測,COCO分割。(5)DenseNetDenseNet由 G. Huang、Z. Liu 等人於2017年提出。ResNet 的成功表明,CNN的捷徑連接(the short cut connection)使能夠訓練更深、更准確的模型。作者接受了這一觀察結果,並引入了一個密集連接塊(a densely connected block),它以前饋的方式將每一層連接到另一層。 (6)SENet擠壓激勵網絡 ( Squeeze and Excitation Networks,SENet ) 是由J. Hu和L. Shen等人於2018年提出的。它的主要貢獻是將全局池化和混編(global pooling and shuffling)一體化,以學習 feature map 在通道方面(channel-wise)的重要性。SENet 在ILSVRC 2017 年分類競賽中獲得第一名。
Object detectors with new engines
近三年來,許多最新的引擎已應用於目標檢測。例如,一些最新的目標檢測模型,如 STDN,DSOD,TinyDSOD,Pelee,都選擇 DenseNet作為檢測引擎。Mask RCNN作為實例分割的最先進模型,采用了下一代 ResNet:ResNeXt作為其檢測引擎。此外,為了加快檢測速度,Xception引入了深度可分離卷積運算是 Incepion 的改進版本,也被用於MobileNet和LightHead RCNN等檢測器。
Detection with Better Features
特征表示的質量是目標檢測的關鍵。近年來,許多研究人員在一些最新的引擎的基礎上,進一步提高了圖像特征的質量,其中最重要的兩組方法是:1) 特征融合;2) 學習具有較大接受域的高分辨率特征。
Why Feature Fusion is Important?
不變性(Invariance) 和 同變性/等變化(equivariance) 是圖像特征表示的兩個重要性質。分類 需要不變的特征表示,因為它的目的是學習高級語義信息。目標定位 需要等變的表示,因為它的目的是區分位置和尺度的變化。由於目標檢測由目標識別和定位兩個子任務組成,因此檢測器必須同時學習不變性和等變性。
近三年來,特征融合在目標檢測中得到了廣泛的應用。由於CNN模型由一系列卷積層和池化層組成,更深層次的特征具有更強的不變性,但等變性較小。雖然這有利於分類識別,但在目標檢測中定位精度較低。相反,較淺層次的特征不利於學習語義,但它有助於對象定位,因為它包含更多關於邊緣和輪廓的信息。因此,CNN模型中深度和深度特征的融合有助於提高不變性和等變性。
Feature Fusion in Different Ways
在目標檢測中進行特征融合的方法有很多。本文從兩個方面介紹了近年來的一些方法:1) 處理流程;2) 元素智能操作。
(1)Processing flow
目前用於目標檢測的特征融合方法可分為兩類:1) 自底向上融合,2) 自頂向下融合,如下圖(a)-(b)所示。自底向上的融合通過跳躍連接將淺層特征前饋到更深的層。相比之下,自頂向下的融合將更深層次的特征反饋給更淺層次。除了這些方法,最近還提出了更復雜的方法,例如跨不同層編織特性。
由於不同層的 feature map 在空間維度和通道維度上都可能有不同的尺寸,因此可能需要對 feature map 進行調整,如調整通道數量、上采樣低分辨率 map 或下采樣高分辨率 map ,使其尺寸合適。最簡單的方法是使用最接近或雙線性插值(nearest or bilinear-interpolation)。此外,分數階條紋卷積 ( 又稱轉置卷積 )是近年來另一種常用的調整 feature map 大小和調整通道數量的方法。使用分數階條紋卷積的優點是,它可以學習一種適當的方法來執行上采樣本身。
(2)Element-wise operation
從局部的角度看,特征融合可以看作是不同特征映射之間的元素智能操作。有三組方法:1) element-wise 的和,2) element-wise 的積,3) 串聯,如上圖(c)-(e)所示。element-wise的和是執行特征融合最簡單的方法。它已被頻繁地用於許多最近的目標檢測器。element-wise 的積與 element-wise 的和非常相似,唯一的區別是使用乘法而不是求和。element-wise 的積的一個優點是,它可以用來抑制或突出某個區域內的特性,這可能進一步有利於小對象檢測。特征拼接/串聯是特征融合的另一種方式。它的優點是可以用來集成不同區域的上下文信息,缺點是增加了內存。
Learning High Resolution Features with Large Receptive Fields
接受域和特征分辨率是基於CNN的檢測器的兩個重要特點,前者是指輸入像素的空間范圍,用於計算輸出的單個像素,而后者對應於輸入與特征圖之間的下采樣率。具有較大接受域的網絡能夠捕獲更大范圍的上下文信息,而具有較小接受域的網絡則可能更專注於局部細節。
正如前面提到的,特征分辨率越低,就越難檢測小對象。提高特征分辨率最直接的方法是去除池化層或降低卷積下采樣率。但這將帶來一個新的問題,即由於輸出步長減小,接受域會變得太小。換句話說,這將縮小檢測器的“視線”范圍,並可能導致一些大型目標的漏檢。
一種同時提高接收域和特征分辨率的方法是引入膨脹/擴展卷積(dilated convolution),又稱無孔卷積(atrous convolution)或帶孔卷積(convolution with holes)。膨脹/擴展卷積最初是在語義分割任務中提出的。其主要思想是對卷積濾波器進行擴展,和使用稀疏參數。例如,膨脹率為2的3x3濾波器會具有與核為5x5的濾波器相同的接受域,但只有9個參數。膨脹卷積目前已廣泛應用於目標檢測中,在不需要任何額外參數和計算代價的情況下,被證明是提高精度的有效方法。
Beyond Sliding Window
雖然目標檢測已經從手工特征發展到深度神經網絡,但仍然遵循 “ 特征圖滑動窗口 ” 的模式。最近,在滑動窗之外還安裝了一些檢測器。
(1)Detection as sub-region search
子區域搜索提供了一種新的檢測方法。最近的一種方法是將檢測視為一個路徑規划過程,從初始網格開始,最終收斂到所需的ground truth box。另一種方法是將檢測看作是一個迭代更新過程,對預測邊界框的角進行細化。
(2)Detection as key points localization
關鍵點定位是一項重要的計算機視覺任務,有着廣泛的應用,如面部表情識別、人體姿態識別等。由於圖像中任何對象都可以由其在ground truth box的左上角和右下角唯一確定,因此檢測任務可以等價地框定為一對關鍵點定位問題。這個想法最近的一個實現是預測拐角的熱圖。該方法的優點是可以在語義分割框架下實現,不需要設計多尺度的錨框。
Improvements of Localization
為了提高定位精度,目前的檢測方法主要有兩種:1) 邊界框細化法;2) 設計新的損失函數進行精確定位。
Bounding Box Refinement
提高定位精度最直觀的方法是對邊界框進行細化,可以將其視為檢測結果的后處理。盡管邊界框回歸已經集成到大多數現代目標檢測器中,但是仍然有一些具有意外尺度的對象不能被預定義的錨框很好地捕獲。這將不可避免地導致對其位置的不准確預測。由於這個原因,“ 迭代邊界框細化(iterative bounding box refinement)” 最近被引入,它將檢測結果迭代地輸入BB回歸器,直到預測收斂到正確的位置和大小。但也有研究人員認為該方法不能保證定位精度的單調性,即多次使用BB回歸可能會使定位退化。
Improving Loss Functions for Accurate Localization
在大多數現代檢測器中,目標定位被認為是一個坐標回歸問題。然而,這種模式有兩個缺點。首先,回歸損失函數並不對應最終的位置評估。例如,不能保證較低的回歸誤差總是會產生較高的IOU預測,特別是當對象的長徑比非常大時。其次,傳統的邊界框回歸方法不能提供定位的置信度。當多個BB重疊時,可能導致非最大抑制失敗 ( 詳見之前的分享,點擊獲取連接 )。
設計新的損失函數可以緩解上述問題。最直觀的設計是直接使用IoU作為定位損失函數。其他一些研究人員進一步提出了一種IOU 引導的 NMS來改進訓練和檢測階段的定位。此外,一些研究者也嘗試在概率推理框架下改進定位。與以往直接預測框坐標的方法不同,該方法預測了邊界框位置的概率分布。
Learning with Segmentation
目標檢測和語義分割是計算機視覺中的重要任務。近年來的研究表明,通過學習和語義分割可以提高目標檢測能力。
Why Segmentation Improves Detection?
語義分割提高目標檢測能力的原因有三個。
(1)Segmentation helps category recognition
邊緣和邊界是構成人類視覺認知的基本要素。在計算機視覺中,物體(如汽車、人)和物體(如天空、水、草)的區別在於前者通常有一個封閉的、明確的邊界,而后者沒有。由於語義分割任務的特征能夠很好地捕捉到對象的邊界,因此分割可能有助於分類識別。
(2)Segmentation helps accurate localization
對象的ground-truth邊界框由其定義良好的邊界決定。對於一些特殊形狀的物體 ( 例如,想象一只貓有很長的尾巴 ),很難預測高IOU的位置。由於目標邊界可以很好地編碼在語義分割特征中,分割學習有助於准確的目標定位。
(3)Segmentation can be embedded as context
日常生活中的物體被不同的背景所包圍,如天空、水、草等,這些元素構成了一個物體的語境。整合上下文的語義分割將有助於目標檢測,例如,飛機更有可能出現在空中而不是水上。
How Segmentation Improves Detection?
通過分割提高目標檢測的主要方法有兩種:1) 采用豐富的特征學習;2) 采用多任務損失函數學習。
(1)Learning with enriched features
最簡單的方法是將分割網絡看作一個固定的特征提取器,並將其作為附加特征集成到檢測框架中。該方法的優點是易於實現,缺點是分割網絡可能帶來額外的計算。
(2)Learning with multi-task loss functions
另一種方法是在原有檢測框架的基礎上引入額外的分割分支,用多任務損失函數 ( 分割損失+檢測損失 ) 訓練該模型。在大多數情況下,分割分支將在推理階段被刪除。優點是檢測速度不受影響,缺點是訓練需要像素級的圖像標注。為此,一些研究人員采用了 “ 弱監督學習 ” 的思想:他們不是基於像素級注釋掩碼進行訓練,而是基於邊界框級注釋訓練分割分支。
Robust Detection of Rotation and Scale Changes
目標旋轉和尺度變化是目標檢測中的重要挑戰。由於CNN學習到的特征是不受旋轉和尺度變化的影響的,近年來很多人在這個問題上做出了努力。
Rotation Robust Detection
對象旋轉在人臉檢測、文本檢測等檢測任務中非常常見。這個問題最直接的解決方案是數據擴充,使任何方向的對象都能被擴充的數據很好地覆蓋。另一種解決方案是為每個方向訓練獨立的檢測器。除了這些傳統的方法,最近還有一些新的改進方法。
(1)Rotation invariant loss functions
旋轉不變損失函數學習的思想可以追溯到20世紀90年代。最近的一些工作對原有的檢測損失函數進行了約束,使旋轉后的物體的特征保持不變。
(2)Rotation calibration
改進旋轉不變的檢測的另一種方法是對候選對象進行幾何變換。這對於多級檢測器尤其有用,前階段的相關性將有利於后續的檢測。這種思想的代表是空間變壓器網絡(Spatial Transformer Networks,STN )。STN目前已被用於旋轉文本檢測和旋轉人臉檢測。
(3)Rotation RoI Pooling
在 two-stage 檢測器中,特征池化的目的是為任意位置和大小的對象建議(object proposal)提取固定長度的特征表示,首先將 proposal 均勻地划分為一組網格,然后將網格特征串聯起來。由於網格划分是在直角坐標系下進行的,其特征對旋轉變換不具有不變性。最近的一項改進是在極坐標下對網格進行網格划分,使特征對旋轉變化具有魯棒性。
Scale Robust Detection
近年來,在尺度魯棒檢測的訓練和檢測階段都有了改進。
(1)Scale adaptive training
大多數現代檢測器都是將輸入圖像重新縮放到一個固定的尺寸,並將物體在所有尺度下的損失進行反向傳播,如下圖(a)所示。但是,這樣做的缺點是會出現 “ 尺度不平衡 ” 問題。在檢測過程中構建圖像金字塔可以緩解這一問題,但不能從根本上解決。最近的一個改進是圖像金字塔的尺度標准化 ( Scale Normalization for Image Pyramids,SNIP ) ,它在訓練階段和檢測階段都建立圖像金字塔,只對一些選定尺度的損失進行反向傳播,如下圖(b)所示。一些研究人員進一步提出了一種更有效的訓練策略:使用高效重采樣的SNIP(SNIP with Efficient Resampling,SNIPER),即,將圖像裁剪並重新縮放到一組子區域,以便從大規模批量訓練中獲益。
(a)Single resolution image, backbone all objects (b)Multi-resolution images, backprop objects of selected scale
(2)Scale adaptive detection
現代檢測器大多采用固定的結構來檢測不同尺寸的物體。例如,在一個典型的基於CNN的檢測器中,需要仔細定義錨框的大小。這樣做的一個缺點是配置不能適應意外的尺度變化。為了提高對小目標的檢測,近年來的一些檢測器提出了一些 “ 自適應放大(adaptive zoom-in) ” 技術,自適應地將小目標放大為 “ 大目標 ”。最近的另一項改進是學習預測圖像中對象的尺度分布,然后根據分布自適應地重新縮放圖像。
Training from Scratch
大多數基於深度學習的檢測器首先在大規模數據集(如ImageNet)上進行預訓練,然后針對特定的檢測任務進行微調。人們一直認為預訓練有助於提高泛化能力和訓練速度,問題是,真的需要在 ImageNet 上對檢測器進行預訓練嗎? 事實上,采用預訓練網絡進行目標檢測存在一定的局限性。第一個限制是ImageNet分類和目標檢測之間的散度,包括它們的損失函數和尺度/類別分布。第二個限制是領域不匹配。由於ImageNet中的圖像是RGB圖像,而有時需要進行檢測的是深度圖像(RGB-d)或三維醫學圖像,因此無法很好地將預先訓練好的知識轉移到這些檢測任務中。
近年來,一些研究人員嘗試從零開始訓練一種目標檢測器。為了加快訓練速度和提高穩定性,一些研究人員引入密集連接(dense connection)和批量歸一化(batch normalization)來加速淺層的反向傳播。最近K . He等人的工作進一步質疑預訓練的范式通過探索相反的制度推進:他們報告了使用從隨機初始化訓練而來的標准模型對COCO數據集進行目標檢測的有競爭性的結果,唯一的改變是增加了訓練迭代的次數,以便隨機初始化的模型可以收斂。即使只使用10%的訓練數據,隨機初始化訓練的魯棒性也令人驚訝,這表明ImageNet預處理可以加快收斂速度,但不一定提供正則化或提高最終檢測精度。
Adversarial Training
由A. Goodfellow等人於2014年提出的生成式對抗網絡(Generative Adversarial Networks,GAN)近年來受到了極大的關注。一個典型的GAN由兩個神經網絡組成:一個生成網絡和一個判別網絡,它們在極小極大優化框架下相互競爭。通常,生成器學習從潛在空間映射到感興趣的特定數據分布,而鑒別器的目的是區分真實數據分布中的實例和生成器生成的實例。GAN廣泛應用於圖像生成、圖像樣式傳輸、圖像超分辨率等計算機視覺任務。近年來,GAN也被應用於目標檢測,尤其是對小遮擋目標的檢測。GAN被用來通過縮小小目標和大目標之間的模型表示來增強對小目標的檢測。為了提高對被遮擋物體的檢測,最近的一個想法是使用對抗性訓練生成遮擋掩模。與在像素空間中生成示例不同,對抗性網絡直接修改特性來模擬遮擋。
此外,“ 對抗性攻擊 ”研究如何用對抗性的例子攻擊檢測器,近年來受到越來越多的關注。這一課題的研究對於自主駕駛來說尤為重要,因為在保證其對對抗攻擊的魯棒性之前,不能完全信任它。
Weakly Supervised Object Detection
現代目標探測器的訓練通常需要大量的人工標記數據,而標記過程費時、昂貴、低效。弱監督目標檢測 ( Weakly Supervised Object Detection,WSOD ) 的目標是通過訓練一個只帶有圖像級注釋而不是邊界框的檢測器來解決這一問題。
近年來,多實例學習在WSOD中得到了廣泛的應用。多實例學習是一種有監督的學習方法。多實例學習模型不是使用一組單獨標記的實例進行學習,而是接收一組標記的包,每個包包含多個實例。如果將一個圖像中的候選對象看作一個包,並將圖像級注釋看作標簽,那么WSOD可以表示為一個多實例學習過程。
類激活映射是最近出現的另一組WSOD方法。對CNN可視化的研究表明,盡管沒有對目標位置的監控,但是CNN的卷積層表現為目標檢測器。類激活映射揭示了如何使CNN在接受圖像級標簽訓練的情況下仍然具有定位能力。
除了上述方法外,還有一些研究者認為WSOD是一個proposal排序過程,通過選擇信息量最大的區域,然后用圖像級注釋對這些區域進行訓練。WSOD的另一個簡單方法是屏蔽圖像的不同部分。如果檢測分數急劇下降,那么一個物體將高概率被覆蓋。此外,交互注釋在訓練中考慮了人的反饋,從而改進了WSOD。最近,生成對抗性訓練被用於WSOD。