李柯泉,陳燕,劉佳晨,牟向偉
(1.大連海事大學 航運經濟與管理學院,遼寧 大連 116026;2.河北金融學院 信息工程與計算機學院,河北 保定 071051)
目標檢測是對圖像中的感興趣目標進行識別和定位的技術,解決了圖像中的物體在哪里以及是什么的問題[1]。已有的研究表明,可靠的目標檢測算法是實現對復雜場景進行自動分析與理解的基礎。因此,圖像目標檢測是計算機視覺領域的基礎任務,其性能好壞將直接影響后續的目標跟蹤、動作識別以及行為理解等中高層任務的性能,進而也影響了人臉檢測、行為描述、交通場景物體識別、基于內容的互聯網圖像檢索等后續人工智能(Artificial Intelligence,AI)應用的性能[2-3]。隨著這些AI 應用滲透到人們生產和生活的各個方面,目標檢測技術在一定程度上減輕了人們的負擔,改變了人類的生活方式。
目標檢測領域的研究最早可以追溯到1991年由TURK[4]等提出的人臉檢測算法。近年來,隨著計算機硬件水平的提升、深度學習技術的發展以及各種高質量目標檢測數據集的提出,涌現出越來越多優秀的目標檢測算法。目標檢測算法的發展大致分為兩個階段:第一階段集中在2000 年前后,這期間所提出的方法大多基于滑動窗口和人工特征提取,普遍存在計算復雜度高和在復雜場景下魯棒性差的缺陷[5],為使算法能夠滿足實際需要,研究人員通過研究更加精巧的計算方法對模型進行加速,同時設計更加多元化的檢測算法,以彌補手工特征表達能力上的缺陷,代表性的成果包括Viola-Jones 檢測器[6]、HOG 行人檢測器[7]等;第二階段是2014 年至今,以文獻[8]提出的R-CNN 算法作為開端,這類算法利用深度學習技術自動地抽取輸入圖像中的隱藏特征,從而對樣本進行更高精度的分類和預測。隨著深度學習和計算機視覺的不斷突破,在R-CNN之后又涌現出了Fast R-CNN[9]、Faster R-CNN[10]、SPPNet[11]、YOLO[12]等基于深度學習的圖像目標檢測算法。相比傳統的目標檢測算法,基于深度學習的目標檢測算法具有速度快、準確性強、在復雜條件下魯棒性強等優勢[13]。
近年來,基于深度學習的目標檢測已經成為計算機視覺領域的一個熱門研究方向,研究人員提出了許多新的目標檢測算法。本文對基于深度學習的目標檢測算法進行綜述,闡述目標檢測,包括圖像目標檢測任務、數據集、評價標準、傳統目標檢測算法的基本框架和存在的問題等。按照是否包含顯式的區域建議及是否顯式地定義先驗錨框兩種標準對已有的目標檢測算法分類,介紹各類目標檢測算法中的代表算法并總結算法機制、優勢、局限性和適用場景。基于VOC 2007 和COCO 2018 數據集展示各類算法的性能表現并對各類目標檢測算法進行比較。在此基礎上,分析目前基于深度學習的目標檢測算法面臨的挑戰和解決方案,展望該領域的未來研究方向。
圖像目標檢測是計算機視覺領域最基本也是最具有挑戰性的任務之一,主要對輸入圖像中的目標進行識別和定位。圖1 所示為目標檢測的一個示例。其中,目標檢測的結果由兩部分組成:方形邊界框的顏色代表了目標的所屬類別(識別);方形邊界框的尺寸和位置代表了目標在輸入圖像中的位置(定位)(彩色效果見《計算機工程》官網HTML 版)。

圖1 目標檢測示例Fig.1 Example of object detection
在目標檢測任務中,bgt、bpred分別表示物體的真實邊界框和檢測到的邊界框。bgt、bpred的交并比(Intersection-over-Union,IoU)被用來評價所預測的邊界框的準確程度:

交并比閾值是一個預定義的常數,表示為Ω。當IIoU(bpred,bgt)>Ω時,認為bpred中的圖像為正樣本(包含物體),否則為負樣本(背景)。基于交并比和交并比閾值可以計算目標檢測的精確率(P)和召回率(R):

其中:TTP、FFP、FFN分別是真陽率、假陽率和假陰率,分別表示正樣本被預測正確的數量、負樣本被預測為正樣本的數量和背景被錯誤檢測為正樣本的數量。計算精確率和召回率時,一般取交并比閾值Ω=0.5。
平均精確率(Average Precision,AP)也是目標檢測中常用的指標,其計算公式為:

其中:P(t)表示交并比閾值Ω=t時的精確率。對于多類別的目標檢測任務,由于待檢測物體可能存在不同的所屬類別,通常用平均精確率均值(mean Average Precision,mAP)作為評價指標,其計算公式如下:

