田春欣,陳緒君,鄭有凱
(華中師范大學 物理科學與技術學院,湖北 武漢 430079)
利用計算機平臺從高空拍攝的圖像或視頻中自動精準地檢測出地面目標,已成為智慧城市管理平臺的一項關鍵技術[1]。然而,高空拍攝的地面物體目標小分辨率低[2],可用特征和可視化的信息少,難以提取到具有鑒別力的特征。小目標物體分布密集,導致其定位的邊界信息很難區分,漏檢誤檢現象嚴重。因此,如何提取到具有辨識度的特征,精準定位目標的邊界成為小目標檢測的一項技術難點。
近年來,國內外學者對基于深度學習的小目標算法展開研究:Zhang等在網絡中添加反卷積,提高了遙感圖像中小目標的檢測精度,但該方法過于關注小目標物體,對不同尺度的目標檢測魯棒性差[3];Bharat Singh等通過采樣多個切片,再進行縮放,達到提取不同尺度的特征圖做檢測,大大提高了小目標物體的平均準確率,但多尺寸訓練使得訓練時間大大增加,且當圖片尺度較大時,對GPU要求增加[4]。Lin T-Y等提出一種新的損失函數FocalLoss[5],應用于RetinaNet網絡中進行檢測,解決目標檢測中正負樣本不均衡問題,達到提高精度的目的。由于大量的錨框存在,模型計算速度相對較慢。Chengjian Feng等提出的TOOD[6](task-aligned one-stage object detection)算法拓寬了目標檢測的新思路,提出了任務對齊頭的實現方案。作者發現目標定位和分類兩個任務之間可以存在一定的聯系,通過對齊學習的方式拉近兩個任務,互相補充,使預測結果更精確。
針對上述問題,本文選擇對單階段算法TOOD進行探索改進,為驗證其有效性,在公開數據集VisDrone-DET對多個小目標檢測算法進行充分實驗,并與本文提出的算法進行比較分析。
TOOD算法與傳統的單階段目標檢測算法一樣,采用主干-頸部-頭部預測的結構。主干網絡結構提取圖片的特征,頸部進行特征融合加強,最后將特征送入到頭部預測器進行預測。如圖1所示,原始的TOOD算法使用ResNet50[7]作為主干網絡,FPN[8](feature pyramid networks)作為特征融合模塊,頭部預測器采用并行的分支替代傳統的耦合頭,分別實現分類和定位任務。

圖1 TOOD算法檢測流程
考慮到兩個并行的頭部分別對定位和分類任務預測,會出現不同程度的空間錯位的問題[6],TOOD設計了一種新的頭部預測器-任務對齊頭T-Head(task-aligned head),基于學習的方式顯式對齊兩個任務。通過設計樣本分配方案和任務對齊損失來統一兩個任務的最佳錨點,可更好地平衡任務交互特征和各自任務特定的特征。
T-Head是整個TOOD算法的核心,其結構如圖2所示。首先T-Head對特征進行預測,預測用于計算每個定位點的任務對齊因子,任務對齊學習TAL(task alignment learning)根據此對齊因子進行學習;最后,T-Head利用反向傳播從TAL計算的學習信號,自動調整分類概率和定位預測[6]。因此,最佳的對齊錨點可以通過概率圖得到更高的分類得分,并通過學習到的偏移獲得更準確的邊界框預測。

圖2 任務對齊頭
為了增強定位和分類任務之間的交互作用,頭部預測器將FPN特征送入連續N個帶有激活函數的卷積層來學習交互特征,實驗驗證,當N=6時,并行頭具有與傳統平行頭相似的參數[6]。獲得的這6個特征組具有不同尺度的感受野,即多尺度的特征,然后經過兩個預測器,分別得到分類和定位預測。
由于分類和定位任務有不同的關注目標,因此,在提取交互特征之后,預測器首先經過一個層注意力模塊來計算每個特征組的權重,再相乘,拼接后做卷積運算,動態計算這些特定任務的特征來促進分類和定位任務的分解。該部分的設計如圖3所示。

圖3 任務對齊預測器
ω是由跨層任務交互特征計算而來,捕獲層與層之間的依賴關系。最后將提取到的分類/定位特征經過3×3的卷積核,同時將原始的交互特征先經過1×1的卷積、ReLU激活、3×3卷積,將兩者級聯得到最終的分類/定位得分。
雖然TOOD算法具有較好的檢測能力,但該算法以COCO數據集為基礎,該數據集中3種不同大小的目標數量分布較平均,而在實際高空拍攝的圖片中,小目標占據絕大部分,因此,在小目標檢測場景中,TOOD的檢測能力得以削弱。
針對以上問題,本文特針對小目標檢測對象,對TOOD算法進行改進,提出基于CSPDarkNet的密集連接任務對齊(dense connection and task alignment)的小目標檢測算法(DATNet),使該算法更適合小目標檢測對象,提高小目標物體的檢測精度。
針對上述TOOD模型檢測小目標的不足之處,本文分別從主干網絡、特征融合網絡和損失函數對TOOD算法進行改進。改進后的網絡模型DATNet如圖4所示,是一種端到端的目標檢測框架,主要包含CSPDarkNet特征提取網絡、多尺度特征融合網絡以及并行頭部檢測器。

