李佐龍,王幫海,盧 增
廣東工業大學 計算機學院,廣州 510006
幾十年來,行人檢測一直是研究熱點。無論是在汽車輔助駕駛、智能機器人還是視頻監控領域,行人檢測都有廣泛的應用。特別是近幾年隨著深度學習興起,行人檢測領域有了長足的發展。傳統的行人檢測方法依賴于滑動窗口和手工提取特征來檢測行人。實際場景中,行人的衣著服飾顏色、動作姿態等多樣,這些變化通常影響著手工特征的魯棒性。如何設計適應性更強的特征提取模塊也是傳統行人檢測領域所要思考和解決的問題。目前,基于手工提取特征和基于神經網絡提取特征是行人檢測領域的主流方法。Dalal等通過刻畫圖像的梯度特征提出了HOG[1]特征描述子。Viola和Jones提出了基于Adaboost 的實時目標檢測方法[2]。Spatial-Pooling[3]提出了一種空間池化的低級視覺特征。Nam等[4]提出了局部去相關通道特征(Local Decorrelation Channel Features,LDCF)方法,其達到了當時最優的檢測效果。近年來,基于深度學習的目標檢測方法開始涌現。RFBnet[5]提出了RFB(Receptive Field Block)卷積塊并集成到SSD(Single Shot Multibox Detector)[6]網絡中,增強了卷積網絡的感受野。ExtremeNet[7]提出了一種無錨框自底向上的檢測網絡。ScratchDet[8]重設了SSD網絡的結構,在不使用分類網絡預訓練權值的情況下從零開始訓練網絡。M2Det[9]使用主干網的兩層特征融合輸入到多個級聯的TUM(Thinned U-shape Modules)模塊中提取最終的多尺度檢測特征。RepLoss[10]和OR-CNN[11]等都提出了魯棒的解決方法,改善了被遮擋行人的檢測效果。
檢測領域的多尺度變化問題歷久彌新。最早解決此問題的方法是通過構建圖像金字塔模型[12],將檢測圖片縮放不同的比例輸入到檢測器。每張圖片的不同尺度都需經過檢測器處理,這增加了巨大的計算量,犧牲了檢測時間。通過卷積神經網絡提取圖像的特征來構建特征金字塔是現今應對多尺度變化問題的主流方法[13-19],提取圖像卷積特征節省了計算成本和檢測時間。在多尺度的特征金字塔中,底層特征由于并未經過太多下采樣操作,仍然保留圖像的細節信息,高層特征則包含更多的圖像語義信息。一般而言,高層特征的語義信息更利于圖像的分類任務,而底層的細節特征更利于目標的邊框回歸任務[9]。在已有的一些針對目標多尺度變化的模型中存在著一些問題,主要有以下幾點:(1)用主干網中的更低層的卷積特征做檢測計算量大;(2)模型使用分類主干網的特征直接做檢測,低層特征相對檢測任務而言特征表示不夠充足[8];(3)未充分利用金字塔中不同層次特征所包含的信息,高低層特征信息沒有考慮融合性。這些問題導致模型魯棒性不強或計算量大,在面對多尺度變化問題時并不能很好地解決,特別是對小目標檢測表現不佳。
為了解決上述存在的問題并設計一個魯棒性更強的多尺度行人檢測網絡,本文提出MSAnet(Multi-Scale Attention Network)模型。通過設計卷積特征重建模塊和通道注意力模塊,融合高低層特征的細節信息和語義信息來增強模型性能,兩種模塊可輕松集成到使用多尺度特征的方法中。MSAnet 模型是在RFBnet 中集成卷積特征重建模塊和通道注意力模塊,并重新改進此方法的loss 函數,添加排斥損失,提高模型對遮擋行人的檢測效果。
多尺度特征結構(如圖1 所示)被眾多目標檢測算法所使用。RPN+BF[13]在更大尺度的卷積特征上提取預測框信息,使用多尺度錨框設計代替多尺度特征金字塔結構。雖然加入了多尺度的錨框,但是使用更低層特征的計算量非常大,特征語義信息也不足。低層特征是使用分類網絡權值微調得到的,分類和檢測使用的損失函數不同,學習到的特征表示也會出現偏差[8]。MS-CNN[14]、SSD和RFBnet等一些網絡使用主干網提取的多層特征直接做檢測,因此網絡并不會增加太多計算量,運行速度非常快。高低層學習到的特征表示不同,低層更利于邊框回歸任務,高層更利于分類任務。SSD型網絡使用的特征直接提取自主干網,特征之間相互獨立,并沒有考慮融合性,低層特征語義信息不足會影響檢測器對小目標的檢測性能。FPN(Feature Pyramid Network)[15]型的網絡使用主干網特征相互融合,重新構造了一種topdown 結構的特征金字塔,由于并沒有直接使用主干網特征,避免了SSD型網絡的一些缺點。曾接賢等[16]改進了Faster R-CNN[17]網絡,使用三層融合特征做行人檢測。童靖然等[18]提出特征金字塔融合行人檢測方法,有效解決了多模態場景的行人檢測問題。郭愛心[19]提出一種多層次卷積特征融合的行人檢測算法,這些設計都類似于FPN 型結構。top-down 結構雖然融合了不同特征層的信息,但是用作檢測的特征層信息仍然比較單一,融合不夠充分。基于上述相關研究的分析,本文從不同層特征間的相互融合性出發,設計兩種結構來融合不同層的細節和語義信息,同時也避免了直接使用主干網特征的缺點。