本文將以上評價指標統稱為精度,這些指標反映了目標檢測算法檢測到的物體邊界框的準確程度。除精度外,速度也是目標檢測算法重要的評價指標。最常用的描述目標檢測算法速度的評價指標是每秒檢測幀數(Frames Per Second,FPS),即算法平均每秒能夠檢測的圖像數量。
目標檢測算法的訓練和評價一般在特定的數據集上進行。目標檢測領域最重要的數據集有Pascal VOC[14-15]、ILSVRC[16]和Microsoft COCO[17]等。
Pascal VOC(Pascal Visual Object Classes)是2005 年—2012 年舉辦的一項計算機視覺領域的競賽,其中包含了目標檢測任務。VOC 2007 數據集是該競賽于2005年—2007年使用的數據的集合,VOC 2012則包含了該競賽2008 年—2012 年使用的全部數據。該數據集中的物體包含了人類、動物、車輛和室內物品4 個大類以及包括背景在內的21 個小類的物體。由于該數據集中的檢測任務相對簡單,近年來提出的目標檢測算法逐漸不再采用VOC 數據集對算法的性能進行評估。ILSVRC(ImageNet Large-Scale Visual Recognition Challenge)也是一項包含了目標檢測任務的競賽。相比VOC 數據集,LISVRC 中物體的所屬類目被擴充到200 種,且圖像數量和標注物體數量均明顯高于VOC 數據集。常用的LISVRC數據集有LISVRC 2014 和LISVRC 2017。Microsoft COCO 數據集是目前最有挑戰性的目標檢測數據集。雖然該數據集僅包含80 個類目,但該數據集將標注的物體按照尺度劃分為小、中、大三類。尤其是引入了大量的小目標物體,這使得該數據集中的前景物體更加密集,增加了任務的難度。Microsoft COCO 數據集包括COCO 2005 和COCO 2018 兩個常用版本。表1 列出了不同數據集的訓練集、驗證集和測試集中圖像數量和標注的物體數量,其中,括號內的數字表示數據集中經過標注的物體數量,括號外的數字是數據集中的圖像數量。

表1 目標檢測數據集圖像數量和標注過的物體數量Table 1 Number of images in the target detection dataset and the number of labeled objects
如圖2 所示,傳統的目標檢測框架中包含了3 個階段。區域建議的目的是找出輸入圖像中可能存在目標的區域,這些區域被稱為候選區域或感興趣區域(Regions of Interest,RoI)。由于目標可能有不同的尺寸且可能出現在任何位置,傳統方法大多使用不同尺度的滑動窗口對輸入圖像進行多次遍歷得到大量的候選區域[6,18-19]。特征抽取是第二個階段,該階段常用尺度不變特征(Scale Invariant Feature Transform,SIFT)[20]、局部二值模式特征(Local Binary Pattern,LBP)[21]、梯度直方圖特征(Histogram of Oriented Gradient,HOG)[22]等人工特征抽取方法將感興趣區域中的圖像轉換為特征向量。抽取到的特征向量作為第三階段的輸入。在該階段中,預訓練的分類器預測感興趣區域中物體的所屬類別并輸出目標檢測的結果。級聯學習、集成學習等機器學習方法常被應用于這一階段以提升目標檢測的精度。

圖2 傳統的目標檢測算法框架Fig.2 Framework of traditional target detection algorithms
傳統的目標檢測算法主要存在以下3 點缺陷:1)在區域建議階段,不同尺度的滑動窗口對輸入圖像進行多次遍歷產生大量的感興趣區域,在后續步驟中,算法對這些區域進行特征抽取和分類的過程存在大量冗余計算開銷,影響算法的運行速度,另外滑動窗口只有幾種固定的尺寸,通常不能與目標完美匹配;2)特征抽取階段僅能獲取圖像的低級特征,這些特征表達能力不足而且特征的有效性高度依賴具體任務,一旦檢測目標有重大變動就要重新設計算法;3)整個目標檢測過程被割裂為獨立的3 個階段,無法找到算法的全局最優解,算法的設計依賴設計者對檢測目標和具體任務的先驗知識。為了彌補這些缺陷,研究人員尋找更加精巧的計算方法對算法進行加速,使算法能夠滿足實時性的要求,同時設計更多元化的檢測算法以彌補人工特征表達能力不足的缺陷。
深度學習是能夠通過監督、半監督或無監督的訓練方法自動學習訓練數據中隱藏的數據內部結構的一類多層神經網絡算法。相比人工抽取低級特征,深度學習能夠將輸入圖像中的像素數據轉化為更高階、更抽象化的層級特征[23]。因此,深度學習抽取到的特征比傳統方法具有更強的表征能力和魯棒性,這一優勢使深度學習在計算機視覺領域的研究和應用中體現出不可替代的優越性,尤其是在目標檢測領域涌現出大量基于深度學習的研究成果。已有的目標檢測算法存在兩種分類標準:1)是否存在顯式的區域建議[24-25];2)是否顯式定義先驗錨框[26]。
按照算法是否存在顯式的區域建議,可將目標檢測算法分為兩階段目標檢測算法和一階段目標檢測算法。其中,兩階段目標檢測算法又稱為基于區域建議的目標檢測算法或基于感興趣區域的目標檢測算法。這類算法通過顯式的區域建議將檢測問題轉化為對生成的建議區域內局部圖片的分類問題。代表性的兩階段目標檢測算法有R-CNN、Fast R-CNN等。一階段目標檢測算法又稱為基于回歸的目標檢測算法。這類算法不直接生成感興趣區域,而將目標檢測任務視為對整幅圖像的回歸任務。代表性的一階段目標檢測算法有YOLO、SSD 等。圖3 所示為這兩類目標檢測算法的一般框架。

