黃 健,張 鋼
西安科技大學 通信與信息工程學院,西安 710000
目標檢測是計算機視覺以及圖像處理領域的一個基本問題,是近些年來理論和應用的研究熱點,應用十分廣泛,其主要目標是在圖像或圖像序列中精確定位出各種目標的類別和位置信息。目標檢測任務有很多種類型,例如單類目標檢測、多類/通用目標檢測、靜態圖像目標檢測、視頻目標檢測等等。目標檢測的任務,根據后續任務的需要,有三個主要的層次:分類、檢測、分割。然而,目標種類、數量、尺度變化以及外在環境干擾等因素對目標檢測任務構成了挑戰[1]。為了克服這些困難,眾多學者投入到了該領域的研究。
傳統目標檢測算法的流程包括以下幾個階段:(1)采用滑動窗口的方式對輸入圖像進行候選框的選取;(2)采用尺度不變特征變換(SITF)、方向梯度直方圖(HOG)等方法對每個窗口中的圖像信息進行特征提取;(3)使用形變部件模型(DPM)、支持向量機(SVM)等分類器對特征進行分類;(4)使用NMS算法對候選框進行合并,實現物體的檢測。然而,傳統的目標檢測算法比較依賴于手工設計的特征,其采用滑動窗口選取候選框的方式,導致窗口冗余問題嚴重,而且其特征提取方法泛化性能較差,導致檢測精度較低,算法步驟繁多導致檢測速度慢、實時性差,所以需要對傳統的目標檢測算法進行一系列的改進,以達到較好的性能指標[2]。
近些年來,隨著深度學習的快速發展,深度卷積神經網絡越來越多地應用于計算機視覺領域,并且在該領域取得重大進展[3]。基于深度卷積神經網絡的目標檢測算法給目標檢測帶來了新的研究方向,引領了目標檢測領域的發展。2012年,Hinton等人首次將深層卷積神經網絡AlexNet[4]應用在大規模圖像分類任務中,并以碾壓的成績奪得當年的ILSVRC圖像分類比賽的冠軍,從此卷積神經網絡在計算機視覺領域受到了眾多學者的青睞。基于深度卷積神經網絡的目標檢測算法利用ImageNet、PASCAL VOC、COCO 等大規模數據集來訓練提取特征的卷積神經網絡(CNN)[5],最終大幅提升了目標檢測算法的性能指標。例如,2013 年,Girshick 等人提出的R-CNN[6]作為利用深層卷積神經網絡進行目標檢測任務的開山之作,使用AlexNet 網絡進行特征提取,最終的檢測精度比傳統方法提升了將近30%。
基于深度卷積神經網絡的目標檢測算法主要分為兩類,一類是基于候選區域的目標檢測算法(即兩階段目標檢測器),另一類是基于回歸的目標檢測算法(即單階段目標檢測器)。兩階段目標檢測器首先對輸入圖像選取候選區域,然后對候選區域進行分類和位置回歸,從而實現目標檢測。單階段目標檢測器則省略了候選區域生成步驟,直接將特征提取、目標分類和位置回歸的過程都整合到一個卷積神經網絡中完成,將目標檢測過程簡化為一種端到端的回歸問題。
數據集對于有監督學習算法十分重要,對于目標檢測任務而言,適用性強的數據集不僅能對算法的性能進行測試和評估,同時也促進了目標檢測相關研究領域的發展。在目標檢測任務中,應用最多的兩個數據集是PASCAL VOC數據集和Microsoft COCO數據集。
PASCAL VOC 數據集初始發布于2005 年,經歷了多個版本的更新,至2012 年止。VOC2007 和VOC2012是目前學術界用的最多的兩個版本,目標類別數均為20類。其中,VOC2007 數據集包含9 963 張圖片,由train/val/test 三部分組成,而 VOC2012 數據集包含 11 530 張圖片,由train/test兩部分組成。學術界有兩種使用該數據集用于目標檢測任務的方法,一種是使用train2007+train2012 作為訓練集,用test2007 作為測試集,另一種是使用train2007+test2007+train2012 作為訓練集,用test2012作為測試集。該數據集的主要評價指標是平均精確率均值(mAP)。
Microsoft COCO 數據集初始發布于2014 年,包含了 91 個物體類別、328 000 張圖片和 2 500 000 個 lable。COCO 數據集以場景理解為目標,可用于圖像分類、圖像分割、目標檢測等領域,主要研究non-iconic views、contextual reasoning between objects、precise 2D localization 這三個問題。該數據集的發布促進了近幾年圖像分割領域的發展,是目前為止圖像分割領域最大的數據集。表1為COCO數據集主要評價指標。