圖4 DATNet結構
ResNet50作為模型的主干網絡提取圖像的特征,引入的殘差跳躍連接緩解了因網絡加深產生的梯度消失問題。但是該網絡實際起作用的網絡層數較少,大部分網絡層都在防止模型退化,誤差過大,訓練時間長。為了讓模型學習到更多的特征,CSP[9]結構在YOLOv4[10]模型中引入,與ResNet50相比,包含大量的卷積操作,增強了卷積神經網絡的學習能力。同時保留殘差思想,引入殘差塊結構(ResBlock),分別進行1×1和3×3的卷積,每次卷積之后進入均值為0,方差為1的批歸一化處理BN(BatchNorm)層,再加入SiLU(sigmoid weighted liner unit)激活函數進行非線性激活,提高神經網絡對模型的表達能力。
針對城市高空場景中小目標數量多,尺度大小不統一等問題。本文在原有3個頭的設計基礎上新增一個小目標檢測頭,由低層特征輸入,同時在不損失過多檢測精度的前提下,保留網絡的大目標檢測頭,分別在主干網絡的Dark2、Dark3、Dark4,Dark_SPP這4個特征層進行下一步網絡的構建,主干網絡輸出的通道數分別為128、256、512、1024,同時兼顧大目標和小目標,使模型具有更好的泛化性。Dark模塊和殘差塊的結構如圖5所示。

圖5 Dark結構(左)殘差塊結構(右)
為擴大感受野,在最后一個Dark模塊加入SPP[11]結構,將局部特征和全局特征進行融合,豐富特征圖的表達能力。該結構由不同大小核的池化層組成,池化層可以提取更高階的特征,加強圖像特征的不變性,增加圖像的魯棒性。SPP結構如圖6所示,Dark4層輸出的特征先經過1個卷積層調整通道數為512,然后分別用池化核大小為5、9、13的最大池化層進行特征提取,提高網絡的感受野,池化前后的特征圖大小完全相同,再將原始輸入和3種池化結果在通道維度上堆疊,最后通過卷積融合通道信息,獲取同張圖片多個空間尺度的特征,從而提高檢測精度。

圖6 SPP結構
FPN結構通過引入自上而下的路徑,將低分辨率、大感受野的特征圖和高分辨率、小感受野的特征圖僅堆疊合并,并沒有促進信息的傳播。針對這個問題,本文在FPN結構上添加上下文特征提取模塊(feature extraction mo-dule)CEM[12],對來自不同感受野捕獲的語義信息進行信息交互,同時為減少冗余的上下文信息,引入了注意力模塊AM(attention module),捕獲有效的上下文相關性。
如圖7所示,圖中F2~F5為CSPDarkNet網絡生成的特征圖,P2~P5為FPN網絡生成的特征圖。將網絡中的F5、F4、F3層的特征圖進行2倍上采樣,再與對應的低層特征圖進行特征融合,得到合適的感受野,再送入到后續的網絡進行檢測。本文中圖片的大小為1333×800,設定4個檢測尺度來檢測大、中、小不同尺寸的目標,分別為100×168、50×84、25×42、13×21,其中,100×168用于檢測小目標,如遠處的行人、自行車等,50×84、25×42檢測中等目標,13×21檢測較大的目標。通過設計不同尺度滿足不同大小的物體檢測,顯著提升模型的檢測性能。

圖7 改進后的FPN結構
2.3.1 CEM模塊
對小目標物體提取特征往往需要較大的感受野,空洞卷積在卷積核元素之間加入一些0元素來擴大接收域,既減少了大卷積核帶來的計算量,又避免了較大的分辨率損失,卷積核的計算如式(1)所示
k′=k+(k-1)(r-1)
(1)
其中,k為原始卷積核的大小,r為空洞卷積的擴展系數,當r=1時為普通卷積核的計算公式,k′表示經過卷積操作之后的卷積核大小。
假設濾波尺寸分別為K1、K2、K3、K4、K5的卷積層,新的接收域計算公式如下
K=K1+K2+K3+K4+K5-3
(2)
本文中設計5個空洞卷積進行密集連接,卷積核的大小為3,擴展速率分別為3、6、12、18、24的卷積層構成特征金字塔,由公式可得,最終的接收域為128,接近特征圖的大小。大擴張率的卷積層的像素采樣率稀疏,膨脹率逐層增加。
CEM模塊的結構如圖8所示,它對來自F5的特征圖通過對5種不同擴張速率的空洞卷積進行密集連接的方式進行特征加強。