圖3 目標檢測算法框架Fig.3 Framework of target detection algorithms
2.1.1 兩階段目標檢測算法
文獻[8]提出的R-CNN 算法最早將深度學習技術成功應用在目標檢測領域,該算法是一種典型的兩階段目標檢測算法。相較于傳統的目標檢測算法,R-CNN 算法主要有以下3 點改進:1)在區域建議階段使用了選擇性搜索[27],解決了使用滑動窗口生成候選框導致計算量過大的問題;2)使用卷積神經網絡對感興趣區域進行特征提取,解決了傳統方法特征表達能力不足的問題;3)在使用SVM 分類器進行分類的同時,借助回歸算法對目標邊界進行補償和修正,以減小感興趣區域與實際目標的偏差。這些改進使R-CNN 算法相較傳統的目標檢測算法性能顯著提升。R-CNN 算法在Pascal VOC 2007 數據集上的mAP 達到了58.5%,遠高于此前傳統方法在該數據集上獲得的最好結果(如SegDPM[28]為40.4%)。
R-CNN 算法存在以下缺點:1)選擇性搜索依賴低級的視覺信息,在背景復雜時很難生成有效的候選框,另外,該過程無法通過GPU 等并行計算設備進行加速;2)在特征抽取時將圖像縮放或裁切至固定尺寸,造成信息丟失;3)深度學習方法分別提取每個感興趣區域中圖像的特征,該過程產生大量重復計算;4)R-CNN 中各個部分依舊是割裂的,訓練步驟繁瑣、耗時,且很難找到全局最優解。
文獻[11]提出了SPP-Net 目標檢測算法,它是R-CNN 的一種改進,該算法借鑒了金字塔空間匹配(Spatial Pyramid Matching,SPM)算法,在第二階段引入了金字塔空間池化層(Spatial Pyramid Pooling,SPP)[29]。與R-CNN 相比,SPP-Net 首先通過骨干網絡直接得到整個輸入圖像的特征圖,而非分別抽取每個感興趣區域的特征,減少了計算冗余。然后SPP-Net 引入金字塔空間池化層將特征圖中與感興趣區域對應的部分轉化為固定尺寸的特征。由于避免了對感興趣區域中的圖像進行縮放和裁切等操作造成的信息丟失,SPP-Net 的精度相對R-CNN 得到了進一步的提升,它在VOC 2007 數據集上的mAP達到了60.9%。另外,由于SPP-Net 僅需要進行一次卷積操作,其運行速度相對R-CNN 得到了明顯的提升。在達到與R-CNN 近似甚至更高精度的前提下,SPP-Net的運行速度是R-CNN的24倍~102倍。SPP-Net的缺點在于:雖然優化了R-CNN 時間開銷的問題,其感興趣區域中圖像的特征仍然需要單獨保存,存在較大空間開銷。此外,與R-CNN 類似,SPP-Net 中的特征提取、分類、回歸依舊是割裂的。
針對SPP-Net 算法的不足,文獻[9,30]提出了Fast R-CNN算法。相對SPP-Net算法,Fast R-CNN算法主要有兩點改進:1)使用感興趣池化層(RoI Pooling layer)代替了SPP-Net 的金字塔空間池化層,感興趣池化層與金字塔空間池化層具有類似的功能,能夠將不同尺寸的感興趣區域對應的特征劃分為相同尺寸的特征向量,但感興趣池化層更為簡潔;2)提出了新的多任務損失函數,該函數將分類任務與邊框回歸任務整合到主干卷積神經網絡中,使這兩個任務能夠共享主干卷積神經網絡的參數,從而進一步降低了目標檢測所需的計算資源。這兩點改進使得Fast R-CNN 的檢測速度明顯提升,并初步實現了端到端的目標檢測。該算法在VOC2007 數據集上的檢測率分別達到了70.0%。
Fast R-CNN 在區域建議階段依舊使用選擇性搜索生成感興趣區域。由于選擇性搜索無法使用GPU進行加速,制約了目標檢測的訓練和運行速度。文獻[10]提出的Faster R-CNN 算法用區域預測網絡(Region Proposal Network,RPN)代替傳統的感興趣區域預測方法。由于提取候選區域網絡是基于深度學習的方法,因此可以借助GPU 加速,提升Faster R-CNN 算法訓練和運行的速度。
Faster R-CNN 算法使用骨干網絡獲取輸入圖像的特征。骨干網絡通常是多個卷積層的堆疊,雖然能夠獲取圖像的高級特征,但這些特征具有平移不變性[31-32],不利于對目標框的檢測。為了解決這一問題,該算法在第二階段使用全連接層消除所抽取到特征的平移不變性,但這造成了該算法的兩點缺陷:1)第二階段無法實現對多個感興趣區域進行計算時的參數共享,產生額外的計算開銷,影響算法速度;2)全連接層的加入消除了特征的平移不變性的同時,也造成了信息的丟失,影響算法的精度。
針對Faster R-CNN 算法這兩點缺陷,文獻[33]提出了R-FCN 算法。該算法主要有兩點創新:1)將全卷積網絡(Fully Convolutional Network,FCN)應用于Faster R-CNN,使算法第二階段的計算也實現了參數共享,提升了檢測速度;2)提出了位敏得分圖和位敏池化層對目標檢測任務中的平移不變性和平移可變性進行權衡,使R-FCN 在提升了檢測速度的基礎上達到和Faster R-CNN 接近的精度。
圖4 對有代表性的兩階段目標檢測算法進行總結。這些算法的演化主要存在2 個趨勢:1)實現參數共享以提升算法運行速度;2)提出新的訓練策略使算法從多個割裂的步驟逐步向端到端演化。