表1 COCO數據集主要評價指標
目標檢測算法常用的性能評價指標包括:檢測速度、交并比、精確率、召回率、平均精確率、平均精確率均值等。
其中,檢測速度(Frames Per Second,FPS),表示算法模型每秒鐘所能檢測到的圖片數量,FPS可以評估一個模型的實時性,其值越大,說明模型的實時性越好。交并比(Intersection Over Union,IOU),表示為算法模型產生的預測框和原始標注框的交集與并集的比值,它描述了兩個區域的重合程度,其值越高代表算法模型的定位越準確。精確率(Precision,P),表示為分類正確的正樣本個數與分類后判別為正樣本個數的比值,衡量的是一個分類器分出來的正樣本的確是正樣本的概率。召回率(Recall,R),表示為分類正確的正樣本數與真正的正樣本數的比值,衡量的是一個分類器能把所有的正樣本都找出來的能力,在通常情況下,精確率越高,則召回率越低。平均精確率(Average Precision,AP),表示為精確率-召回率曲線上的精確率對召回率的積分,其值越大,表示分類器對某個類別的檢測效果越好。平均精確率均值(mean Average Presion,mAP),表示為所有類別的平均精確率的均值,衡量的是分類器對所有類別的檢測效果,它是目標檢測算法中用的最多也是最重要的一個指標。
圖像是目標檢測的基礎,目標檢測是在分類的基礎上,實現圖像中的目標定位,給出目標的具體空間位置和邊界信息[7]。基于卷積神經網絡的目標檢測網絡需要卷積神經網絡進行特征提取來完成目標檢測的任務,因此卷積神經網絡的性能好壞直接關系到了目標檢測網絡的性能好壞。
2012 年,Hinton 等人提出的 AlexNet 超越了眾多傳統圖像分類算法模型,以16.4%的Top-5 錯誤率奪得當年的ILSVRC圖像分類比賽的冠軍,使得卷積神經網絡越來越多地應用在圖像分類問題上,標志著深度學習時代的來臨。
2013 年,Lin M 等人提出的 NiN[8]網絡引入了 1×1卷積層和全局池化,有效地降低了網絡的參數量,之后的ResNet[9]和Inception 等網絡也借鑒了這種設計。Simonyan K等人提出了VGGNet[10],該網絡使用3×3的小卷積核代替了5×5或7×7的大卷積核,增加了網絡深度,減少了模型的參數量,使得模型在圖像分類任務上的Top-5錯誤率降低到了6.8%,這證明了通過增加網絡深度也能提高模型精確度。
2014年,Szegedy C等人提出的GoogleNet[11]引入了Inception模塊,以更少的參數和更高的性能,一舉奪得當年的ILSVRC圖像分類比賽的冠軍。GoogleNet一共包含了Inception-v1、Inception-v2、Inception-v3、Inception-v4四個版本,模型性能不斷提高,其在圖像分類任務中的Top-5 錯誤率分別為6.67%、4.82%、3.58%、3.08%。其中,Inception-v1 將CNN 中常用的1×1、3×3、5×5 卷積和3×3 池化堆疊在一起,增加了模型寬度,同時減少了模型參數數量。Inception-v2提出了卷積核分解和特征圖尺寸縮減兩種優化方法,將5×5 卷積核分解為2 個3×3卷積核,在保持感受野大小的同時減少了模型參數量。Inception-v3 在Inception-v2 基礎上,進一步對卷積核進行分解,將7×7卷積核分解為1×7卷積核和7×1卷積核,3×3 卷積核分解為1×3 卷積核和3×1 卷積核,這種設計在加速計算的同時使得網絡深度進一步增加,增加了網絡的非線性。Inception-v4中使用了ResNet的殘差連接方式,在加深網絡深度的同時加速了模型的訓練速度,模型性能進一步得到提高。
為了解決網絡深度達到飽和后出現的梯度消散或梯度爆炸的問題,2015 年He Kaiming 等人提出了殘差網絡ResNet,其在圖像分類任務中的Top-5 錯誤率為3.57%。該網絡通過一種跨層連接的方式,在增加網絡深度的同時不會影響誤差,對后續卷積神經網絡的發展具有很好的借鑒意義,使得之后采用跨層連接方式的卷積神經網絡可以在大幅度增加網絡深度的同時進一步提高模型性能。
2016 年,Zagoruyko S 等人提出的廣度殘差網絡WRNs[12],通過拓寬殘差網絡通道數的方式來提升網絡性能[13]。2017 年,Xie S 等人提出的 ResNeXt[14]引入了深度和寬度之外的第3個維度“基數”(cardinality),在沒有增加模型的參數復雜度的同時提高了模型準確率。Huang G等人設計的DenseNet[15]引入稠密鏈接,將當前的層與之后的所有層直連,減輕了梯度消失的現象,減少了模型參數量的同時有效防止了模型訓練的過擬合。Chen Y等人融合了ResNet和DenseNet的優點,設計了一類全新的雙通道網絡結構DPN[16],該網絡對特征的利用更加充分。
2020 年,Hu J 等人設計的 SENet[17]使用了“特征重標定”的策略來對特征進行處理,它是根據每個特征通道的重要程度,來降低或者提升相應的特征通道的權重,這種設計使得該網絡在圖像分類中的Top-5錯誤率降低到了2.3%,從而獲得了2017 年ILSVRC 圖像分類比賽的冠軍。部分卷積神經網絡如表2所示。
從表2 可以看出,這幾年卷積神經網絡發展迅速,模型結構不斷優化,模型性能不斷提升,在圖像分類任務中的錯誤率從AlexNet 的16.4%降低到了SENet 的2.3%。卷積神經網絡的發展推動了目標檢測的進步,使基于卷積神經網絡的目標檢測算法的性能不斷提升。
基于候選區域的目標檢測算法首先對輸入圖像選取建議框,然后對建議框進行分類和位置回歸,進而得到最終的檢測結果。這類算法的典型代表有:R-CNN系列、R-FCN、Mask R-CNN、Cascade R-CNN、Trident-Net等。下面將分別進行介紹。
2014 年,Grishick 等人提出的 R-CNN,開創了將CNN 應用于目標檢測的先河,其網絡結構如圖1 所示。R-CNN首先對輸入圖像采用Selective Search建議框提取方法生成約2 000 個建議框,并將不同大小的建議框縮放到227×227 的相同大小,然后使用AlexNet 對建議框進行特征提取,得到特征圖,最后分別使用SVM分類器和回歸器確定目標的類別和位置。