圖8 CEM的結構
5個具有不同擴張速率的空洞卷積由5個DenseBlock組成,每個DenseBlock由BN+ReLU+3×3 Conv的復合結構實現。每個層的特征圖大小相同,在通道維度連接在一起。
密集卷積網絡以前饋的方式將每一層與每一層連接起來[13],這種連接方式加入到FPN中有利于加強特征傳播,且每一層都可以直接從損失函數和原始輸入信號得到梯度,從而得到一個隱式的深度監督[14],有助于緩解梯度消失的問題,訓練更深入的網絡結構。密集連接確保了網絡中各層之間信息流動最大化,該網絡不需要重新學習冗余的特征映射,通過特征重用來挖掘網絡的潛力,避免了通過加深網絡深度來挖掘特征提取能力。
因此,通過密集連接,上層的卷積可以利用下層的特征,使像素采樣更密集。該網絡通過融合多路不同感受野的特征,既增大物體的感受野,又充分利用特征圖的上下文信息,得到更好的檢測能力。
2.3.2 注意力模塊
由于CEM提取到的上下文信息可能存在冗余信息,本文在CEM后加入注意力模塊減少對冗余上下文的誤導,進一步增強特征的判別能力。
注意力機制需要生成巨大的注意力圖來計算每個像素之間的關系,時間和空間復雜度較大,因此,本文采用十字交叉注意力[15](criss-cross attention)模塊來捕獲有效的上下文信息。該注意力模塊結構如圖9所示。

圖9 十字交叉注意力模塊
首先對經過CEM的F5′特征,分析進行3個1×1的卷積層,生成Q、K、V這3個特征圖,其中,Q和K的作用是為了獲取當前像素與該像素下橫向和縱向的像素點之間的相關性,然后,將相關矩陣和V整合并加上H特征,得到含有豐富語義特征的H′, 上下文信息添加到局部特征H中以增強局部特征并增強。
因此,十字交叉注意力模塊具有廣闊的上下文視圖,并根據空間注意力圖選擇性地聚合上下文。
TOOD算法的損失包含分類損失和回歸損失,分別對目標框的分類類別和坐標進行衡量,計算方法如式(3)~式(5)所示
(3)
(4)
Loss=Lreg+Lcls
(5)
其中,i表示正樣本的第i個錨點,j表示負樣本的第j個錨點,γ是聚焦參數,bi和b′i分別表示預測框和真實框,t表示正錨點的二進制標簽。TOOD算法分類損失使用質量焦損失(quality focal loss,QFL),在分類分支引入了邊界框預測質量值作為樣本分類的標簽,鼓勵學習更好的分類和定位質量的聯合表示。
在檢測框回歸過程中,原始的TOOD算法使用GIoU損失函數,通過加入懲罰項緩和IoU損失在預測框與目標框不重疊的問題(此時IoU損失無梯度)。當預測框和目標框不重疊時,GIoU損失先傾向于增加預測框的大小以使得預測框和目標框重疊,優化路徑不是最優,導致收斂速度慢,并且當預測框和目標框有包含關系時,懲罰項變為0,GIoU損失完全退化為IoU損失,導致同一個IoU損失出現多個位置的預測框問題,無法進一步區分,使邊界框定位變得不準確。
本文使用DIoU[16]作為回歸損失,通過加入懲罰項使得預測框移到和目標框重疊的位置,優化了路徑,DIoU損失的計算如式(6)所示
(6)
b和bgt是預測框和目標框的中心點,ρ是計算兩個框中心點之間的歐氏距離,c是包含預測框和目標框的最小矩形框的對角線長度。當目標框和檢測框不重疊時,可以直接最小化兩個框的距離,使得預測的結果更合理有效。鑒于收斂速度和預測的準確性,本文采用DIoU損失替換原TOOD算法的GIoU損失,解決了預測框和目標框不重疊時的優化的問題,進一步加快網絡的收斂速度。
本節對基于密集連接注意力引導的任務對齊小目標檢測方案進行了實驗驗證。仿真結果表明,該算法提取特征能力強,關注小目標位置信息精準,提高了小目標的檢測精度。本文所有實驗均在安裝有CUDA10.1的Linux開發環境,Pytorch1.8版本,Tesla V100,顯存為32 GB的GPU服務器上仿真實現。
本文的訓練參數如下:圖像尺寸為1333×800,訓練過程使用隨機梯度下降法(SGD)來學習和更新網絡參數,其動量和權重衰減分別為0.9和0.0001;初始學習率設置為0.005,在第8~11輪降低學習率,批大小為4,共訓練24輪;主干網絡加載CSPDarkNet-L預訓練權重;置信度閾值設置為0.6,使用soft-nms[17]剔除重疊的檢測框。
為了驗證算法的可行性和準確性,該實驗使用的數據集是VisDrone2019[18]。該數據集由天津大學機器學習和數據挖掘實驗室通過各種無人機攝像頭捕獲收集而來,包括288個視頻片段,由261 908幀和10 209幅靜態圖像組成,其中6471張圖片用于訓練,驗證集和測試集為548張,覆蓋范圍包括14個不同的城市,多個稀疏和擁擠的場景,主要由行人、車輛組成。該數據集定義了10個類別,分別是行人、人、自行車、汽車、面包車、卡車、三輪車、遮陽三輪車、巴士、摩托車。
3.2.1 傳統的小目標檢測模型
目前,常見的小目標檢測模型有VFNet、YOLOv5、YOLOv7、YOLOX等。通常情況下,模型越復雜,計算量較大,得到的檢測精度會較高。因此,本文選用幾種經典的深度較深的網絡進行小目標檢測實驗,分別選取平均準確率(mAP50)、召回率、參數量、Flops作為評價指標。其中mAP50可評估模型在每一類別的好壞,召回率可評估模型是否有漏檢,參數量和計算量是衡量深度學習算法的重要指標,分別對應算法的空間和時間復雜度。
如圖10所示,原TOOD網絡存在明顯漏檢的現象,在其它經典的小目標檢測網絡中,均存在遠處密集的三輪車、行人目標漏檢的問題,且兩人乘坐摩托車只能檢測出人等現象。而本文提出的DATNet 在實際檢測中性能有較大提升,緩解了密集小目標的漏檢、誤檢等情況,且分類的置信度高,檢測效果更好。