圖1 多尺度模型
RFBnet 是單階段目標檢測器,其設計了RFB 卷積塊,能增大卷積核的感受野并減少卷積計算成本。RFB卷積塊整體結構和Inception[20]的多分支結構思想相似,主要在于RFB卷積塊在分支中加入了空洞卷積(dilated conv)[21],通過空洞卷積增加卷積核的感受野,加強網絡的特征提取能力。RFBnet是在輕量級網絡VGG16[22]上去掉最后的全連接層和soft-max層,然后接RFB卷積塊構建的。用VGG16 的預訓練權值做網絡初始化,然后在此基礎上訓練微調網絡。整體結構與圖1 中SSD 型結構相似,使用網絡最后的六層特征做檢測。
RFBnet在保持實時性能的同時達到了和基于深層網絡檢測器相媲美的精度,但是它仍然保留了SSD型結構的缺點,在檢測多尺度目標時性能并不好。本文提出的MSAnet 模型在此基礎上進行改進,通過融合不同層的特征信息,增強模型對多尺度行人的檢測效果。

圖2 MSAnet模型
MSAnet使用RFBnet模型主干網的最后6個尺度特征(寬高為38 到寬高為1)作為卷積特征重建模塊的輸入,之后重建為6個多尺度特征金字塔。通道注意力模塊融合6個特征金字塔中相同尺度的特征,融合后的特征中既包含了高層的語義信息也有足夠的底層細節信息。為了使有效的特征通道表現得更好,使用注意力機制為每個通道學習一個權值,增強有效通道的權重。模型整體結構如圖2所示。
損失函數是模型中最重要的一環。RFBnet使用了分類損失和邊框回歸損失訓練模型,但是行人檢測中行人遮擋是時常發生的。行人相互遮擋時,僅僅依賴邊框回歸損失不容易去分辨相互遮擋的行人,容易造成漏檢。因此重新改進損失函數,加入排斥損失。排斥損失的原理是讓預測框在向所要預測的目標靠攏時遠離其他的目標,這樣兩個相互遮擋行人的預測框不至于靠得太近而造成漏檢。
卷積特征重建模塊的目的是以原始輸入特征金字塔的每一層特征為基礎,重塑為一個完整的特征金字塔。模塊的結構如圖3所示。這里為了美觀簡潔,只使用三層特征作為示例,其中深色金字塔代表原始輸入特征,白色代表重建之后的特征金字塔,演示原始特征金字塔的Feature2 特征如何重建為完整特征金字塔。原始特征金字塔中的不同尺度特征的通道數并不相同,為了不增加太多計算量并能融合不同尺度的特征,設置重建金字塔的特征通道數統一為256。