表2 部分卷積神經網絡

圖1 R-CNN網絡結構
R-CNN算法的性能大大超越了之前最好的傳統目標檢測算法,以AlexNet為主干網絡的R-CNN在VOC2007數據集上的準確率達到了58.5%,但也存在不少問題:
(1)使用Selective Search方法提取建議框耗時嚴重。
(2)R-CNN對輸入圖片進行縮放操作,破壞了圖片的信息,降低了檢測精度。
(3)建議框之間存在的重復區域增加了計算復雜度。
(4)訓練步驟繁瑣,訓練時間長。
2015 年,為了解決 R-CNN 存在的部分問題,He 等人提出了SPP-Net[18]。之前的R-CNN 對所有的建議框分別使用卷積神經網絡來提取特征,而SPP-Net在使用卷積神經網絡提取特征時,對整張輸入圖片僅進行一次卷積操作,大大降低了運算量。此外,SPP-Net在網絡的最后一個卷積層添加了空間金字塔池化層(SPP層),產生固定長度的特征向量,作為第一個全連接層的輸入。空間金字塔池化層結構如圖2所示。

圖2 空間金字塔池化層結構示意圖
以上兩點改進使得以ZF-5 為主干網絡的SPP-Net在VOC2007數據集上的準確率上升為59.2%,但是其仍然存在缺陷:
(1)需要存儲大量特征,空間開銷大。
(2)生成候選區域、特征提取、目標分類和位置回歸這些步驟依然是分離的。
(3)SPP-Net 依然使用SVM 作為分類器,訓練步驟繁瑣且訓練時間長。
2015年,Girshick等人吸收了SPP-Net的思想,進一步提出了Fast R-CNN[19]。該網絡將SPP層簡化一層,稱為 ROI Pooling 層。另外,Fast R-CNN 用 softmax 函數替代了R-CNN 中采用的SVM,并引入了SVD 分解,將分類問題和回歸問題進行了合并。Fast R-CNN進行目標檢測的過程如圖3所示。

圖3 Fast R-CNN網絡結構
Fast R-CNN 將特征提取、目標分類和位置回歸這些步驟整合到一個模型中,降低了計算復雜度,在提高檢測速度的同時提高了檢測精度,以VGG-16為主干網絡的 Fast R-CNN 在 VOC2007 數據集上的 mAP 上升為70.0%。但是,該網絡仍然存在一定缺點:
(1)由于該網絡仍使用比較耗時的selective search方法生成候選區域,導致檢測速度仍然很慢,使得Fast R-CNN依然不能實時檢測。
(2)ROIs區域是在圖片輸入到CNN網絡前獲得的,因此Fast R-CNN依然不是真正意義上的端到端網絡。
針對Fast R-CNN存在的問題,2015年,Ren等人提出了Faster R-CNN[20]。該網絡使用區域生成網絡(RPN)來生成候選區域,將生成候選區域、特征提取、目標分類和位置回歸這些步驟整合到了一個模型中,真正實現了目標檢測網絡的端到端訓練。同時檢測速度的提升,使得Faster R-CNN成為第一個準實時的深度學習目標檢測網絡。圖4為Faster R-CNN的檢測過程圖。