圖10 不同算法可視化結果
為了驗證TOOD算法的有效性,設計了5組對比實驗,分別對YOLO系列、VFNet、TOOD模型進行實驗和結果分析,均已加載對應的預訓練權重進行訓練。由表1可以看出YOLO系列檢測器檢測小目標的精度較高,但是參數量較大,TOOD較非YOLO系列的VFNet在精度上提高5.2%,且參數量減小0.89 M。值得注意的是,2022年7月提出的YOLOv7[19]算法檢測速度快,精度也相較之前的YOLO系列有一定程度的提升,而TOOD算法檢測小目標相較于YOLOv7在精度上提升2.4%,參數量減少了5.31 M。

表1 傳統小目標檢測模型
3.2.2 不同改進方法的消融實驗
為進一步驗證本文改進算法的科學性和有效性,實驗以TOOD(ResNet50-FPN-THead)作為基準實驗,每組實驗僅改變一個變量,分別驗證CSPDarkNet的特征提取能力、密集連接注意力引導模塊以及兩方法組合改進的有效性。這些方法相對TOOD算法在平均準確率、召回率等方面的提升效果見表2。

表2 消融實驗
由表可得:在基準模型TOOD上,CSPDarkNet提取特征的能力比ResNet50強,且計算量減小2.57 M,相較于YOLOv7、TOOD模型精度分別提高了4.1%和1.7%。在此基礎上,在FPN加入CEM后檢測結果幾乎沒有提升,經分析,密集連接提高感受野的同時,伴隨著增加了冗余的上下文信息,因此,本文使用十字交叉注意力模塊對增強的感受野區域進行注意力引導,加入之后提升0.6%,而參數量幾乎沒有增加,這是因為十字交叉注意力模塊只需要計算每個像素點所在的行和列中的像素點之間的關系,大大減小了計算的時間和空間復雜度。可見,DATNet模型在檢測精度上有較為顯著的優勢,可以解決實際高空環境下部分漏檢、誤檢的問題。
本文提出的基于密集連接任務對齊的小目標檢測算法,采用CSPDarkNet-L作為主干網絡提取特征,空洞卷積大大增加了圖像的感受野,通過密集連接的方式挖掘特征提取的能力,最后通過soft-nms去除密集目標漏檢的問題,并結合數據增強策略及相關的優化方法得到一個性能較好的模型,提高了小目標的檢測效率,為高空檢測場景提供技術支持。
經上述改進之后,DATNet 檢測性能整體得到提升,但是本文只在VisDrone2019數據集上驗證,后續工作需要驗證其它小目標數據集上是否能取得較好的效果,提高該算法的普適性。