高海濤,朱超涵,張?zhí)炱?,郝飛,茅新宇
(南京工程學院機械工程學院,江蘇南京 211167)
目標檢測(Object Detection)是一種通過提?。治瞿繕藥缀魏徒y(tǒng)計特征進行圖像分割識別目標的技術,其在安防、姿態(tài)估計、無人駕駛等領域得到廣泛使用。由于檢測對象復雜多樣,再加上獲取圖像時有光照、遮擋等因素干擾,目標檢測一直是計算機視覺領域具有挑戰(zhàn)性的研究之一。在深度學習算法出現(xiàn)之前,傳統(tǒng)目標檢測通常利用滑動窗口對手工特征進行提取、匹配,存在檢測目標單一、時間和空間復雜度較高并且魯棒性差等問題。隨著深度學習算法的廣泛應用,基于深度學習的目標檢測通過高效的網(wǎng)絡結(jié)構(gòu)和高算力GPU(Graphics Processing Unit),在檢測精度與效率等方面顯著提高,逐漸成為當前的主流算法[1-3]。
基于深度學習的目標檢測可以總結(jié)為有錨框構(gòu)架和無錨框構(gòu)架兩類。有錨框目標檢測算法將目標邊界劃分為多個錨框來預測每個目標的偏移量和類別,其進一步又可以分為單階段法和雙階段法兩種[4]。其中,單階段方法直接生成回歸物體的類別、位置信息,而雙階段方法則先生成樣本候選框,再對樣本分類,獲得目標信息。由于需要獲取的錨框數(shù)量巨大,正負樣本嚴重不平衡,訓練效率低,使得有錨框檢測算法存在運算速度慢的突出問題[5-7]。此外,錨框機制也引入了更多的超參數(shù),如錨框的數(shù)量、大小和寬高比等,這增加了算法的設計難度,使得數(shù)據(jù)集調(diào)優(yōu)困難,通用性較差。
無錨框檢測方法則將目標框檢測轉(zhuǎn)變?yōu)閷Χ鄠€關鍵點/域的檢測,通過獲得關鍵點/域的位置信息來預測邊框[8],該方法不需要設計錨框,減少了對錨框的各種計算,節(jié)省了算力和時間,是目標檢測領域一個全新的方向。根據(jù)關鍵點/域選取的不同,無錨框檢測可以歸結(jié)為關鍵點法和中心域法兩種。關鍵點法中的關鍵點主要為角點或者中心點。角點法是通過角點的特征信息匹配生成檢測框,避免了預設錨框帶來的計算冗余問題[9],典型算法如CornerNet、CornerNet-Lite 等。中心點法通過關鍵點三元組(左上角點、右下角點和中心點),回歸得到目標中心點的位置、偏移量等信息,預測目標邊框,典型的算法有CenterNet、CenterNet++等。中心域法則利用全卷積算法,逐像素地直接預測物體的中心區(qū)域坐標和邊界框的尺度信息,在特征提取過程中充分利用了圖像的整體信息,典型的算法如FSAF(Feature Selective Anchor-Free Module for Single-Shot Object Detection)、FCOS(Fully Convolutional One-Stage Object Detection)等[10-13]。
無錨框目標檢測算法種類眾多、適用范圍不盡相同,為了進一步理清無錨框目標檢測關鍵技術及網(wǎng)絡結(jié)構(gòu),本文作者總結(jié)了各代表性無錨框檢測算法的思想、網(wǎng)絡構(gòu)架及關鍵技術,著重分析了各算法的特性,并進一步通過實例實驗定量對比了各種檢測算法的性能,對未來的研究進行了總結(jié)和展望。
1.1.1 ConerNet 算法
ConerNet 算法是基于關鍵點檢測中經(jīng)典的架構(gòu)之一,主要包括1 個骨干網(wǎng)絡和2 個預測分支,網(wǎng)絡結(jié)構(gòu)如圖1 所示。骨干網(wǎng)絡通常是Hourglass-104,兩個預測分支分別定義為Top-Left 預測模塊和Bottom-Right 預測模塊,每個分支均含有1 個角點池化模塊和3 個輸出。3 個輸出分別是熱力圖(Headmaps)、偏移向量(Offset)以及嵌入向量(Embedding)。熱力圖含有角點的位置信息。偏移向量用來修正取整計算時損失的精度信息。最后通過聯(lián)合2 個分支輸出的嵌入向量,將同一個目標的左上角和右下角的兩個角點成組,從而實現(xiàn)基于角點的無錨框目標檢測。
圖1 ConerNet 網(wǎng)絡結(jié)構(gòu)Fig.1 ConerNet network structure
角點池化(Corner Pooling)是ConerNet 算法的最主要創(chuàng)新,其核心是認為輸出角點應該是最大響應點[14]。如圖2 所示,針對圖像中左上角點,過當前預測角點作兩條直線,分別與圖像的u軸和v軸平行,當兩條直線剛好“觸碰” 到目標最邊緣點時,則輸出當前預測結(jié)果。通過利用圖像中額外信息,Corner Pooling 不僅大幅提高了角點預測的精確度,也大大提升了目標的整體檢測效率。ConerNet 算法也存在著一些不足,比如:缺乏對檢測目標全局信息的考慮、識別速度慢等。
圖2 Corner pooling 原理Fig.2 Corner pooling principle
1.1.2 CornerNet-Lite 算法
CornerNet-Lite 算法是由LAW 等[15]提出的旨在解決CornerNet 因追求準確性而出現(xiàn)高昂的網(wǎng)絡處理代價的問題,網(wǎng)絡結(jié)構(gòu)如圖3 所示。它是CornerNet兩個變體CornerNet-Saccade 與CornerNet-Squeeze 的組合,其中,前者通過引入注意機制,變單階段檢測為先裁剪興趣區(qū)域再做精細檢測的雙階段檢測,從而減少了推理時間,提高了檢測精度。CornerNet-Squeeze 則通過采用輕量化的Hourglass 主干網(wǎng)絡,減少了每個像素的處理量,提高了檢測效率[16]。盡管CornerNet-Lite 在速度和精度兩方面均有提高,但未能從根本上解決CornerNet-Saccade 和CornerNet-Squeeze 兩種變體模塊之間的矛盾沖突,前者需要強大的主干網(wǎng)絡以生成足夠準確的特征圖,而后者則要通過減弱主干網(wǎng)絡的表達能力以實現(xiàn)加速,二者的融合仍有改善提高空間。
圖3 CornerNet-Lite 的網(wǎng)絡結(jié)構(gòu)Fig.3 CornerNet-Lite network structure
1.2.1 CenterNet 算法
CenterNet 通過關鍵點三元組(左上角點、中心點、右下角點)表示物體實現(xiàn)目標檢測,其原理是通過左上和右下2 個角點生成樣本目標框,如果目標框準確,那么在其中心區(qū)域能夠檢測到目標中心點的概率就會很高,反之亦然[17-18]。CenterNet 首先通過熱力圖預測關鍵點,如角點的位置、類別等信息;然后,根據(jù)偏移向量將角點映射到輸入圖像的相應位置;接著,通過嵌入向量辨識角點,從而利用同一個目標的左上和右下角點生成預測框。針對每個預測框定義一個中心區(qū)域,根據(jù)左上和右下角點的置信度計算中心點的置信度,判斷中心區(qū)域是否含有中心點,若有則保留預測框,實現(xiàn)目標的檢測。如圖4 所示,CenterNet 的網(wǎng)絡結(jié)構(gòu)比較簡單,它不僅可以進行二維目標的檢測,還可以通過簡單修改進行三維目標的檢測。與CornerNet 算法相比,盡管CenterNet 在感知目標區(qū)域內(nèi)部信息能力有所提升,但是仍然不能夠充分利用目標的內(nèi)部信息,以致當多個目標的中心點混疊在一起時,多個目標將會被訓練成同一目標,從而只輸出一個中心點,極大地影響了檢測結(jié)果。
圖4 CenterNet 網(wǎng)絡結(jié)構(gòu)Fig.4 CornerNet network structure
1.2.2 CenterNetV2 算法
針對誤檢問題,ZHOU 等[19]進一步提出了基于概率的雙階段目標檢測方法CenterNetV2,其算法結(jié)構(gòu)與單階段和雙階段算法結(jié)構(gòu)對比如圖5 所示。該方法通過其邊界框中心的單個點來表示所檢測的目標,然后直接從中心位置的圖像特征回歸目標大小、尺寸、3D 位置、姿態(tài)等信息。與基于關鍵點估計的目標檢測相比,該算法的優(yōu)點有:(1)通過一個單階段算法得到預測框并對其賦予分值,但是該分值與分類無關,只是用以區(qū)分前景或背景。通過單階段算法較好地區(qū)分前景與背景,大大減少了無效的預測框,提高了推理速度。(2)利用極大似然估計,設計了新的損失函數(shù),同時優(yōu)化了第一和第二階段的算法,提高了算法的檢測精度和檢測速度。
圖5 CenterNetV2 算法結(jié)構(gòu)對比Fig.5 Comparison of CenterNetV2 algorithm structures:(a)single-stage;(b)dual-stage;(c)probability dual phase
1.2.3 CenterNet++算法
為了改善性能,DONG 等[20]將特征金字塔網(wǎng)絡(Feature Pyramid Networks,F(xiàn)PN)引入到CenterNet中,提出的CenterNet++算法能夠在多分辨率特征圖中進行目標檢測,它具有更好的通用性和更豐富的感受視野。如圖6 所示,骨干網(wǎng)絡處理輸入圖像并輸出特征圖C3-C5,特征圖輸入到FPN 后輸出多分辨率特征圖P3-P7。針對每個分辨率的特征圖,分別用熱力圖和回歸兩種方法預測關鍵點。通過熱力圖預測,生成3 種熱力圖預測角點和中心關鍵點;通過回歸預測時,為實現(xiàn)左上角點和右下角點的解耦,要將Ground-Truth 框分割成4 個完全相同的子框,分別用左上角的和右下角的子框來監(jiān)督回歸。在推理過程中,回歸向量作為線索,在相應的熱力圖中找到最近的關鍵點,以細化關鍵點的位置。最后利用有效的三元組關鍵點確定預測框。
圖6 CenterNet++多分辨網(wǎng)絡結(jié)構(gòu)Fig.6 CenterNet++multi-resolution network structure
FCOS 是一種像素級目標檢測方法,其通過各點像素逐點回歸鋪設錨點替代錨框來檢測目標[21-22]。如圖7 所示,F(xiàn)COS 通常采用ResNet 或ResNeXt 作為基礎網(wǎng)絡,C3-C5 的特征層作為FPN 的輸入,輸出P3-P7 作為檢測層送入后續(xù)檢測子網(wǎng)絡,并在5 個檢測層分別對應的理論感受中心鋪設錨點,采用特定規(guī)則劃分錨點的正負樣本。在FCOS 中,5 個檢測層共享一個檢測子網(wǎng)絡。FCOS 最突出的特征是通過“中心度” 分支計算當前位置與待預測目標中心點之間的歸一化距離抑制差的檢測框,大幅度提高了總體性能。此外,F(xiàn)COS 是一種基于全卷積神經(jīng)網(wǎng)絡的目標檢測方法,它只需要非常小的修改就可以擴展到其他視覺檢測應用,比如實例分割、關鍵點檢測等。
圖7 FCOS 網(wǎng)絡結(jié)構(gòu)Fig.7 FCOS network structure
無論是否采用錨框,目標檢測算法都需要預先定義目標表示形式,比如矩形框或者中心點等,這實質(zhì)上是提供一種先驗信息。受此啟發(fā),DUAN 等[23-25]提出一種更為泛化的錨點,將若干個錨框組建成點集(Pointset Anchor),通過點集的分布,實現(xiàn)目標檢測、實例分割、位姿估計等多種檢測任務。該網(wǎng)絡稱為PointSetNet,如圖8 所示。該網(wǎng)絡實質(zhì)上是RetinaNet的一個擴展,也就是根據(jù)不同的檢測任務,用相應的點集替換RetinaNet 中的錨框。
圖8 PointSetNet 網(wǎng)絡結(jié)構(gòu)Fig.8 PointSetNet network structure
對上述的無錨框目標檢測算法從原理機制、核心特性、優(yōu)缺點以及適用范圍等幾個角度進行總結(jié)比較,結(jié)果如表1 所示。
表1 各類無錨框目標檢測模型總結(jié)Tab.1 Summary of various anchorless target detection models
(1)從原理機制看,無錨框目標檢測算法的核心就是利用先驗點信息,將檢測目標轉(zhuǎn)換成點的檢測,化整體為部分,依靠點集特征信息減少超參數(shù)組合優(yōu)化問題[26],均衡訓練所需的正負樣本,進而減少了模型訓練時參數(shù)的組合、讀取時間和計算量,提高了模型訓練的效率。
(2)從檢測速度看,無錨框目標檢測算法大多利用單階段檢測器,經(jīng)過單次檢測即可直接得到最終的檢測結(jié)果,其犧牲了檢測精度,換取了檢測速度的提高[27-29]。采用雙階段檢測器的無錨框目標檢測如CenterNetV2,在保證足夠的準確率和召回率的基礎上,對建議框進行分類,尋找更精確的位置,提高了檢測精度,并依靠創(chuàng)新概率算法,彌補了檢測速度較慢的缺點,達到了二者的平衡統(tǒng)一。
(3)從檢測精度看,無錨框目標檢測算法在提高了檢測精度的同時也增加了網(wǎng)絡的復雜程度[30]。一些算法試圖向輕量化發(fā)展,如FCOS 通過引入中心度分支,抑制低質(zhì)量檢測框,以提高算法的效率和精度;CenternNet++則采用特征圖分塊、向量回歸等,減少內(nèi)存消耗和降低計算耗時,盡可能地提高精度。
為進一步定量對比無錨框目標檢測算法的性能,以檢測精度和速度作為主要衡量指標,利用搭載了2張NVIDIA GTX 2080Ti 顯卡的Dell T7920 圖形工作站進行算法實驗。在Linux20.04 系統(tǒng)下,通過Anaconda 配置算法所需虛擬環(huán)境。為保證多種算法數(shù)據(jù)對比的嚴謹,實驗采用相同的深度學習Pytorch 框架。
利用常用的微軟MS COCO 數(shù)據(jù)集進行算法的訓練和測試。為了盡可能衡量模型性能,在MS COCO中隨機選取包含自然圖片、動物和生活用品等80 種不同類型的目標圖片(見圖9)。這些圖片背景復雜,目標數(shù)量較多,目標尺寸小,檢測任務具有一定的難度,其結(jié)果可以作為一個衡量標準。
圖9 MS COCO 數(shù)據(jù)集圖片F(xiàn)ig.9 MS COCO dataset image
實驗過程中,除算法所需骨干網(wǎng)絡不同外,采用相同訓練參數(shù)。輸入圖像尺寸為512 像素×512 像素;學習率(Learning Rate)為1.25×10-4;批次圖片個數(shù)(Batch_Size)為32;訓練總輪次(Num_Epochs)為500;加載數(shù)據(jù)集線程數(shù)(Num_Workers)為10。運行后獲得每個模型最佳檢測指標如表2 所示。
表2 基于MS COCO 數(shù)據(jù)集的多種目標檢測模型性能對比Tab.2 Comparison of the performance of multiple object detection models based on MS COCO dataset
CornerNet 是最早期的無錨框目標檢測方法之一,通過創(chuàng)新角點池化算法,其精度遠高于同時期有錨框目標檢測方法。相比SSD 和YOLOv3,其mAP(Mean Average Percision)值分別高了35.37%和28.35%,而FPS(Frames Per Second)則又分別低了77.25%和90.49%,說明速度有所降低。為此,CornerNet -Squeeze 通過采用輕量化的Hourglass 主干網(wǎng)絡,減少每個像素的處理量,以提高檢測效率。CornerNet-Squeeze 的mAP 值相比CornerNet 略有下降,降低了18.29%。CornerNet-Squeeze 的FPS 值相比CornerNet則有顯著提高,提高了近7 倍。CornerNet-Saccade 則通過引入注意機制,變單階段檢測為雙階段檢測[31],減少推理時間,以提高檢測精度。相比CornerNet,CornerNet-Saccade 的mAP 值和FPS 值均有一定程度的提高,分別提高了3.56%和67.44%。盡管Corner-Net-Saccade 和CornerNet-Squeeze 相比CornerNet 在目標檢測性能方面有了不同程度的提高,但CornerNet-Saccade 和CornerNet-Squeeze 相結(jié)合的CornerNet-Lite算法卻無法實現(xiàn)檢測精度與速度的較好平衡,Corner-Net-Lite 的算法融合問題有待進一步解決。
CenterNet 也是一種通過關鍵點進行目標檢測的方法,在CornerNet 的角點池化算法基礎上,提出了中心點池化和候選角點池化算法,網(wǎng)絡能夠更加聚焦于中心點特征信息的提取,有利于提高檢測精度[32]。CenterNet、CenterNetV2 以及CenterNet++的mAP 值分別達到了45.0%、56.4% 和44.6%,平均值為48.67%;而CornerNet、CornerNet-Squeeze 以及CornerNet-Saccade 的平均mAP 值為40.03%;CenterNet及其兩種改進方法的mAP 均值相比CornerNet 及其兩種改進方法的mAP 均值提高了21.57%。CenterNet及其兩種改進方法的mAP 均值比SSD 和YOLOv3 的mAP 值分別提高了56.48%、48.37%。雖然Center-Net 及其改進方法在精度上有了一定程度的提高,但是在檢測速度方面,與CornerNet 及其改進方法相比,幾乎沒有改變。CenterNet 及其兩種改進方法的FPS均值為14.90,而CornerNet 及其兩種改進方法的FPS均值為15.13。在CenterNet、CenterNetV2 以及CenterNet++三種算法中,CenterNet++通過采用FPN 和Res2Net,在檢測精度和速度上達到了較好的平衡[33-34],其mAP 值和FPS 值相比SSD 分別提高了43.41%和61.38%,而相比YOLOv3 在精度方面也提高了35.98%。
通過FPN 結(jié)構(gòu)的多級預測機制,F(xiàn)COS 和Point-SetNet 的檢測精度顯著提高。FPN 作為原始主干網(wǎng)絡的附加項,融合在卷積神經(jīng)網(wǎng)絡之中。通過自下而上的特征提取和自上而下的多層采樣兩個部分,提取不同尺度的特征信息,達到特征融合的目的,在兼顧速度的同時提高了準確率。FCOS 和PointSetNet 的mAP值分別為49.0%和46.2%,相比SSD、YOLOv3、CornerNet、CenterNet 分別提高了57.56%、49.39%、16.39%、8.89% 和 48.55%、40.85%、9.74%、2.67%,說明FCOS 具有更優(yōu)的檢測精度。
綜上所述,與有錨框的檢測網(wǎng)絡相比,無錨框目標檢測算法提高了檢測精度,縮短了運算時間。本文作者針對7 種具有代表性的無錨框目標檢測方法進行了綜合分析,根據(jù)網(wǎng)絡結(jié)構(gòu)的不同,分析其核心特性及優(yōu)缺點,最后運用數(shù)據(jù)集測試其性能,為算法選用提供借鑒。通過上述算法比較與歸納,總結(jié)出無錨框目標檢測算法的未來研究方向:
(1)輕量化。為了易于部署和運用,深度學習網(wǎng)絡結(jié)構(gòu)應逐步減少模型中所需要的參數(shù)組合,減少計算量。如CornerNet-Lite 的優(yōu)化角度,基于關鍵點的檢測方式,需要大量關鍵點特征信息,在點集信息的處理上需要耗費大量算力,優(yōu)化輕量化網(wǎng)絡結(jié)構(gòu),使其能更快更好地完成檢測任務,輕量化是提升無錨框檢測算法實用性的重要方向。
(2)雙階段檢測器的運用。無錨框檢測網(wǎng)絡的檢測器大多以單階段檢測器為主,雙階段檢測器相比單階段檢測器,多了一步候選框的預檢測,這無疑加大了網(wǎng)絡運算所需時間,但同時也很大程度上提高了檢測精度,減少了相似點之間的誤檢測概率。只有少數(shù)的如CenterNet++運用了自主優(yōu)化的雙階段檢測器,達到了速度和精度的相對平衡。在無錨框檢測網(wǎng)絡中運用雙階段檢測器,并對其優(yōu)化,縮小網(wǎng)絡計算量,提高特征獲取能力是一大研究方向。
(3)多尺度目標的檢測。無錨框的檢測方法大多依賴目標的關鍵點信息對目標進行定位檢測。圖像的尺寸大小、關鍵點信息是否清晰都會對整個檢測網(wǎng)絡產(chǎn)生影響,并且未來檢測方向大多以高分辨率圖片、視頻為主,因此需要讓網(wǎng)絡結(jié)構(gòu)能適應多尺度的對象??梢酝ㄟ^調(diào)整上下采樣次數(shù)、卷積層感受野大小、融合注意力模塊等方法來優(yōu)化無錨框網(wǎng)絡結(jié)構(gòu),提升其檢測精度及魯棒性。
(4)有/無錨框算法的融合。無錨框的檢測方法實質(zhì)上并沒有拋開錨框這一概念,只是將整個目標的錨框框縮小轉(zhuǎn)移到了目標的各個關鍵點上,并沒有打破錨框的局限性,仍然運用了微小矩形框完成檢測流程,所以需要進一步研究關鍵點的檢測機制,真正融合基于錨框和無錨框兩種檢測方法,提高檢測效率是未來研究的一個方向。