圖4 兩階段目標檢測算法Fig.4 Two-stage target detection algorithms
2.1.2 一階段目標檢測算法
兩階段目標檢測算法在第一階段生成區域建議,在第二階段僅針對感興趣區域中的內容進行分類和回歸,丟失了局部目標在整幅圖像中的空間信息。為此,研究人員提出了一階段目標檢測算法來解決這一缺陷。
文獻[34]提出的基于二進制掩膜的目標檢測算法是一種早期的一階段目標檢測算法。該算法采用AlexNet[35]作為骨干網絡,但將網絡的最后一層替換成回歸層。通過回歸預測目標的二進制掩膜并以此為依據提取目標邊界框。由于單一掩膜難以區分識別的目標是單一的物體還是多個相鄰的物體,算法需要輸出多個掩膜。這使網絡訓練變得困難,也導致該算法很難應用于對多個類別目標的檢測。文獻[36]提出的Overfeat 算法也是一種一階段目標檢測算法的早期嘗試。該算法針對分類、定位、檢測3 個不同的任務將骨干網絡的最后一層替換成不同的分類或回歸層,這些任務共享骨干網絡的參數。骨干網絡由AlexNet 實現,但該算法用偏置池化代替了原本的最大池化以消除特征粒度不足的問題。該算法借助卷積層代替了滑動窗口的操作,大幅提升了目標檢測的速度,但是該算法難以實現對小尺寸目標的檢測。
文獻[12]提出的YOLO 算法是最早具有實際應用價值的一階段目標檢測算法。該算法的骨干網絡采用了類似GoogLeNet[37]的結構,直接基于整幅輸入圖像預測圖像中物體的類別和邊界框的位置、尺寸等信息。該算法將輸入圖像劃分為S×S個網格,并對每個網格預測B個邊界框,對每個網格中的物體分別進行預測。因此,對于具有C個類別的目標檢測任務,YOLO 算法的輸出y是一個尺寸為S×S×(B×5+C)的矩陣,其中,yi,j表示對第i行第j列網格的預測結果。每個預測的結果包括邊界框的位置、尺寸、置信度以及邊界框中的物體屬于各個類別的概率。這種劃分網格的方法避免了大量的重復計算,使YOLO 算法達到了較快的檢測速度。在VOC 2007數據集中達到了45 frame/s 的檢測速度。另外,由于YOLO 算法基于整個輸入圖像進行檢測,而非基于局部進行推斷,這使其背景誤檢率只有13.6%,遠小于已有的兩階段目標檢測算法。然而,該算法仍存在以下不足:1)精度相對較差,在VOC 2007 上的精確性只有63.4%,低于Faster R-CNN 等同時期的兩階段目標檢測算法;2)對于成群的小目標、多個相鄰的目標或具有異常尺寸的目標檢測效果較差。
YOLO 算法取得的成功引起了眾多研究者的關注,YOLOv2[38]、YOLOv3[39]、YOLOv4[40]等YOLO 算法的改進型算法被陸續提出。其中,YOLOv2 應用了批量正則化、高分辨率分類器、基于聚類的邊界框預測、新的骨干網絡和聯合訓練方法等技術來獲得更高的精確度。在此基礎上,作者訓練了名為YOLO9000 的目標檢測算法,使YOLO9000 可以檢測目標類別的種類達到了9 000 種。YOLOv3 使用了更加復雜的骨干網絡,該網絡參考了Resnet101[41]使運行速度更快。YOLOv3 還使用了多尺度的特征融合以獲取更多小目標的有用信息,從而提升算法對小目標檢測的精確度。YOLOv4 應用了新的骨干網絡并結合空間金字塔池化和路徑聚合網絡(Path Aggregation Network,PAN)[42]進行特征融合,從而獲得更高的性能。這些方法都為新的一階段目標檢測算法的設計提供了借鑒,也證明了骨干網絡設計、高效特征融合等技術對提升目標檢測性能具有重要意義。
針對YOLO 算法在小目標檢測中的不足,文獻[43]提出了SSD 算法,該算法采用了與YOLO 算法類似的網格劃分的方法。與YOLO 算法相比,該算法主要有以下4 點改進:1)使用了多尺度特征進行檢測;2)舍棄了YOLO 算法中的全連接層,改用全卷積網絡;3)為每個網格設定多個具有不同長寬比的先驗邊界框;4)使用了數據擴增[44]技術。這些改進可使SSD 算法在運行速度上媲美YOLO 算法,同時在性能上不遜于Faster R-CNN,其在VOC 2007 數據集中的mAP 達到了74.3%。但該算法仍存在以下2 點不足:1)先驗邊界框的尺度需要人工設置而非從數據中學習而來,導致該算法的訓練非常依賴經驗;2)對小目標的檢測效果依舊弱于兩階段目標檢測算法。
針對SSD 算法在小目標檢測中存在的不足,文獻[45]提出了DSSD 算法。該算法將SSD 算法的骨干網絡替換為Resnet101 以增強算法的特征提取能力,并引入了反卷積層將抽取到的低級特征轉化為較高層次的語義信息。在此基礎上,作者又提出一種特征融合方法,將反卷積得到的語義信息與卷積獲得的低級特征融合,從而提升了算法的檢測精度,尤其是對小目標的檢測精度。該算法在VOC 2007數據集中的mAP 達到了81.5%,高于SSD 算法。其在COCO 2018 數據集中對小目標檢測的AP 值也達到了13.0%,高于YOLO 算法的10.2%。此外,SSD 的改進算法還有FSSD[46]、RefineDet[47]、M2Det[48]等,這些改進均為SSD 算法的性能帶來了提升。
生成的候選框中的內容存在類別不均衡是已有的一階段目標檢測算法精確度普遍低于兩階段目標檢測算法的一個重要原因[49]。針對這一問題,文獻[50]提出了RetinaNet 算法,基于標準交叉熵損失改進得到焦點損失函數。焦點損失的應用可以使算法根據候選框中的內容自動地調節正負樣本對損失的貢獻度,使算法更關注于低置信度的樣本,從而減小類別不均衡對算法精確度的影響。該算法在多個數據集上達到了接近兩階段目標檢測算法的精確度,但是該算法的運行速度明顯低于YOLO、SSD 等一階段目標檢測算法。
圖5 所示為一階段目標檢測算法。一階段目標算法的演化存在以下2 個趨勢:1)構建具有更強表征能力的骨干網絡以提升算法的精度;2)提出新的損失函數以解決目標檢測過程中遇到的樣本不均衡等問題。