圖3 卷積特征重建模塊
首先將Feature2 經過卷積核為1 的BasicConv 卷積得到通道數為256的Feature5特征,Feature5特征經過上采樣和下采樣操作重建多尺度特征金字塔。上采樣操作先將Feature5 特征經過雙線性插值法放大為原來的兩倍得到temp1 特征,再將Feature1 通過卷積核為1 的BasicConv卷積提取通道數為256的temp2特征,然后將temp1和temp2這兩個特征相加融合得到最終上采樣的Feature4 特征。下采樣操作相對比較簡單,將Feature5通過卷積核為3 的BasicConv 卷積并設置Stride 為 2 達到下采樣目的,得到Feature6。至此,原始中間層的Feature2特征完成重建。原始輸入特征金字塔的其他中間層的特征重建步驟基本一樣,而最大尺度特征只經過下采樣操作,最小尺度的特征只經過上采樣。重建后的特征金字塔融合了原始特征中的多尺度信息,低層特征也能包含更多的語義信息,檢測效果更好。
BasicConv 卷積涉及3 個操作,輸入的特征首先通過普通卷積層提取,然后使用BatchNorm層做數據歸一化處理,讓網絡提取的特征不至于因為數值過大而出現不穩定的情況,最后經過ReLU(Rectified Linear Unit)激活函數處理。
重建模塊得到的多個特征金字塔中,既有低層特征重建的特征金字塔,也有高層特征重建的特征金字塔。通過通道注意力模塊融合多個金字塔中相同尺度的特征,這樣得到的最終用作檢測的特征信息更加豐富,避免了主干網中的特征對檢測任務而言特征表示不夠充足的問題。同時,特征包含了高低層語義和細節信息,這樣既利于檢測框的準確生成,也利于網絡分辨背景和行人。融合后的最終特征不同通道的作用不同,為了增強更利于提高檢測效果的通道特征的表示,使用SEnet[23]提出的注意力方法設置一個通道注意力機制,讓網絡自己去學習怎樣利用融合特征中不同的通道特征。
通道注意力模塊整體結構如圖4 所示。多個金字塔中寬高為10 通道數為256 的特征經過Concat 操作融合成寬高為10 通道數為1 536 的融合特征。融合特征再經過Attention 機制增強不同特征通道的效果。最終得到的特征才用作最后的檢測層使用。

圖4 通道注意力模塊
Attention 的實現方式是將需要增強通道的融合特征作為輸入,然后通過全局平均池化(Global Average Pooling)壓縮每個通道的特征尺寸。圖4中的融合特征輸入之后,全局平均池化使融合特征的寬高變為1,通道數保持為1 536。再經過兩個用作激勵的全連接層和ReLU 激活函數層,其中第一個全連接層的輸出維度變為原來的1/16,第二個全連接層輸出再恢復成原來的通道數,以此在編碼解碼的激勵操作同時也不至于增加太多計算量。最后第二個全連接層的輸出經過Sigmoid函數求得融合特征的每個通道的注意力權值。
行人之間遮擋造成一個預測框可能同時包含兩個或者更多人,導致經過非極大值抑制[24]處理后只會留下一個框,造成漏檢。結合文獻[10-11]的思想設計處理遮擋問題的loss 函數,添加排斥損失,使得目標行人的預測框遠離其他行人,并且盡可能靠近要預測的真實目標框。模型在loss 函數的作用下更易檢測相互遮擋間的行人。新的loss函數為:

其中,T是預測框與真實框交并比大于閾值的預測框(正例樣本)的數量。計算正例樣本損失時a值為1,否則為0。Lconf、Lloc和Lrep分別是類別置信度損失、邊框回歸損失和排斥損失。
每個預測框包含N(負例樣本)和P(正例樣本)的類別置信度信息,置信度損失訓練網絡正確地給每個預測框分類。類別置信度損失表達形式為:

其中,表示計算第i個框所屬類別概率的對數值。假設第i個框是正例樣本,那么它為行人類的概率值越高,就越接近于0。
邊框回歸損失函數吸引預測框靠近真實框,與眾多通用目標檢測相似,使用SmoothL1函數衡量預測框和真實框的匹配程度。邊框回歸損失為:

其中,l、g分別為正例樣本和與每個正例樣本相匹配的真實框,每個檢測框用框的中心點坐標(cx,cy)和寬高(w,h)4個值表示。
Lrep項為排斥損失,目的是讓非此目標的預測框遠離此目標,計算表達式為:


