郭健忠,余騰飛,崔玉定,周興林
(1.武漢科技大學 汽車與交通工程學院,湖北 武漢 430065;
2.武漢科技大學 機械自動化學院,湖北 武漢 430065)
近幾年來,隨著計算機視覺技術的快速發展,基于神經網絡的目標檢測技術不斷增強,其在汽車行業的運用受到了廣泛的關注和研究。目前,百度、滴滴、博世等公司已把神經網絡算法運用到汽車無人駕駛上,并取得了良好效果。可以預見的是,神經網絡算法必將在無人駕駛領域大放光彩。
但是在實際應用當中,有兩個難點需要解決,一是車載設備的計算能力和存儲空間往往受到諸多限制,故算法必須對硬件資源的需求少;二是算法要對遠距離上的小目標有較強的檢測能力,檢測速度快,以便汽車有充足的時間應對。采用輕量型神經網絡如MobileNet可以有效降低模型對硬件的要求。2016年,Iandola等人[1]提出Squeeze Net,采用1×1卷積核對上一層的特征圖進行卷積,主要目的是減少特征圖的維數。后來,Sifre等人[2]提出了深度可分離卷積的結構,進一步減少了網絡的參數量和計算量。而深度可分離卷積的本質是使用深度卷積和逐點卷積將卷積操作分解為冗余信息更少的稀疏化表達。2017年,谷歌公司的Howard等人[3]發布了一種可以在手機等移動終端運作的神經網絡結構:MobileNet,采用了深度可分離卷積的結構。之后,Howard等人[4]嘗試對MobileNet進行改進,提出了MobileNetv2,主要利用了線性瓶頸層和倒殘差對網絡進行改進,明顯地提升了網絡的預測精度。即使如此,在車載設備的限制和要求下,MobileNetv2的檢測精度仍不令人滿意。為提高其檢測精度和對小目標的檢測能力,可考慮結合其他算法,取長補短,以期提高整體算法的性能。
卷積神經網絡中因對目標檢測的方式不同,可把算法大致分為基于候選區域和基于回歸的目標檢測算法兩類[5]。基于回歸的目標檢測算法省略了候選區域生成步驟,直接將特征提取、目標分類以及目標回歸在同一個卷積神經網絡中實現,將目標檢測過程簡化為一種端到端的回歸問題,使基于深度學習的目標檢測算法在速度上有了大幅度提升,這無疑比基于候選區域的算法更適合。這類算法的代表有:YOLO系列[6-7]、SSD[8]、FPN[9]以及Retina Net[10]。其中,SSD網絡是當中檢測精確度相對更高的網絡結構。為提升SSD模型在中小目標檢測方面的能力,很多學者對此進行了研究。例如,Tang等[11]在原有SSD模型的基礎之上采用多視窗的方法進行檢測從而提升準確率,但是這種方法的區域劃分不固定,對于目標檢測的準確性和魯棒性產生了一定的影響。Jeong等[12]提出了RSSD模型,改善了SSD的特征融合方式,利用分類網絡增加獲取的Feature Map之間的聯系,減少了重復框的出現,同時增加了Feature Map的個數使得模型能夠檢測到更多尺度的目標;Fu等[13]提出了DSSD,使用Resnet-101替代原來的VGG Net,在分類回歸之前使用殘差模塊,在輔助的SSD額外特征卷積層后面添加了幾層反卷積層,整個網絡呈現出寬窄寬的結構,提高了小目標的檢測精度。陳幻杰等[14]對SSD模型的改進,通過小目標特征區域進行放大提取,額外提取多個高層特征層的信息,利用更深的網絡結構改善中等目標的檢測結果等方法,較大地提高了對中小目標的準確率,檢測速度相比原有的SSD模型下降了將近一半,在滿足準確性的基礎上實時性受到了較大的影響。
該文結合MobileNetv2和SSD模型構成MobileNetv2-SSD網絡,并對網絡結構進行改進,增強對特征的提取效果,使網絡對小目標有更強的檢測能力,同時降低了對硬件資源的需求。實驗表明,改進后的網絡有更強的小目標檢測能力。
在車輛目標檢測階段,因需要迅速、準確地識別目標,所以基于回歸的目標檢測算法更加適合。考慮到SSD在準確度和檢測速度上比其他基于回歸的目標檢測算法更有優勢,故該文采用SSD網絡進行目標檢測。但SSD網絡對小目標的檢測效果較差,而且整個模型相對較大,在實際應用時對硬件要求高,考慮到硬件成本問題,應結合使用規模較小的網絡,降低對硬件配置資源的需求,而MobileNetv2作為輕量化的較為符合需求。基于以上分析,考慮結合MobileNetv2和SSD網絡。結合后的網絡兼具SSD網絡檢測速度快、準確度高和MobileNetv2網絡參數少、模型小的特點,較為符合要求。
SSD模型是當中檢測精確度相對較高的網絡結構,其在不同大小的特征圖上預測目標。SSD網絡檢測目標時,以每一個網格為基礎,生成多個先驗框,之后每一個先驗框都會檢測框內是否有目標,若判斷出框內有目標,就根據目標的大小和位置,計算出每一個先驗框的寬高偏差和中心點的偏移量,通過解碼得到預測框的中心和寬高。利用框中物體的置信度對框進一步篩選,經過非極大值抑制處理,篩選出得分最高的框,標記在圖片上。
MobileNetv2是一種輕量化的卷積神經網絡,它對輸入圖像先升維、深度分解卷積、再降維,這種被稱為倒殘差的結構可以減少參數量和計算量。在ImageNet數據集上做實驗,MobileNet與VGG16的準確率幾乎一樣,但參數量和計算量只有其1/9。
MobileNetv2-SSD網絡結合兩種網絡的優勢,檢測速度快,檢測準確度高,然而它對小目標的檢測效果不盡如人意。在目標檢測物的在圖像中占比較小時,也會存在如下問題:
(1)小目標呈現的信息量較小,導致檢測效果不佳,訓練時需要反復挖掘信息。
(2)在訓練階段,對于小物體的標注容易存在偏差,在目標物體較小的情況下,標記的誤差會對檢測效果產生較大的影響。
(3)實際應用場景中,小目標數量較少,使得網絡訓練時負樣本過多,導致模型的退化,嚴重制約了檢測網絡的性能。
為解決以上問題,該文提出特征增強和特征融合的方法使網絡反復挖掘小目標的信息,以加強網絡對小目標的檢測能力。同時,為了進一步減少參數量和計算量,并使得網絡更符合檢測車輛特征和實際應用的需要,對先驗框進行改進。
改進后的模型結構如圖1所示。輸入為300×300×3的圖片,經過一次標準卷積和兩次深度可分離卷積后進入圖1所示結構。用MobileNetv2網絡取代原本SSD中的VGG網絡,用于多尺度特征提取,之后用特征增強模塊挖掘提取到的信息。考慮到大特征圖更易提取小目標,故對大特征圖進行特征融合,以加強對小目標的提取能力。然后,對增強或者融合后的特征圖進行歸一化和使用leaky ReLU等操作,防止梯度消失和梯度爆炸。最后,用非極大值抑制進行目標分類。
模型主要分為兩個部分,第一部分是用于提取目標特征的MobileNetv2基礎模塊和SSD基礎模塊,一步步縮小尺度,得到不同尺度下的特征圖;第二部分是多尺度特征檢測網絡,其作用是進行不同尺度條件下的特征提取,并把提取到的特征進行增強和融合,然后進行歸一化處理和線性修正,最終得到一維向量進行目標檢測。從圖1可以看出,檢測模塊(detections)得到6個特征圖中目標的置信度和坐標,通過非極大值抑制(non-maximum suppression,NMS)模塊過濾掉重復預測的目標。通過該模型可以有效提取待識別目標的信息,且具有準確度高和檢測速度快等優點,對變化目標具有較好的魯棒性。