圖5 一階段目標檢測算法Fig.5 One-stage target detection algorithms
按照是否定義先驗錨框可以將已有的目標檢測算法分為基于錨框的目標檢測算法和無錨框目標檢測算法。
2.2.1 基于錨框的目標檢測算法
基于錨框的目標檢測算法通過顯式或隱式的方式創建一系列具有不同尺寸、長寬比的檢測框(錨框),然后對錨框中的內容進行分類或回歸。前文介紹的大部分目標檢測算法,如R-CNN、Faster R-CNN、SSD 均是基于錨框的目標檢測算法。其中,基于錨框的兩階段目標檢測算法利用選擇性搜索等方法顯式地創建一系列錨框,基于錨框的一階段目標檢測算法在骨干網絡提取輸入圖像特征的同時,按照預定義的錨框屬性隱式地獲取檢測框中圖像的特征。
基于錨框的目標檢測算法需要根據物體的尺寸、長寬比在訓練數據中的分布確定錨框的尺度、長寬比、生成錨框數量、交并比閾值等超參數。這些超參數的值的選取會影響算法精度。其中的一個示例是錨框超參數的選取對RetinaNet 算法在COCO 數據集中的精確度造成至少4%的改變[50]。這種影響使基于錨框的算法在更換應用場景后往往無法達到令人滿意的性能。因此,在目標檢測算法中應用錨框不但依賴先驗知識,也使算法缺乏泛化能力。
在算法的訓練過程中,基于錨框的目標檢測算法分別計算每個錨框與物體的真實邊界框的交并比。該過程增加了算法的計算量且無法借助GPU等并行計算設備提升速度。因此,錨框的應用提升了算法的計算復雜度,降低了目標檢測算法的訓練速度。
算法基于錨框獲得檢測結果:首先兩階段目標檢測算法對錨框內的圖像分類,然后通過回歸等方式調整錨框邊界得到物體邊界框;一階段目標檢測算法直接基于生成的錨框預測目標的邊界框。生成錨框的過程忽略了錨框中前景(物體)與背景的比例,導致訓練樣本中負樣本(只包含背景的錨框)的數目明顯多于正樣本(包含物體的錨框),存在嚴重的類別不平衡問題,這是限制目標檢測算法精度的一個主要原因。此外,錨框難以檢測到異常物體,這導致基于錨框的算法在檢測尺度、長寬比異常的物體時召回率過低。因此,錨框的應用限制了目標檢測算法的精度。
綜上所述,雖然基于錨框的目標檢測算法取得了成功,但同時存在以下4 點缺陷:1)錨框的設計依賴先驗知識,缺乏泛化能力;2)訓練過程大量計算錨框與真實邊界框的交并比,造成冗余計算;3)基于錨框生成的訓練樣本中正負樣本失衡,影響檢測精度;4)對異常物體檢測精度較差。
2.2.2 無錨框目標檢測算法
針對基于錨框的目標檢測算法的缺陷,研究人員提出了無錨框目標檢測算法,這類算法移除了預設錨框的過程,直接預測物體的邊界框。因此,這種方法存在3 個優點:1)錨框的參數從數據中學習而來,魯棒性強;2)訓練過程中無需大量重復計算錨框與真實邊界框的交并比,節省了訓練時間;3)可以避免訓練過程中樣本失衡的問題。
無錨框目標檢測算法可以分為基于中心域的目標檢測算法和基于關鍵點的目標檢測算法。
基于中心域的目標檢測算法直接預測物體的中心區域坐標和邊界框的尺度信息。文獻[51]提出的DenseBox 算法是一種早期的基于中心域的算法。它將每一個像素作為中心點,分別預測該點到其所在的物體上下左右邊界的距離以及物體屬于不同類別的概率,即對輸入圖像的每一個像素預測一個邊界框。然后通過非極大值抑制(Non-Maximum Suppression,NMS)對這些邊界框進行篩選。該方法在人臉檢測等小目標檢測任務的精度明顯高于基于錨框的算法,但該算法也被證實不適用于通用目標檢測,且對重疊物體檢測效果較差。YOLO 算法也是一種早期的基于中心域的目標檢測算法,該算法將輸入圖像劃分為S×S個網格,對每個網格,算法預測網格中物體的中心點橫、縱坐標(中心點)、物體邊界框的長度和寬度(邊界框的尺度信息)以及物體屬于各類別的概率。由于YOLO 算法只檢測離中心點距離最近的物體,導致其召回率偏低,算法的精度低于同時期基于錨框的一階段目標檢測算法,因此無錨框方法在其后續版本的YOLOv2 和YOLOv3 沒有被繼續采用。盡管其在性能上存在局限性,但DenseBox 算法和YOLO 算法的思想為后續的無錨框目標檢測算法提供了借鑒。
文獻[52-53]提出的FCOS 算法采用了與DenseBox 算法類似的逐像素預測邊界框的思想,并給出一種基于多尺度特征的重疊物體檢測方法。在該方法中,骨干網絡可以提取輸入圖像的多尺度特征:淺層特征包含更多細節,對小目標檢測有利;深層特征包含更多語義信息,偏向大目標檢測。假設重疊的物體具有較大尺度差異,使用不同層次的特征預測不同尺度的物體邊界框從而實現對同一區域重疊物體的檢測。FCOS 算法的不足主要體現在當所預測的像素與物體實際的中心點存在較遠距離時檢測結果容易受到重疊物體語義交疊的影響。
文獻[54]提出的FoveaBox 算法解決了FCOS 算法的不足。該算法使用了與FCOS 算法相同的思路解決物體重疊的問題,但是引入了可調節的正負樣本衰減機制增強了訓練過程中正負樣本之間的判別度,從而避免重疊區域語義交疊的影響。此外,該算法并非直接預測中心點與邊界框各邊的距離而是從數據中學習所預測中心點與邊界框各邊的映射關系從而實現了更強的魯棒性。
另一類無錨框算法是基于關鍵點的目標檢測算法,一般以熱力圖的方式預測輸入圖像中各個點是邊界框中的關鍵點的概率,然后將多組熱力圖組合得到物體邊界框。
文獻[55]提出的CornerNet 算法是一種代表性的基于關鍵點的算法。它首先使用骨干網絡抽取輸入圖像的特征,然后基于這些特征生成兩組不同的熱力圖分別預測圖像中各個像素是錨框的左上角點和右下角點的概率、角點對應物體的所屬類別信息以及錨框的誤差信息,最后根據這些信息配對預測的角點得到物體邊界框。該算法完全擺脫了錨框的約束,僅依靠關鍵點預測物體的邊界框且取得了較高的精度。該算法的缺點是僅關注物體的邊界信息,忽略了待檢測物體本身的特征,對物體的分類不夠準確。
文獻[56]提出的CenterNet算法改進了CornerNet算法的缺陷。該算法在CornerNet 基礎上加入了對物體中心點的預測,這項改進使算法在預測邊界框時考慮到邊界框內部物體的特征從而提升算法的精度。
以上算法都需要在算法的最后使用非極大值抑制去除冗余的邊界框,影響算法速度。文獻[57]提出CenterNe(tObject as Point)算法,不再需要去除冗余邊框。首先,該算法采用了基于關鍵點的思想,使用熱力圖預測物體的中心點。然后,采用基于中心預測的思想,利用所預測中心點處獲取的特征預測邊界框的長度和寬度從而得到檢測結果。這種混合方法的應用使算法不需要借助非極大值抑制去除冗余結構,因此計算比已有的目標檢測算法更加簡潔。
無錨框目標檢測算法的提出是為了彌補基于錨框的目標檢測算法在小目標檢測的缺陷,在特定場景的小目標檢測中的表現優于基于錨框的目標檢測算法,但許多無錨框算法也被指出不適合應用于通用目標檢測。由于這類算法出現較晚,因此仍有較大潛力實現進一步提升。
表2 對各類目標檢測算法的機制、優勢、局限性和適用場景進行了總結。