圖4 Faster R-CNN的檢測過程圖
Faster R-CNN 的檢測精度和檢測速度在Fast RCNN的基礎上進一步得到提升,采用VGG-16為主干網絡的Faster R-CNN在VOC2007數據集上達到了73.2%mAP,同時檢測速度由Fast R-CNN 的3 f/s 提高到了7 f/s。但是,Faster R-CNN仍然存在不少缺點:
(1)保留了Fast R-CNN 中使用的ROI Pooling 層,這導致之后的網絡特征喪失了平移不變形,從而影響了目標定位的準確性[21]。
(2)ROI Pooling層后每個區域經過多個全連接層,存在較多重復計算,降低了檢測速度。
(3)Faster R-CNN在特征圖上使用錨點框對應原圖,而錨點框經過多次下采樣操作,對應原圖一塊較大的區域,導致Faster R-CNN檢測小目標的效果并不是很好。
鑒于 Faster R-CNN 存在的問題,2016 年,Dai 等人提出了R-FCN[22]。R-FCN 使用了ResNet 作為特征提取網絡,提高了特征提取與分類的效果。同時,在ROI Pooling 層后不再使用全連接層,而改用全卷積神經網絡,減少了參數量。另外,該網絡還引入了位置敏感得分圖,解決了之前Faster R-CNN 中存在的圖像分類的平移不變性和目標檢測的平移不變性的矛盾。R-FCN的網絡結構如圖5所示。

圖5 R-FCN網絡結構
R-FCN在整幅圖像上共享幾乎所有的計算,實現了在VOC2007 數據集上79.5%的mAP,但是該網絡存在一些缺點:
(1)由于該網絡引入了位置敏感得分圖,降低了網絡的檢測速度,導致其仍然難以滿足目標檢測的實時性要求。
(2)模型復雜,訓練時間長。
2017 年,He 等人提出的 Mask R-CNN[23]是在 Faster R-CNN 基礎上的擴展,即在原有Faster R-CNN 的基于邊界框識別的分支上再加入一個用于預測目標掩碼的并行分支(Mask 預測分支),以完成實例分割任務。由于ROI Pooling 中的量化操作會顯著增大掩碼錯誤率,Mask R-CNN 提出了ROI Align,使用雙線性差值的方法,使得為每個ROI取得的特征能夠更好地對齊原圖上的ROI區域,提高了掩碼的精確度。Mask R-CNN的網絡結構如圖6所示。

圖6 Mask R-CNN網絡結構
Mask R-CNN將分類損失、邊界框損失和掩碼損失聯合訓練,同時提高了檢測和分割的精度,采用ResNeXt-101 為主干網絡的Mask R-CNN 在COCO 數據集上達到了39.8%的mAP。Mask R-CNN 不僅可以完成目標檢測任務,也能完成實例分割任務,實現對物體的細粒度分割,具有很大的靈活性。但是Mask R-CNN存在一些缺陷:
(1)Mask R-CNN 雖然可以實現實例分割,但是分割代價過高。
(2)模型檢測速度依然沒有得到改善,不能實現實時檢測。
Faster R-CNN 中是通過設置固定的IOU 閾值來設定正負樣本的,這就使得選取的候選框不太準確,從而給目標檢測帶來一定的噪聲干擾。
針對此問題,2018年,Cai等人提出了一種級聯結構的 檢測器 Cascade R-CNN[24]。Cascade R-CNN 每個級聯的檢測器設置不同的IOU閾值進行訓練,且越往后的檢測器的IOU閾值越高,這樣可以逐步過濾掉一些誤檢框,使得每個檢測器輸出的準確度提升一點,用作下一個更高精度的檢測器的輸入,以達到提高最終網絡檢測框準確度的作用。圖7(a)為Faster R-CNN的基本框架,圖7(b)為Cascade R-CNN的基本框架,Cascade RCNN可以看作是一種級聯的Faster R-CNN結構。