通過計算預測框和與其相對應排斥框的cov值再求排斥損失。
在 Caltech-USA[25]、INRIA[1]和 ETH[26]數據集上進行訓練和測試,驗證MSAnet方法的檢測效果,并與其他具有代表性的方法進行比較。
實驗是在Ubuntu16.04系統下進行,使用Pytorch 1.1.0深度學習框架,其他配置包括NVIDIA1070、CUDA10.1和CUDNN7.6.0。MSAnet模型使用VGG16的預訓練權值進行網絡初始化。訓練和測試的圖片數據統一等比例縮放至300×300 的分辨率,同時也使用了隨機擴張、隨機裁剪等一些數據增強技巧。網絡使用隨機梯度下降法(Stochastic Gradient Descent,SGD)進行訓練。
模型總共訓練 210 個 epoch,batch-size 為 16。學習率(learning-rate)采用多分步策略,初始學習率為4E-3,此后在150、180 和200 個epoch 時學習率每次衰減為原來的1/10。參數衰減值(weight-decay)為0.000 5,動量因子(momentum)為0.9。為防止初始loss爆炸,前10個epoch的學習率從1E-4逐漸升至4E-3。
Caltech-USA、INRIA 和ETH 是行人檢測領域最常用的數據集[1-4,13-14],非常符合本文方法的實驗要求。Caltech-USA 和INRIA 兩個數據集用于驗證方法效果,ETH數據集用于驗證方法泛化性能。
3.2.1 Caltech-USA數據集
Caltech-USA是加州理工大學制作用于行人檢測的數據集。使用車載攝像頭在城市道路中拍攝的多段視頻進行制作,其中前6 段視頻用作訓練,后5 段用作測試。所有視頻的分辨率為640×480,總共包含25 萬幀,標注了35萬個行人框,約有2 300個行人。訓練設置和文獻[27]相似,每6幀抽取一張圖像,對訓練數據進行了篩選,去掉遮擋嚴重和無行人的圖像數據。
測試集包含 4 個子集 Reasonable、Large、Medium 和Far。Reasonble子集被眾多行人檢測方法用來評估模型性能,Far 子集中的行人高度只占圖像高度的4.17%到6.25%,對比完整的圖像高度算是非常小的行人。各子集屬性如表1所示。

表1 多個子集屬性
3.2.2 INRIA和ETH數據集
INRIA 數據集包含了各式各樣從高分辨率圖像上裁剪的圖片,每張圖像上都是不同的背景和行人。總共有2 120 張圖片,其中1 832 張用作訓練,288 張用作測試。訓練樣本中只有614 張圖是正例樣本,其他1 218張圖是不包含行人的負例樣本。
ETH 數據集由三段在繁忙的步行街上拍攝的視頻制作而成,存在許多不同尺度和遮擋的行人,總共包含1 804幀。ETH數據集上并沒有區分訓練數據和測試數據,因此ETH數據集上的1 804張圖像數據都被用來做測試,驗證模型的泛化性能。
3.3.1 驗證模塊及損失函數的有效性
在Caltech-USA 數據集的Reasonable、Medium、Far和Large 子集上進行測試。設置多組對比實驗驗證模塊及損失函數的有效性。采用文獻[28]提出的專門用于行人檢測的評估方法計算測試結果的LAMR(Log-Average Miss Rate)值,LAMR值越低則檢測效果越好。
在Caltech-USA測試集的子集上比較模型對多尺度行人的檢測效果。如表2 所示,MSAnet 在未加入排斥損失時,在各子集上的表現就已經超過了眾多方法,加入了針對行人間相互遮擋的排斥損失后,在子集上的性能繼續提升。對比原始RFBnet 和其他多尺度方法,MSAnet的檢測效果更好,在Reasonable子集上達到8.7%的LAMR 值,在小行人的Far 子集上的LAMR 值達到73.1%。原始MSAnet模型的損失函數和RFBnet基本相似,模型的行人框的生成主要靠邊框回歸損失來訓練,加入的排斥損失起到輔助網絡訓練的作用,彌補邊框回歸損失的不足,幫助網絡更易區分相互遮擋的行人。