表2 各類目標檢測算法的機制、優勢、局限性及適用場景Table 2 Mechanism,advantages,limitations and application scenarios of each category of target detection algorithms
本節對一些代表性的基于深度學習的目標檢測算法的性能進行比較。
表3 和表4 分別展示了不同目標檢測算法在VOC 2007 和COCO 2018 數據集中的性能。其中,注釋為“*”的算法為兩階段目標檢測算法,未使用“*”注釋的算法為一階段目標檢測算法,注釋為“?”的算法為無錨框目標檢測算法,未使用“?”注釋的算法為基于錨框的目標檢測算法,在表4 中,APS、APM 和APL 分別表示算法對小尺寸物體、中等尺寸物體和大尺寸物體檢測的AP 值。這些算法具有不同的骨干網絡、輸入圖像的分辨率、超參數以及硬件條件,這些因素可能影響算法的最終性能。為了保證所列出數據的參考價值,表中給出的結果盡量選擇了已有文獻中算法在近似條件下的性能。

表3 目標檢測算法在VOC 2007 數據集中的性能Table 3 Performance of target detection algorithms on VOC 2007 dataset

表4 目標檢測算法在COCO 2018 數據集中的性能Table 4 Performance of target detection algorithms on COCO 2018 dataset %
從表3、表4 可以得出5 點結論:1)盡管兩階段目標檢測算法的運行速度在不斷演化中得到提升,依舊明顯慢于一階段目標檢測算法;2)借助更復雜的骨干網絡以及一些高級深度學習技術,一階段目標檢測算法的精度能夠接近甚至超過兩階段目標檢測算法,說明骨干網絡的設計對一階段目標檢測算法精度的提升具有重要意義;3)在一階段目標檢測算法中,DSSD 和ASSD 的精度明顯高于其他算法,但速度也明顯慢于其他算法,類似地,YOLO 及其衍生算法速度較快,但精度低于其他一階段目標檢測算法,說明算法的速度和精度依舊難以兼得;4)由于引入了大量小目標物體,增大了目標檢測的難度,所有算法在COCO 2018 數據集中的精度均有所降低,說明小目標檢測是目前目標檢測的一個重要挑戰;5)無錨框目標檢測算法在COCO 2018 數據集中的精度,尤其是對小物體檢測的精度要高于基于錨框的算法,這證明了無錨框目標檢測算法是未來重要的發展方向。
目前,基于深度學習的目標檢測算法處于快速發展階段,產生了許多新的理論、方法和應用。本文將未來的研究方向歸納如下:
1)如何獲取高質量的目標檢測數據集。基于深度學習的目標檢測算法是一類數據驅動的算法,算法的精度和魯棒性依賴于數據集的規模和質量[58]。目標檢測數據集的構建依賴于人工標注,工作量極大而且成本高昂。目前這一問題主要有兩種解決方法:一種方法是提升對已有數據集的利用效率,如同時使用多個數據集中的數據訓練算法[59]或借助數據增強[60]、遷移學習[61]等技術對算法進行訓練;另一種方法是借助半自動標注技術[62-63]降低數據標注的成本,但這些方法都不能從根本上解決缺乏大規模目標檢測訓練數據的問題。隨著深度學習技術的發展,半監督和無監督的深度學習方法在目標檢測領域的應用能夠大幅降低目標檢測數據集的標注成本。
2)如何提升骨干網絡的性能。深度學習強大的特征提取能力是基于深度學習的目標檢測算法取得成功的關鍵。骨干網絡對目標檢測算法性能的影響主要體現在精度和性能兩個方面:一方面,更加復雜的骨干網絡通常具有更強的特征抽取能力,使目標檢測算法具有更高的精度,文獻[64]通過實驗證明了骨干網絡的深度、寬度和輸入圖像的分辨率都會對算法的精度產生影響,另外卷積、反卷積、殘差網絡等深度學習基本模塊和Transformer[65]、圖神經網絡(Graph Neural Network,GNN)[66-67]等新的神經網絡架構在目標檢測領域的應用都能提升算法的精度;另一方面,骨干網絡的速度決定了目標檢測算法的檢測速度,SqueezeNet[68]、MobileNet[69]、ShuffleNet[70]等輕量化骨干網絡在目標檢測領域的應用提升了算法的速度,這些骨干網絡存在的共同點是它們都是研究者手工設計的,設計的過程非常耗時且設計的結果并非全局最優。基于神經架構搜索(Neural Architecture Search,NAS)[71]的自動化網絡設計和基于AutoML[72]的自動網絡壓縮能夠在較少人工干預下自動求解最優的網絡結構。這些技術在目標檢測領域的應用有助于構建出具有更高性能的骨干網絡。
3)如何提升算法對異常尺度目標的檢測精度。已有的目標檢測算法在檢測異常尺度目標尤其是成群的小目標時存在檢測精度偏低的問題。多數算法采用特征金字塔等多尺度的特征抽取方法和構造的損失函數提升算法對異常尺度目標的檢測精度[73]。這些方法均缺乏對圖像中內容的理解,雖然在一定程度上使問題得到了改善,但都沒有從根本上解決這一問題。上下文學習是一種通過算法學習輸入圖像中“目標與場景”、“目標與目標”之間存在的共存關系的機器學習技術。未來將借助基于類別語義池的上下文記憶模型[74]、圖推理[75]和知識圖譜[76]等技術,能使算法根據抽取到的特征推斷目標的存在,從而提升檢測精度。
4)如何實現面向開放世界的目標檢測。已有的目標檢測算法大多基于封閉的數據集進行訓練,僅能實現對數據集中所包含的特定類別的目標檢測。在現實應用中,目標檢測算法需要檢測的目標的類別往往是動態化和多樣化的,如在自動駕駛、植物表型分析、醫療保健和視頻監控的場景下,算法在訓練時無法全面了解推理時預期的類別,只能在部署后學習新的類別,大部分已有的算法無法解決這些需求。面向開放世界的目標檢測能夠在沒有明確監督的前提下,將未知的目標識別為“未知”類別,并且能夠在獲得這些“未知”類別的標簽后逐步對新的類別進行學習而不遺忘舊的類別。這類方法的研究將使基于深度學習的目標檢測算法在現實中得到更多的應用。
5)如何基于深度學習進行其他形式的目標檢測。目前對目標檢測的研究主要集中在圖像目標檢測,對于其他形式的目標檢測,如3D 目標檢測、視頻目標檢測涉及較少。這些目標檢測任務對自動駕駛、工業機器人等領域具有重要意義。由于安全性、實時性的要求,導致對目標檢測算法的精度和速度有更高的要求,因此難度較高。這些領域背后蘊含著巨大的市場和經濟效益,使這些形式的目標檢測算法的研究具有較好的發展前景。
深度學習技術可有效提升目標檢測算法的性能并使其適用于復雜環境。本文以是否存在顯式的區域建議與是否定義先驗錨框兩種分類標準對已有基于深度學習的目標檢測算法進行分類,總結各類算法的機制、演進路線、優勢、局限性及適用場景,并對各類目標檢測算法在VOC 2007 和COCO 2018 數據集中的性能進行對比和分析。在此基礎上,對基于深度學習的目標檢測未來研究方向進行展望。