圖7 Faster R-CNN和Cascade R-CNN基本框架對比
Cascade R-CNN級聯器結構幾乎對于任意的R-CNN(Faster R-CNN、FPN、R-FCN 等)結構都可以帶來2%~4%的AP提升,且IoU閾值越高提升越明顯,其在COCO數據集上的精確度達到了42.8%。使用Cascade結構對于網絡精度的提升確實是有幫助的,但是也增大了網絡訓練時間。
傳統的解決多尺度檢測的算法,大都依賴于圖像金字塔與特征金字塔FPN 這兩種方法,但是,前者使得算法的測試時間大幅度提高,對于實際使用并不友好,而后者對于算法的性能提升不如前者。
2019年,Li等人利用空洞卷積構建了一個三分支網絡TridentNet[25],相比之前的算法,更好地解決了多尺度檢測問題。TridentNet首次驗證了不同大小的感受野對于檢測結果的影響,即大的感受野更有利于檢測大物體,小的感受野更有利于檢測小物體。圖8為TridentNet的結構圖。TridentNet 采用ResNet 作為基礎網絡,前三個stage沿用原始的結構,在第四個stage,將三種不同的感受野網絡并行化,3個分支使用了空洞數不同的空洞卷積,感受野由小到大,分別檢測小、中、大的目標,更好地實現了多尺度的目標檢測。并且3個分支共享權重,不僅可以使網絡學習到更本質的物體檢測信息,而且也減少了參數量與過擬合的風險。

圖8 TridentNet結構圖
TridentNet對于多尺度物體的檢測相比之前的算法有了明顯的精度提升,其在COCO數據集上的精確度達到了48.4%。但是網絡模型規模的增大增加了計算量,導致網絡的檢測速度較低,難以進行實時檢測。
4.1~4.8 節介紹的算法均是基于候選區域的目標檢測算法,即均屬于兩階段目標檢測器。總體而言,這類算法的檢測精度在不斷提升,但是檢測速度普遍較慢。表3總結了這些算法分別在VOC2007測試集、VOC2012測試集、COCO測試集上的性能,“—”表示無相關數據,各種算法在測試集下的mAP 值括號中的表示所使用的訓練集,且所使用的GPU 是Geforce GTX Titan X顯卡。表4 總結了基于候選區域的目標檢測算法的優缺點和適用場景。
從表3 可以看出,隨著卷積神經網絡的發展,基于候選區域的目標檢測算法的檢測精度也在不斷提升,已經達到了很高的水平,但是算法模型規模的擴大也帶來了計算量的增大,使得該類算法的檢測精度一直較低,始終難以滿足實時檢測。從表4可以看出,基于候選區域的目標檢測算法在發展過程中,不斷解決之前算法的缺陷,不斷向著滿足更高更多樣化需求的方向發展,但同時也帶來了新的問題,并且模型規模大、檢測速度慢的問題始終沒有得到根本性解決。未來該類算法的發展,應在提高檢測精度的同時提高檢測速度,借鑒基于回歸的目標檢測算法的優勢,降低模型規模,以滿足實際應用中對于模型規模限制的要求,使該類模型在一些硬件平臺上得到大規模部署和應用。

表3 基于候選區域的目標檢測算法性能對比

表4 基于候選區域的目標檢測算法的優缺點及適用場景對比
基于回歸的目標檢測算法之所以被稱為單階段目標檢測器,是因為其省略了候選區域生成階段,可以直接得到目標的分類和位置坐標。單階段目標檢測器的檢測速度一般比兩階段目標檢測器快,但是檢測精度卻普遍比兩階段目標檢測器差。這類算法的典型代表有YOLO系列、SSD系列、RetinaNet、CornerNet、CenterNet、EfficientDet等。下面將分別進行介紹。
針對兩階段網絡普遍存在實時性差的問題,2016年,Redmon 等人提出了首個單階段網絡YOLOv1[26],它將目標檢測任務當作一個回歸問題來處理,只需要對輸入圖像進行一次處理,即可同時得到目標的位置和類別。YOLOv1的主要優點是目標檢測速度很快,遠遠超過兩階段目標檢測器,由于網絡對圖片進行全局處理使得背景錯誤相對比較少,同時其泛化性能較好。
YOLOv1 的網絡結構如圖9 所示,其進行目標檢測的步驟是,首先將圖像縮放到448×448 的固定尺寸,然后將圖像輸入到卷積神經網絡中,來預測出邊界框的坐標、框中物體的類別和置信度,最后使用NMS算法去除重疊的框,從而得到最后的預測框,實現目標檢測。

