王 茜 陳一民 丁友東
1(上海大學計算機工程與科學學院 上海 200072) 2(上海市公安局刑事偵查總隊科技信息科 上海 200083)
由于機動車公共管理和事件查控的需求,我們往往需要在海量視頻監控圖像中快速獲得相應分類屬性的目標車輛或車輛集。車型屬性相對于機動車的顏色、品牌、用途、大小等屬性而言,分類更加明確而精細,對我們的價值也更大,但針對其進行圖像分類任務也面臨更多挑戰。以往各類方法或需要過多預處理操作,或識別率低,且多數僅基于小型數據集。自基于神經網絡的深度學習問世以來,基于大規模圖像數據的應用開始成為可能,如何基于有效CNN網絡,對基于監控圖像的海量機動車圖像進行高精度的屬性分類,是公安需要解決的實際問題。
近幾年業內熟知的Alex CNN[1]、GoogleNet V1[2]、VGGnet[3]、ResNet[4]等CNN網絡,伴隨著網絡層級不斷增加,算法往往需要大量訓練時間和計算量消耗,網絡層級增加導致參數變大的弊端也越來越凸顯。學者們開始把目光從原有通過致力于增加網絡深度以提升識別準確率的研究方向,轉入到增加網絡廣度、減少網絡參數和提高收斂速度的研究中。2015年起,Googlenet在原有算法97中推出了V2版本[5],提出了更加有效提高學習率的批泛化層BN(Batch Normalization)取代原有成效不高的網絡的局部反應歸一化層LRN(Local Response Normalization)。2015年底,Googlenet再次提出了V3版本[6],全面提出了inception單元的概念,對于減少網絡參數和提升網絡廣度做出了較大貢獻。
在解決一直困擾大家的不均衡樣本導致的識別偏差的問題上,難負樣本挖掘[7]HNM(Hard negative mining)是重要的通用性減輕樣本不均衡性的方法。文獻[7]就將該方法應用于花卉問題,以期配合樣本增加解決花卉種類過多而樣本過少的問題;文獻[8]提到了方法對計算資源的消耗較大,并提出了減少挖掘算法次數的選擇性Hard negative mining方法,同時通過高斯分布函數計算正確和錯誤預測的正樣本。
在防止過擬合和縮減網絡大小的進展中,每一個神經元擁有相同的概率被丟棄和保留的dropout方法被提出和廣泛應用[9]。但部分學者提出了用不同決定性和隨機性影響因子替代原有隨機dropout參數的方法,以通過對復合數據集中不同部分集合的局部參數調整,實現對識別效果的整體優化[9-10]。
本文基于前述方法,采用了節省網絡層級和時間消耗的CNN網絡。我們將該網絡輔以優化后的dropout參數以加快收斂算法,通過改進的Hard negative mining方法減少異類樣本分布不均衡性帶來的不利影響。
我們采用了真實城市道路中6個路口共計42 個多角度高清攝像頭,抓拍過往車輛圖片。經過6個月的時間,我們去除了同車型中樣本數少于100的極小類車型圖片和遮擋、模糊圖片,整理出車輛圖片共計100萬張,即使這樣,同一車型下最多樣本數達到了73 714張,最少樣本數僅為100張,數據集仍呈現了極度不均衡性。我們按80%和20%的比例將其分為訓練集和測試集。
本文基于深度神經網絡的車輛屬性分類算法示意如圖1所示。

圖1 基于深度神經網絡的車輛車型屬性分類算法示意圖
算法詳細實施過程如下:
① 數據輸入(Input):
我們將共計T類車型的P張訓練圖片集統一歸一化為3 200×160的RGB圖像,并將其表述為:
{xp|xp∈}(1≤p≤P)
(1)
② 神經網絡(CNN)訓練:
圖2所示為我們采用的神經網絡模型。除輸入層外,中間經過了共計三個卷積層Conv(Convolution)、一個池化層(pool)、六個Inception單元,兩個全連接層(Full connecting)。

圖2 算法卷積神經網絡部分結構圖
卷積層(Conv1-3):通過卷積,獲取圖像的多個特征。每個卷積后面均跟隨一個修正線性單元ReLU(Rectified Linear Units)和BN層。參數設置上patch size均為3,stride為2,channel為32,pad為2。Conv1-Conv3參數共計928+9 280+18 624=28 832個。
最大池化層(pool):采用最大池化層降低特征圖(feature map)一半的大小,stride為2(非重疊),patch size設為2。
Inception1-Inception6單元:為減少參數和加速收斂,將原有5×5卷積改為兩個3×3,增加了網絡的非線性。inception單元內部參照googlenet V3中的設計[6],但單元數較之原算法減少一半。值得一提的是,我們將Inception2到Inception4和Inception4到Inception6單元之間,設計了兩條跳轉直連的網絡通路,目的是為了避免多次Inception傳輸后導致的特征損失(圖2中虛線表示)。
全連接層(1-2):將Inception單元最后獲得的“分布式特征表示”,映射到樣本標記空間,下述的dropout就在全連接層1展開,具體見③,全連接層1生成大小為512的輸出,全連接層2將1輸出大小再次減半,最終獲得大小為H=256的輸出層記為{yp,n},為CNN后生成的全連接特征值。可得:

(2)
式中:Fcnn(·)為xp經過多重神經網絡后生成yp的H個特征值的函數表示。
③ 分類:
直接根據歐式距離生成樣本間的距離函數,任意兩張圖片p1和p2間距離為:
(3)
我們將生成距離用Softmax分類,盡可能讓類間距離最小,類內距離最大,即下式最小:
(4)
式中:φ(·)為用Softmax回歸函數生成的預測概率和真實概率的交叉熵。最終完成車輛屬性分類,生成車型類別為1到T的集合結果。
④ 難負樣本挖掘:
{x(i,t)|xi,t∈} 1≤t≤T1≤i≤It
(5)
即xi,t為第t車型類別下的第i張圖片。
我們首先將本次CNN網絡迭代次數記為r,并假設在第r次迭代完成之前,C圖片已被神經網絡判別為tc車型分類的positive數據集中,這時網絡的輸出層可表述為:
tc(r-1)∪HNeg(r-1)
(6)
即被分為相對于tc完全分類的true positive和hard negitive兩部分的數據集。所有的圖片可以在多次不同的迭代中分類到各自的true positive集中去,如圖片B被正確分類為tc,我們這里不做繼續討論。但設在第r次迭代中獲得的正樣本集為tc(r)中存在正確正分類Truetc(r)和錯誤正分類Falsetc(r),即:
tc(r)=Truetc(r)∪Falsetc(r)
(7)
我們將錯誤正分類并入原HNeg(r-1),正確正分類并入原tc(r-1),即:
HNeg(r)=HNeg(r-1)∪Falsetc(r)
(8)
tc(r)=tc(r-1)∪Truetc(r)
(9)
為考慮在類別t下正樣本過多情況下tc(r)不斷增長所引發的數據不均衡加劇的情況,不同于文獻[8]的處理方式,我們引入了質心和距離函數δ(t,r,i),當時,即It(r)為第r次迭代在類別t下正樣本數與該迭代時的總樣本數P(r)的比值等于π(t,r)倍的總樣本均衡分類值時,開始篩選tc(r)集合中的樣本。π(t,r)可寫為:
(10)
篩選時,我們保留該集合下最邊界的樣本,即找出距離質心最近的樣本的予以丟棄,以停止該分類下樣本數增長。距離函數定義為:
(11)
我們將丟棄操作記為Throw():
(12)
即在達到π(t,r)條件時,執行Throw()操作。其中findmin(δ(t,r,i))為找出距離質心最小距離的樣本。根據我們車輛數據的不均衡度,我們將π(t,r)設為4,即保留正樣本數不超過樣本均衡分類值的4倍。值得注意的是,為了避免樣本差別大導致的質心偏移,我們建議該方法應用于不均衡性程度高且樣本量足夠大的數據集中。所得結果將不斷更新入網絡輸入層,隨著迭代次數的增加,增強各類別邊界的易混淆類別的數據易分性。
⑤ 基于神經元重要性分值的dropout實施:
我們把dropout的操作實施在全連接層1上,未沿用以往隨機減去神經元的做法,而是參考了文獻[10]的方法后,采用了簡單計算的基于分值的dropout方法。給每個神經元m在網絡中所起到的重要性進行打分,分值記為Score(m),設:
Score(m)=φ(Fcnn(xp))-φ(Fcnn-m(xp))
(13)
式中:Fcnn-m(·)表示將神經元m置為無效時的神經網絡,即我們把m無效時和有效時,兩者的回歸概率差值作為該神經元的重要性的分值函數。判定是否丟棄該神經元的判定函數為:

(14)
式中:ω為重要性分值的臨界閾值。我們把ω置為0,即當神經元m有作用時予以保留(即dropout(m)=0),無作用或為負作用時丟棄(即dropout(m)=1)。該方法既減少了隨機dropout帶來的盲目性,又可以根據ω值得設置,保留神經網絡中發揮作用或作用最大的神經元,在縮減網絡大小和去除無效網絡結構的同時,實現了提升網絡識別效果的雙重作用。
本文神經網絡模型訓練過程如圖3(a)所示,為便于比較性能,我們在圖3(b)中同時展示了Googlenet V3算法的訓練情況。在兩者同樣進行共計20.083 33小時的241 000次迭代過程中,本文算法在耗時15.92小時的191 000次迭代中達到收斂,此時識別率(accuracy)為91.69%,距離最終最高正確率91.96%僅0.27個百分點;較之圖3(b)中Googlenet V3中在耗時18.33小時的第220 000次迭代達到收斂,具有訓練時耗少、收斂速度快的特點。究其原因,本文在難負樣本挖掘和基于神經元重要性分值的dropout步驟,起到了提升算法識別率和效率的作用。

(a)

(b) 圖3 本文神經網絡算法與Googlenet V3訓練過程比較
我們接著對本文神經網絡與業界熟知的神經網絡進行了識別率的比較,結果如表1所示。我們看到,本文算法在前1(top1)和前5(top5)置信度上獲得了91.96%和96.42%的識別率,較之Lenet CNN、Alex CNN、Googlenet V197,在top1上都有較大的提升;在與較本文算法層級更多的Googlenet V3算法的識別率比較上,本文算法在top1上略高于V3算法0.74個百分點,證明了算法在圖像分類上的優越性。

表1 各主流神經網絡算法與本文算法的識別正確率比較
本文利用一種識別率、收斂速度、訓練耗時均優于googlenet V3的改進的CNN神經網絡算法,實現了基于大規模機動車圖像庫的車型屬性分類。我們在該CNN網絡的基礎上,提出了通過難負樣本挖掘和基于神經元中重要性分值的dropout方法,緩解了樣本不均衡性問題帶來的不利影響,進一步提升了神經網絡的特征提取能力,顯著減少了神經網絡的算法消耗,提升了算法的訓練速度。下一步我們擬進一步增加樣本,及將該算法應用在車輛其他屬性分類實踐中,實現車輛全屬性的分類。