圖1 M2-SSD網絡結構
網絡的基本配置如表1所示。表中t是輸入通道的倍增系數(即瓶頸層中的通道數是輸入通道數的多少倍);n是該模塊重復的次數;c是輸出通道數;s是該模塊第一次重復時的stride(后面重復都是stride=1)。

表1 M2-SSD網絡基本配置
瓶頸殘塊(bottleneck residual block)是網絡中很重要的結構。它把數據先升維,使用輕量級深度卷積做過濾;再應用深度可分離卷積進行處理。為便于實際應用,如果維度越低,卷積層的乘法計算量就越小,想要減少運算量,就需要盡可能將網絡設計成低維度的。如果整個網絡都是低維的,那么整體計算速度就會很快。但是如果維度太低,激活變換ReLU函數可能會濾除很多有用信息,造成信息丟失或破壞。針對這個問題,使用linear bottleneck來代替原本的非線性激活變換,而在提取特征數據階段,高維張量更能提取到足夠多的信息,故先對數據進行升維,再降維。
為了提高大特征圖對小目標的檢測能力,豐富不同尺度特征圖的特征信息,提出了特征增強模塊。如圖2所示,模塊整體為一個殘差網絡結構,相比于學習原始的信號,殘差網絡學習到了信號的差值,還增加了網絡的寬度。殘差網絡可以通過跳層連接,增強了梯度的流動,從而使得信息前后向傳播更加順暢,不對稱的結構使得反向傳播時,錯誤信號可以不經過任何中間權重矩陣變換直接傳播到低層,一定程度上可以緩解梯度彌散問題。多重1×1和3×3的卷積可以充分挖掘特征圖信息,而批量標準化可以解決梯度消失的問題,由于小目標的文本信息量較少,故這樣設計特征增強模塊可以有效增強對小目標的檢測能力。