圖9 YOLOv1網絡結構
由于YOLOv1沒有候選區域生成的步驟,所以它的檢測速度非常快,達到了45 f/s,大大超過了基于候選區域的目標檢測算法。但是,YOLOv1劃分圖片網格較為粗糙,每個網格生成的邊界框個數較少,使該網絡對小尺寸目標和鄰近目標的檢測效果較差,而且YOLOv1產生了更多的定位誤差,導致其整體檢測精度較低。
2017 年,Redmon 等人在 YOLOv1 基礎上提出了YOLOv2[27],該網絡在所有卷積層都應用了批量歸一化(BN)操作,舍棄了Dropout 操作,使用Anchor Boxes 來預測邊界框,同時采用了更高效的Darknet-19 作為YOLOv2 的骨干網絡。這些措施有效提升了YOLOv2的檢測精度,其在VOC2007數據集上的準確率為78.6%。
2018 年,Redmon 等人提出了 YOLOv2 的改進版本YOLOv3[28],它使用了效果更好的Darknet-53作為骨干網絡,Darknet-53的精度和ResNet-101相當,但速度更快。YOLOv3吸收了FPN的思想,在網絡中3個不同位置的3種不同尺度的FeatureMap上進行檢測任務,這有效提高了網絡對小尺寸目標的檢測效果。同時,YOLOv3使用了二元交叉熵作為損失函數進行訓練,實現了對同一個邊界框進行多個類別的預測。這些改進使得YOLOv3在COCO數據集上的準確率提高到了33.0%。
2019 年 ,Choi 等 人 提 出 了 YOLOv3 的 改 進 網 絡Guassian YOLOv3[29],YOLOv3在預測邊界框坐標時,只輸出4 個維度的坐標信息,而Gaussian YOLOv3 輸出了8 個維度的坐標信息,同時改進了網絡的損失函數,這些改進使得該網絡在KITTI 數據集上的準確率相比YOLOv3提高了3%的mAP。
2020 年,Bochkovskiy 等人提出了 YOLOv4[30],該模型使用了具有更大感受野、更大參數的CSPDarknet53作為主干網絡,在CSPDarknet53上添加了SPP模塊來增大感受野,同時使用PANet替換YOLOv3中的FPN來進行多通道特征的融合,加上YOLOv3(基于錨的)head,就構成了YOLOv4 的模型框架。YOLOv4 融合了一系列的調優技巧,在目前所有實時目標檢測算法中精度最高,在模型精度和檢測速度的trade-off方面達到了當前最優,其在COCO數據集上的檢測精度達到了43.5%。
SSD[31]是2016 年由Liu 等人提出的,該網絡是在YOLOv1基礎上進行改進的,SSD的網絡結構圖如圖10所示。SSD 是在6 個不同尺度的FeatureMap 上進行檢測任務的,其中低層FeatureMap 預測小尺寸目標,高層FeatureMap預測大尺寸目標;并且在每個FeatureMap的每個像素點處,使用不同大小的default box檢測不同大小的目標;同時該網絡使用了放大和縮小兩種數據增強技術。這些改進提高了網絡的檢測效果,其在VOC2007數據集上的檢測精度提高到了76.8%,同時檢測速度也提升到了59 f/s,使得SSD網絡得到了廣泛的應用。