表2 多尺度行人檢測效果(LAMR值) %
文獻[16]和文獻[19]都是在Faster R-CNN網絡上做改進,類似于FPN 中的top-down結構,融合不同層的特征增強對不同尺度行人的檢測效果,他們的特征主要來源于主干網的直接提取。RFBnet和MS-CNN直接使用主干網中的特征做檢測,這樣的特征還有很大改進空間。MSAnet使用卷積特征重建模塊和通道注意力模塊提取融合主干網中的多尺度特征,這樣低層特征能融合更多語義信息,增強了特征對檢測任務的作用。MSAnet在4個子集上的檢測效果也驗證了改進模塊的有效性,在面對多尺度任務時,MSAnet的檢測效果更好。
3.3.2 各方法在多個數據集上比較
在Caltech-USA、INRIA 和ETH 數據集上與其他具有代表性的方法進行比較,計算每個方法的LAMR 值,并繪制漏檢率(Miss Rate)和FPPI(False Positives Per Image)曲線圖。
在Caltech-USA 和INRIA 的訓練集上進行聯合訓練,并在Caltech-USA測試集上測試,測試結果如圖5所示。使用前面聯合訓練得到的模型繼續在INRIA 數據集的訓練數據上進行微調,然后在INRIA 數據集上測試,得到測試結果如圖6所示。ETH數據集上并未劃分訓練數據和測試數據,因此用在INRIA數據集上得到的模型直接在ETH 數據集的全部數據上做測試,測試結果如圖7所示。為了更直觀地比較各方法,表3結合圖5、圖6、圖7中的LAMR值數據繪制各方法比較表。

圖5 Caltech-USA測試集

圖6 INRIA測試集

圖7 ETH測試集

表3 方法比較(LAMR值) %
從表3 可以看出,本文提出的方法在Caltech-USA和INRIA數據集上都達到了最優的測試結果,超過了眾多基于手工特征[1-4]和深度學習[5,13-14]的方法,在 ETH 數據集上也表現出非常好的泛化性能。如圖5 所示,在Caltech-USA測試集上達到了最優8.7%的LAMR值,對比原始RFBnet方法的LAMR值下降了1.9個百分點,對比RPN+BF方法的LAMR值下降了0.9個百分點。相比傳統基于手工特征的方法,MS-CNN 和RPN+BF 等在Caltech-USA數據集上使用卷積提取行人特征的方法達到了當時最優的檢測效果,也驗證了手工特征并不是必不可少的[13],如何提取更準確的行人特征才是檢測的關鍵。MSAnet 模型使用空洞卷積增大了卷積核的感受野,同時融合不同層特征增強了低層語義信息,Caltech-USA數據集中68%的行人處于Medium子集區間,增強的低層特征更適合檢測小尺度行人。本文模型在INRIA測試集達到了最優4.9%的LAMR 值,比原始RFBnet 方法好1.7個百分點,如圖6所示。INRIA屬于靜態行人數據集,行人特征相對于背景較明顯,手工特征和卷積提取的特征都能有很好的檢測效果,但是行人像素高度分布較廣,在50到850之間,MSAnet模型的融合特征在面對多尺度行人時效果更好。如圖7 所示,本文模型在ETH 數據集上未做任何訓練的情況下仍然達到了40.2%的LAMR值,對比其他方法也是一個非常具有競爭力的結果。Caltech-USA、INRIA 數據集上的數據和ETH數據集上的數據并不是獨立同分布的,它們圖像數據拍攝的場景和方式都不同。使用在Caltech-USA 和INRIA 數據集上訓練的模型達到40.2%的效果,也說明了MSAnet模型的泛化性能非常好。
行人檢測的多尺度變化一直影響著檢測器的檢測精度。本文提出針對多尺度變化和遮擋問題的MSAnet模型,通過卷積特征重建模塊和通道注意力模塊來融合不同尺度的特征,有效解決了低層特征語義信息不足的問題,提高了模型對多尺度行人的檢測效果。MSAnet模型在RFBnet的基礎上構建,并重新改進了RFBnet方法的損失函數,新方法在面對行人遮擋情況時,魯棒性更強。在3個數據集上進行訓練和測試,本文提出的方法達到了非常好的檢測效果,在Caltech-USA 數據集上優于其他最好的方法0.9 個百分點,在INRIA 數據集上優于其他最好的方法1.7個百分點,解決了多尺度變化、遮擋和小目標檢測不佳等問題,在智能監控和自動駕駛等領域有廣泛的應用。
現階段卷積神經網絡的層數越來越深,參數量大,檢測模型實用性差,依賴于高性能設備做推理,如何剪枝、壓縮、減少模型計算量是下一步的研究方向。