圖2 特征增強模塊結構
為了加強各個尺度特征圖之間的聯系,增強檢測能力,提出特征融合模塊,結構如圖3所示。首先,用1×1的卷積核對兩個特征圖進行卷積,使其通道統一,然后采用雙線性插值使特征圖的大小統一,之后用concat函數進行合并。特征融合能使得特征圖的語義更豐富,對大尺度特征圖進行特征融合可以提高對小目標的檢測能力。

圖3 特征融合模塊結構
SSD模型在目標檢測部分與圖像金字塔有著相似的結構,對圖像下采樣得到不同大小的特征圖。由于大尺寸特征圖的細節特征信息豐富,能檢測出細微輪廓,而小尺寸的特征圖丟失較多細節信息,但對較大輪廓檢測效果好,因此對不同特征層進行融合能夠提高網絡語義信息,增強細節與整體之間的聯系,提高網絡對小目標的檢測能力。
特征融合具體步驟如下:該文采用特征融合的思想,在以上特征增強的基礎框架上,首先對不同大小特征層,用padding=0的1×1卷積核在這些特征圖上做卷積操作,保證了融合時的通道統一。由于這里把不同大小的特征圖進行融合,所以需采用雙線性插值操作使特征圖大小統一。改進后的特征層有更豐富的語義信息,能更好表征目標的特性,對車輛小目標檢測的準確率有較大幅度改善。由于SSD中的檢測模塊的特征層尺寸較小,且包含語義信息較強,不再進行特征增強。
傳統的SSD網絡檢測目標時,會對所有先驗框解碼,然后進行置信度排序,置信度低的被刪除。該文提出的改進是在解碼前先對先驗框進行置信度排序,在每個同目標類別中去除置信度較低的先驗框,保留一定數量的高置信度先驗框,再進行解碼得到真實框,如圖4所示。這樣做的目的是減少需要解碼的先驗框個數,減少了計算量。

圖4 先驗框改進后解碼過程
考慮到本實驗中目標種類較少,且要求模型輕量化,故只保留50個同類別的先驗框。即對先驗框進行置信度排序后,同一目標類別中,只保留50個置信度最高的先驗框。之后對每一類別的50個先驗框進行解碼,把大小和位置修正,再從中選出IOU最大的預測框作為真實框輸出。
為了提高對小目標的檢測能力,調整先驗框的尺寸。特征圖先驗框的個數預測依次為4、6、6、6、4、4。先驗框長寬比依次為1∶1,2∶2,1∶2,2∶1,1∶3,3∶1,先驗框尺度計算公式如式(1)所示。
(1)
式中,Sk表示先驗框的尺寸相對于原圖的比例,Smin和Smax分別表示比例的最小值與最大值。為了更好地檢測小目標,將Smin和Smax的值調整為0.16和0.88,這樣能夠有效避免由于目標過小導致在訓練階段真實標簽無法找到相應的先驗框與之匹配的問題。尺寸調整后的先驗框大小如表2所示。

表2 先驗框尺寸


(2)
由于針對小目標檢測,正負樣本特征的不平衡,往往造成簡單的負樣本主導網絡的訓練并導致模型的退化,這嚴重制約了檢測網絡的性能。為解決此問題,該文引入Focal Loss損失函數。具體可以表示為:
FL(pt)=-αt(1-pt)γlog(pt)
(3)
其中,αt用于控制正負樣本的權重,取比較小的值來降低負樣本的權重;(1-pt)γ用于控制難易樣本的權重,目的是通過減少易分樣本的權重,從而使得模型在訓練的時候更加專注難分樣本的學習;pt表示某個目標的類別概率。
損失函數由位置損失和分類損失加權組成,公式如下:
(4)
其中,t*為真實的目標類別,t為預測目標類別,b*為真實的標簽框位置坐標,b為預測目標坐標,N表示與真實框相匹配的先驗框的個數,Lclass(t*,t)為分類損失函數,a為權重,Lloc(b*,b)為位置損失函數。
位置損失可表示為:

(5)
其中,Pos表示正樣本,m為先驗框的位置m∈{x,y,w,h},x,y表示先驗框的中心點坐標,w,h分別表示先驗框的寬和高。SmoothL1損失函數在Fast R-CNN中被提出,主要目的是為了防止梯度爆炸。
分類損失可表示為:
(6)
本實驗用的計算機配置為windows10操作系統,Intel Core(TM)i9-10900K處理器,內存為16 GB,顯卡為NVIDIA GTX 1080,開發環境使用的是Tensorflow1.8。
實驗使用的是KITTI數據集,并進行了調整。KITTI數據集是目前國際上最大的自動駕駛場景下的計算機視覺算法評測數據集,該數據集包含市區、鄉村和高速公路等場景采集的真實圖像數據,每張圖像中最多達15輛車和30個行人,還有各種程度的遮擋與截斷。KITTI數據集有8個類別,將標注文件中“Van”、“Truck”、“Tram”和“Car”類別合并為“Car”類,其他類別作為背景。
為了增加訓練的數據量,提高模型的泛化能力,同時增加噪聲數據,提升模型的魯棒性,對數據集進行數據增強。比如使用隨機縮放和旋轉對樣本做一點處理,隨機地縮放小目標的size(20%以內)還有隨機旋轉(15°左右),或者對樣本進行隨機反轉、裁剪、平移、添加噪聲。
經過數據增強后,數據集總共有7 600張圖片,選用其中6 200幅圖像作為訓練集,剩下1 400幅圖像作為驗證集。實驗中設定沖量常數為0.9,權重衰減系數為0.000 5,學習速率為0.000 8。在訓練集中每次迭代處理8個樣本,進行240個迭代周期,訓練迭代次數為54 000次。
以模型訓練時的損失函數變化和測試時的各類別AP的平均值作對比分析,評價模型性能的優劣。其中,損失函數由位置損失和分類損失加權組成,計算總損失值與迭代次數的關系,各類別AP的平均值即mAP(mean average precision)由召回率和精確率得出。
召回率的計算方法為:
精確率的計算方法為:
式中,TP(true positive)指正樣本中預測為正的數量,FN(false negative)指正樣本中預測為負的數量,FP(false positive)指負樣本中預測為正的數量。
模型對數據增強后的KTTI數據集進行檢測,得到的實驗結果如圖5所示。圖5(a)為損失函數的損失值與迭代次數之間的關系圖,訓練完成后的損失值為0.03,圖5(b)為訓練時改進后的先驗框的置信度得分和訓練次數的關系圖。
實驗結果表明,改進網絡的損失值較小,置信度得分較高,證明了網絡的有效性。
圖6為改進型MobileNetv2-SSD網絡的檢測效果。其中,(a)為算法對遠處的多個小目標的檢測效果;(b)為在強光照條件下,算法對正面目標和背面目標的檢測效果;(c)為算法對側面目標和被截斷目標的檢測效果;(d)為目標處在被遮擋的陰影背景下算法的檢測效果。可以看到,在復雜多變的應用場景下改進后的算法仍有較好的檢測效果。但為了突出其先進性,需與其他算法進行對比分析。

(a)遠處多重目標 (b)強光照目標

(c)側身目標和半截目標 (d)弱光照被遮擋目標
首先與未進行改進的MobileNetv2-SSD網絡作對比。圖7(a)為原本的MobileNetv2-SSD網絡的檢測效果,(b)為改進型MobileNetv2-SSD網絡的檢測效果。可以看出,原本的MobileNetv2-SSD網絡對遠處的小目標檢測有遺漏,對被截斷的目標無法識別,對給較少信息的目標檢測能力較差,而改進型MobileNetv2-SSD網絡有針對性地提高了對小目標的檢測能力,對目標信息反復挖掘,所以檢測效果較好。

(a)原本的MobileNetv2-SSD網絡檢測效果 (b)改進型MobileNetv2-SSD網絡檢測效果
之后是與其他算法作對比分析。表3是不同檢測算法在KITTI數據集上的檢測結果對比,Faster R-CNN由于把目標識別和定位分兩步完成,導致模型較大,而且檢測速度較慢。其他的算法都是單步識別網絡,同時進行目標的識別和定位,所以檢測速度較快。其中,YOLOv2有著最快的檢測速度,是SSD300檢測速度的兩倍,但檢測準確度比不上SSD300。YOLOv3有著最高的檢測準確度,達到了91.58%,但網絡仍比較大。而文中的檢測網絡在檢測速度上僅次于YOLOv2,檢測準確度上僅次于YOLOv3,而且基本持平,網絡大小上遠小于其他網絡。由此證明,文中的檢測網絡在綜合性能上有較強的優越性。

表3 不同檢測網絡的檢測結果
基于MobileNetv2-SSD網絡進行改進,針對SSD網絡的小目標檢測能力不足的問題增強特征的提取和運用,為減小計算量,對先驗框的使用過程進行改進。實驗表明,改進后的網絡相比原網絡有更高的準確度,同時檢測速度更快,這在車輛小目標檢測中有較高的應用價值。該實驗的進一步研究是擴大檢測目標的種類,增加對行人、電動車、摩托車等目標的檢測,以增強應用價值。