圖10 SSD網絡結構
SSD通過利用不同層特征進行目標檢測,使其對尺度變化有較好的魯棒性,檢測精度和速度相比YOLOv1都有很大的提高。但由于在SSD網絡中,不同層的特征圖都是獨立作為分類網絡的輸入,因此容易出現同一個目標被多個不同大小的預測框同時檢測出來的情況,另外由于淺層的特征圖所含語義信息較少,導致該網絡對小尺寸物體的檢測效果比較差。
針對SSD 存在的這兩個問題,Jeong 等人提出的R-SSD[32]一方面利用分類網絡增加不同層特征圖之間的聯系,以降低重疊框個數;另一方面R-SSD 使用了一種深層和淺層特征融合的方式,增加了特征圖的通道數,提升其對小尺寸物體的檢測效果。這些改進使得R-SSD在VOC2007數據集上達到了80.8%的準確率。
在SSD的研究基礎上,2017年Fu等人提出了DSSD[33],其將ResNet-101作為主干網絡,有效提高了特征提取能力;同時,反卷積層的使用使得DSSD 可以更好地檢測小尺寸物體,進一步提升了網絡的檢測精度,其在VOC2007數據集上的準確率提高到了81.5%。
Shen等人借鑒了DenseNet的思想,提出了DSOD[34],由于改造了一些特征層的輸入,使得DSOD的參數數量相比SSD 得到了大幅度降低。而且DSOD 在不需要預訓練模型的情況下可以從零開始訓練數據,其目標檢測效果相比SSD依然得到了提升。
2017年,Li等人吸收了FPN的思想提出了FSSD[35]。不過FSSD融合不同層級特征的方式與FPN不同,相比SSD,其在提升目標檢測精度的同時,檢測速度卻沒有下降多少。
2017年,Lin等人提出了RetinaNet[36],作者首次指出樣本類別的不平衡,是造成單階段目標檢測網絡的檢測精度普遍低于兩階段目標檢測網絡的原因。針對此問題,作者使用focal loss 替代標準交叉熵作為損失函數對模型進行訓練,focal loss 函數降低了易分類樣本的權重,使模型在訓練時更專注于難分類的樣本。為了證明focal loss 的有效性,作者設計出了RetinaNet。圖11為RetinaNet的網絡結構圖,該網絡使用ResNet+FPN的結構作為特征提取網絡,來獲得表達力更強且包含多尺度目標區域信息的特征圖集合,然后在該集合上使用兩個結構相同但是不共享參數的FCN 子網絡,分別完成目標框類別分類和位置回歸任務,實現目標檢測。
RetinaNet 作為單階段目標檢測網絡,達到了兩階段目標檢測網絡的準確率,其在COCO數據集上的準確率提高到了40.8%。但是RetinaNet 檢測精度的提高是以犧牲檢測速度為代價的,其檢測速度相比之前的單階段檢測網絡下降明顯,難以達到實時檢測。
在Faster R-CNN 和SSD 等算法中,普遍使用了anchor(錨框)來提高檢測效果,但是anchor的使用也帶來了正、負樣本不平衡和較多的超參數等問題。
針對此問題,2018年,Law等人提出了CornerNet[37],該算法舍棄了傳統的anchor與區域建議框的檢測思路,利用關鍵點的檢測與匹配,將傳統的預測邊框思路轉化為了預測邊框的左上角和右下角兩個角點問題,開辟了基于關鍵點進行目標檢測的新思路。圖12為CornerNet的網絡結構,它使用Hourglass作為骨干網絡提取特征,使用角點池化方式將物體的信息整合到左上角點或者右下角點,后接左上角點預測分支和右下角點預測分支兩個輸出分支模塊,每個分支模塊包含了角點出現的位置Heatmaps、角點的配對Embeddings、角點位置的偏移Offsets 三個輸出。然后再對屬于同一個邊框的角點進行組合,從而得到最終的預測框,完成物體檢測。

圖11 RetinaNet網絡結構

圖12 CornerNet網絡結構
CornerNet 使用邊框的角點進行物體檢測,從而避免了使用錨框帶來的問題,在檢測精度上相比之前的單階段檢測器有了一定提升,其在COCO數據集上達到了42.1%的檢測精度。但是CornerNet 在對兩個角點匹配過程中耗時較長,導致模型的檢測速度降低了不少,并且該過程容易產生誤檢樣本。
CornerNet 是基于關鍵點進行物體檢測的,它需要經過一個關鍵點的分組配對階段,這會降低算法整體速度。
針對此問題,2019年,Duan等人提出了CenterNet[38],它將物體檢測問題變成了一個中心點的估計問題,無需對關鍵點進行分組配對或者是后處理。CenterNet通過預測物體的中心點位置及對應物體的長與寬,來實現物體檢測。圖13 為CenterNet 的網絡結構,它使用Hourglass作為主干網絡提取特征,然后分別通過關聯角點池化和中心點池化整合信息。通過關聯角點池化預測角點出現的位置后,使用角點位置的偏移操作,將角點的位置映射到輸入圖片的對應位置,然后通過角點的配對操作,判斷哪兩個角點屬于同一個物體,以便組成一個檢測框。同時,CenterNet 通過中心點池化來預測目標的中心點,然后通過偏移操作矯正中心點位置,之后將中心點位置映射到輸入圖片的對應位置,通過判斷每個檢測框的中心區域是否有預測的中心點,來消除錯誤的檢測框,以提高檢測精度。
CenterNet 基于中心點做檢測任務,其在COCO 數據集上達到了47.0%的精確度。雖然CenterNet 的檢測速度要快于CornerNet,但是由于模型的計算量依然很大,導致檢測速度沒有明顯提升。
在目標檢測領域,算法模型的檢測精度和檢測速度同等重要,基于回歸的檢測器雖然檢測速度較快,但是普遍精度較低。基于此,2019年,Tan等人提出了一種同時兼顧模型精度和檢測速度的目標檢測器EfficientDet[39]。圖14 為EfficientDet 的網絡結構圖,其采用EfficientNet作為主干網絡,將加權雙向特征金字塔網絡BiFPN作為特征網絡,接受來自主干網絡的P3至P7層的特征,并重復應用自上而下和自下而上的雙向特征融合,然后將融合后的特征輸入到類別/邊界框預測網絡,分別輸出目標類別和邊界框預測結果。同時,EfficientDet使用了一種混合縮放方法,可以同時對所有主干網絡和特征網絡以及類別/邊界框預測網絡的分辨率、深度和寬度進行均勻縮放,這使得EfficientDet模型規模只有之前最優模型的1/4,檢測速度是之前最優模型的3.2倍。
EfficientDet 以較低的模型規模達到了當前COCO數據集上最高的檢測精度51.0%,是一個輕量級、多尺度且高精度的目標檢測網絡。在面對廣泛的模型規模和資源約束時,例如嵌入式設備、移動終端等實際應用領域,EfficientDet較低的計算成本使得該模型在這些領域的大規模部署成為了可能,必將極大地推動目標檢測技術在這些領域的發展。
5.1~5.6 節介紹的算法均是基于回歸的目標檢測算法,即均屬于單階段檢測器。總體而言,這類算法的檢測精度在不斷提升,同時檢測速度快,實時性較好。表5總結了這些算法分別在VOC2007 測試集、VOC2012 測試集、COCO 測試集上的檢測準確率,“—”表示無相關數據,各種算法在測試集下的mAP值括號中的表示所使用的訓練集,且所使用的GPU是Geforce GTX Titan X顯卡。表6 總結了基于回歸的目標檢測算法的優缺點和適用場景。

圖13 CenterNet網絡結構

圖14 EfficientDet網絡結構
從表5可以看出,基于回歸的目標檢測算法的檢測速度要普遍快于基于候選區域的目標檢測算法,并且在檢測精度上也逐漸超過后者(單階段的EfficientDet 是當前精度最高的模型),但是檢測精度的提升也帶來了檢測速度的下降,這是需要解決的問題。從表6可以看出,基于回歸的目標檢測算法在小目標、多目標上的檢測效果越來越好,并且逐漸實現了多尺度、高精度檢測。未來該類算法的發展,應更多地關注于檢測精度和檢測速度的trade-off,類似YOLOv4這種,并實現更高的平衡,使得該類模型可以在嵌入式設備、移動終端等硬件平臺大規模部署。
在以上基于深度卷積神經網絡的目標檢測的基礎上,近幾年,一些學者又提出了一些新的基于深度學習的目標檢測算法,如表7 所示。從表中可以看出,這些改進的目標檢測算法都是在針對原始算法的缺陷進行的改進,融入了部分其他算法能提高檢測精度的結構,同時使用了一些優化技巧,有效提高了改進算法的檢測效果。
本文在對目標檢測網絡廣泛研究的基礎上,系統總結了基于深度卷積神經網絡的目標檢測網絡的發展情況,詳細介紹了目前的兩大類目標檢測網絡,即基于候選區域的目標檢測網絡和基于回歸的目標檢測網絡。分析了兩類目標檢測網絡的結構和優勢缺陷,并對其性能進行了對比。
總體來看,基于候選區域的目標檢測網絡的檢測流程越來越簡單,精度也越來越高,但是速度上普遍偏慢,難以滿足實際應用的實時性需求,在應用推廣上面臨困難。而基于回歸的目標檢測網絡雖然在精度上普遍不如前者,但是在檢測速度上更有優勢,隨著近幾年的發展,其檢測精度也在逐漸提高,在實際應用上更具有潛力。未來的研究方向將更專注于精度和速度的結合,借鑒基于候選區域網絡高精度的優勢和基于回歸的網絡高速度的優勢,同時提高目標檢測網絡的精度和速度,實現精度和速度的trade-off,以滿足實際需求。

表5 基于回歸的目標檢測算法性能對比

表6 基于回歸的目標檢測算法的優缺點和適用場景對比

表7 基于深度學習的目標檢測相關文獻
深度卷積神經網絡的快速發展,以及硬件設施的不斷完善,為目標檢測領域提供了非常好的發展機遇。雖然現有的基于卷積神經網絡的目標檢測算法的性能已經遠遠超越了傳統的目標檢測算法,但是還有很多改進空間。如何實現在小數據集下對目標檢測網絡進行訓練,如何更好地實現復雜場景下多目標和小目標的檢測,如何更好的利用場景信息和語義信息,如何滿足智能交通系統、智能視頻監控、自動化監測、工業檢測等實際應用領域的精確性和實時性的需求等,這些將會是接下來目標檢測領域的重要研究方向。