鮑敬源,薛榕剛
1.海裝武漢局駐武漢地區第二軍事代表室,武漢 430070
2.武漢理工大學 計算機科學與技術學院,武漢 430070
近年來,我國汽車保有量不斷增加。汽車在給人們的生產生活帶來極大方便的同時,也造成了一系列的社會問題,如交通擁擠、環境污染、交通事故等。特別是交通事故,在造成巨大直接經濟損失的同時,給當事人及其家屬造成無法挽回的傷害。在造成交通事故的各種原因中,疲勞駕駛所造成的交通事故最多。如何從技術上提高駕駛安全,減少交通事故的發生已經成為一個世界性的難題。
隨著無人駕駛及輔助駕駛系統的興起,從技術上減少因疲勞駕駛等原因引起的交通事故正成為現實。在無人駕駛及輔助駕駛系統中,交通標志檢測是其中非常重要的一個環節[1]。當前對交通標志的檢測方法主要有四類,基于顏色的方法、基于形狀的方法、基于多特征融合的方法和基于深度學習的方法[2]。基于顏色的道路交通標志檢測主要利用顏色閾值對圖像進行分割,去除背景區域得到特征區域,再對特征區域所包含的圖像進行識別分類。2009年,沙莎等人[3]結合RGB和HIS多顏色通道信息對交通標志進行檢測,并通過曲線擬合的最小二乘法進行交通標志的精確定位與類型判別。2010年,Chourasia 等人[4]提出使用顏色質心匹配算法對交通標志進行檢測,該算法使用YCbCr 空間進行顏色分割,可有效降低光照對圖像分割的影響?;谛螤畹牡缆方煌酥緳z測方法主要是利用交通標志固有的形狀進行檢測。2008 年,Keller 等人[5]使用一種基于形狀的興趣算子對交通標志進行檢測,提取具有對稱性的候選區域,并通過基于Harr 小波特征的分類器對圖像進行分類,檢測出速度標志。2011 年,何明一等人[6]結合交通標志顏色特征,通過邊緣檢測及非線性最小二乘技術對圓形交通標志進行檢測。由于受天氣、光照等因素的影響,僅僅通過顏色信息檢測交通標志難以得到理想的檢測結果。2015 年,湯凱等人[7]提出一種顏色特征、形狀特征和尺度特征的多特征系統方法對交通標志進行檢測。傳統的道路交通標志檢測方法檢測速度快、對設備性能要求較低,但易受天氣、拍攝角度等因素的影響,且需要手動提取目標特征。而基于深度學習的交通標志檢測方法能夠自動提取目標特征,且模型泛化能力較好。2017年,長沙理工大學張建明團隊[8]提出了一種基于YOLOv2的實時交通標志檢測算法,該算法能有效檢測較小的交通標志,且其檢測速度達到0.017 s/張,真正實現了實時檢測。2019 年,Tabernik 等人[9]通過卷積神經網絡對交通標志進行端到端的檢測識別,取得了較好的效果。曲佳博等人[10]提出了一種集時空關系與多尺度卷積網絡于一體的時空卷積神經網絡。在保證準確率的前提下雖然有效地降低了參數輸入,但檢測時間相對較長。李東潔等人[11]針對YOLOv3 動態跟蹤實時性較差的問題進行了主干網絡的改進,同時創新性地提出了改進背景對目標跟蹤的方法,對交通標志實時檢測有重大的啟發意義。宋艷艷等人[12]將YOLOv3 與殘差網絡相結合,證明了二者融合的有效性。
隨著深度學習網絡規模的增大,模型計算復雜度隨之增加,嚴重限制了模型在各種資源受限平臺設備中的應用[13]。因此,對模型進行壓縮優化,使模型的結構更小,參數量更少,運行速度更快,能夠在資源受限平臺中得以應用成為學術界和工業界研究的熱點問題之一。深度學習模型的壓縮方法可分為兩大類,一類是基于緊湊型的網絡結構,如 SqueezeNet[14]、MobileNet[15]、shuffleNet[16]等,這些緊湊型的網絡結構使用1×1的卷積層進行通道變換以減少參數數量及計算量,從而達到壓縮模型的效果。另一類是通過剪枝、量化、二值化神經網絡等方式對模型進行壓縮。Han等人[17]首先通過剪枝減少網絡的連接數量,然后通過共享權重和權重進行索引編碼來減小權重數量和存儲空間,最后用霍夫曼編碼的方式來編碼第二階段的權重和索引,這樣可以進一步壓縮空間。馬治楠等人[18]采用剪枝的方法對深度學習模型進行壓縮,使模型能夠應用于嵌入式平臺。二值化神經網絡常用的方法有BinaryConnect[19]、XnorNet[20]等。2018年,徐喆等人[21]提出了一種基于比例的網絡壓縮知識提取算法,泛化能力強,根據類間關系進行訓練,減少了訓練時間。黃聰等人[22]設計了一種權值的剪枝方法以及可分的卷積,有效降低了計算量。
在資源受限平臺中運行的模型應具備以下特點:第一,模型的結構更小,參數量更少,占用更少的內存空間;第二,模型運行速度更快,不占用平臺的大量計算資源且運行速度滿足實時性要求;第三,模型精度能滿足相應場景的要求。只有平衡好模型占用內存大小、模型運行速度和模型精度這三方面,才能將卷積神經網絡更好地應用于資源受限平臺。本文采用FireModlue結構對YOLOv3 模型進行壓縮,設計出Strong Tiny-YOLOv3模型。相比于 YOLOv3 模型,Strong Tiny-YOLOv3 模型的參數量、模型實際內存大小、檢測實時性都有了大幅度的優化。且與現有的YOLOv3 模型的壓縮模型TinyYOLOv3相比,Strong Tiny-YOLOv3在檢測精度及檢測速度方面都有提升。
為克服YOLOv1 模型[23]對小目標預測效果差的缺點以進一步提高模型的預測準確度,YOLOv3[24]在YOLOv1 和YOLOv2[25]的基礎上做了進一步的改進,在網絡中引入了基于多尺度預測的特征金字塔結構[26](FPN),如圖1所示,小的物體會在淺層的特征圖中被檢測出來,大的物體會在較深的特征圖中被檢測出來。首先,使用k-means聚類算法得到9個先驗框,每種尺度下各三個,每種尺度下的一個網格負責預測三個邊界框。然后,使用darknet-53網絡對圖像進行特征提取,當提取到最深層特征時,進行輸出,同時進行上采樣,與另一尺度下的特征進行融合。這樣,每層特征圖中都會包含淺層的低級特征(如物體的邊緣、顏色、初級位置信息等)和深層的高級特征(如物體的語義信息等),預測的準確度也會有所提高。另外,由于darknet-53 中加入了殘差塊,使網絡的結構可以設置得更深,因而具有更強的特征提取能力。

圖1 YOLOv3中的特征金字塔結構
YOLOv3網絡模型的損失函數如公式(1)所示:

損失函數可分為三部分,bbox_loss代表模型的邊界框損失,conf_loss代表模型的置信度損失,prob_loss則代表模型的預測類別損失。由于模型中三種類別的損失在損失函數中所占的比例不同,lcoord、lnobj為比例因子。公式(1)中,表示第i個網格的第j個先驗框是否負責預測目標邊界框的位置,若負責預測則其值為1,若不負責預測,則其值為0;表示第i個網格的第j個邊界框不預測目標位。由于YOLOv3 在三種不同尺度下進行預測,所以最終的損失函數為三種尺度下loss的和。
Tiny-YOLOv3是YOLOv3網絡的簡化版本,其卷積層的數量比YOLOv3 小得多,因此Tiny-YOLOv3 模型所需的內存及計算量也相對較小,可部署在嵌入式設備中。但與YOLOv3 模型相比,由于特征提取能力不足,Tiny-YOLOv3的檢測精度較低。
Tiny-YOLOv3網絡結構如圖2所示,網絡主要是由卷積層和池化層組成。卷積層一共有13 層,負責對圖像提取特征,最大池化層有6 層,對特征圖進行下采樣操作。Tiny-YOLOv3 模型在兩個尺度下對目標進行預測,通過卷積、池化得到13×13的特征圖后,再進行全連接操作輸出預測結果。同時,對13×13的特征圖進行上采樣,與26×26 的特征圖融合后,進行另一尺度下的預測。與YOLOv3 相同,Tiny-YOLOv3 模型中,每個單元格負責預測三個邊界框。Tiny-YOLOv3 模型的參數量約為9×106,是YOLOv3 模型參數量的14.3%,模型參數量的減少也會使計算量相應地降低。

圖2 Tiny-YOLOv3網絡結構圖
Tiny-YOLOv3網絡模型的深度較淺,因而對圖像特征提取能力不足,在檢測精度上相比于YOLOv3模型有很大的降低,且Tiny-YOLOv3 模型中存在卷積核數量為512 和1 024 的卷積層,這些卷積核所包含的參數在模型參數中占很大比例。因而,需提高Tiny-YOLOv3模型的特征提取能力,同時,盡可能地對模型進行進一步的壓縮。
Iandola 等人[14]提出的 SqueezeNet 將模型中 3×3 的卷積核采用1×1的卷積核來代替,這一操作可有效減小模型的參數量。同時,對于3×3 的卷積核,其參數量為3×3×M×N,M、N分別為輸入特征圖與輸出特征圖的通道數,通過減小M、N的數量可有效減小模型的參數量和計算量。
SqueezeNet是由若干FireModule結合卷積神經網絡中卷積層、降采樣層和全連接層組成,其中,FireModule是SqueezeNet網絡的主要結構。FireModule是由Squeeze部分和Expand 部分組成,其結構如圖3(a)所示,其中Squeeze 部分是由一組連續的1×1 的卷積組成,負責對模型進行壓縮,也被稱為瓶頸層,Expand部分是由一組連續的1×1卷積和一組連續的3×3卷積組成,負責對模型進行擴充。FireModule 的輸出結果為Expand 部分兩層卷積結果的合并。為詳細解釋FireModule的結構,以Tiny-YOLOv3 中第五個卷積層為例進行說明。圖像在Tiny-YOLOv3模型中經過四層卷積池化后,特征圖大小為26×26×128,第五層卷積層卷積核為3×3×256。若使用如圖3(b)所示的FireModule替換Tiny-YOLOv3 第五層卷積層,則輸入特征圖首先經過Squeeze層1×1×32的卷積核進行通道變換后輸出26×26×32的特征圖。該特征圖再分別與Expand 層的1×1×128 與3×3×128 的卷積核進行卷積,得到兩個26×26×128 的特征圖,將這兩個特征圖進行連接即可得到26×26×256的特征圖,與Tiny-YOLOv3 模型第五層卷積后的輸出結果相同。Fire-Module 中 Squeeze 部分1×1 卷積核的通道數記為s1,Expand 部分 1×1 和 3×3 的卷積核通道數分別記為e1和e3。在FireModule中,作者建議s1<e1+e3,SqueezeNet模型中,作者使用的策略是4×s1=e1=e3。

圖3 FireModule結構介紹圖
SequeezeNet 中使用FireModule 對模型進行壓縮,取得了良好的效果,且由于網絡結構變寬加深,模型的精度沒有受到影響。本文中,嘗試采用FireModule 對YOLOv3 模型進行壓縮,以減少模型的參數量及計算量,使模型能夠在嵌入式設備中達到實時檢測的效果,且盡可能減少模型壓縮對檢測精度造成的影響。在介紹本文提出的壓縮模型前,首先介紹模型參數的計算方法,以便更好地對模型參數做出比較,確定模型壓縮效果。卷積層參數量的計算公式如下:

其中,W為某卷積層卷積核的參數量,m為卷積層輸入特征通道數,n為卷積層輸出特征通道數,k為卷積核的大小,b為偏置項的數量,其值為1。對于FireModule,其參數計算方式如下:

Wfire為FireModule層的參數量,ks1為Squeeze層卷積核大小,其值為1,s1為Squeeze 層輸出通道數,ke1和ke3為Expand層的卷積核的大小,其值分別為1和3,e1、e3為Expand 層的兩個卷積層輸出通道的數量。若不考其他因素的影響,將Tiny-YOLOv3 中的卷積層全部使用FireModule層替換,且4×s1=e1=e3,則其參數如表1所示。

表1 Tiny-YOLOv3卷積層及對應FireModule參數量對比
由表1 可計算出Tiny-YOLOv3 卷積層的參數量約為8.65×106,卷積層對應FireModule層的參數量為1.27×106,參數量可減少約85%。由此可見,采用FireModule來代替卷積層后,其帶來的參數縮減效果非常明顯,即便是在卷積核尺寸為1 時,FireModule 也能明顯減少卷積核的參數量。究其原因,是因為FireModule瓶頸層的特征圖輸出通道僅為該卷積層特征圖輸出通道的1/8,且由于瓶頸層輸出通道數量減少,會使Expand 層的輸入特征圖通道數量減少,因而能減少整體參數量。
本文首先對FireModule進行優化,從而可以進一步減少參數量。SqueezeNet中FireModule的Squeeze層輸出通道數量為s1,Expand層輸出通道數量為e1+e3,且4×s1=e1=e3。若進一步增大s1與e1和e3之間的比例關系,則模型的參數量可得到進一步壓縮,與此同時,特征圖可能會損失較多的信息,所以,優化的關鍵點在于找到s1與e1和e3之間的最佳比例。本文在GTSDB 數據集上進行了三組實驗,s1與e1和e3之間的比例關系分別設為4、6、8。當比例關系取不到4、6、8 時,則取較為接近4、6、8的數,實驗結果如表2所示。由表2可知,當s1與e1和e3之間的比例關系取4 或6 時,模型在GTSDB數據集上的mAP差別不大,比例關系為8時,則模型mAP 有明顯降低。因此,在本實驗中,將Squeeze層輸出通道與Expand層輸通道之間的關系改為4×s1≤e1=e3≤6×s1,即減小 FireModule 瓶頸層的輸出通道數,也就是Expand層的輸入通道數,從而減小模型參數量。如對于表1 中的Conv7,使用改進的FireModule 來代替卷積層后,其參數量變為512×86+86+86×512+512+3×3×86×512+512=485 462,相比優化前的參數量722 048減小32.8%。使用改進后的FireModule 對YOLOv3 模型進行壓縮,壓縮后的YOLOv3 模型稱為Strong Tiny-YOLOv3,其網絡結構如圖4所示。

表2 GTSDB數據集上s1 與e1和e3 比例關系實驗
Strong Tiny-YOLOv3 通過引入 FireModule 來減小模型參數,實現對模型的壓縮,同時,由于FireModule的引入,模型的深度較Tiny-YOLOv3有所增加,模型的特征提取能力也更強。Strong Tiny-YOLOv3 模型的前半部分與Tiny-YOLOv3 模型結構形同,由卷積層和池化層交替組成。隨著層數的加深,特征圖的通道數越來越多,由其導致的參數規模也越來越大。將Tiny-YOLOv3模型中尺寸為3×3 通道數不小于256 的卷積層替換為FireModule,同時,為提高模型的特征提取能力,增加了多個FireModule層對26×26及13×13的特征圖做進一步特征提取。Strong Tiny-YOLOv3 模型深度為31 層,相比于Tiny-YOLOv3增加了12層,其各層具體信息如表3所示。Strong Tiny-YOLOv3 模型的參數量為1.1×106,比Tiny-YOLOv3模型減小87.3%。
在網絡訓練過程中,網絡的深度對模型訓練結果存在著深遠影響,深度網絡表征能力強。理論上,網絡深度同誤差成反比關系,即網絡越深誤差越小。原因是根據淺層模型作恒等映射可以構造深層模型的解。但是,網絡深度增加伴隨著反向傳播過程中運算不穩定性因素上升,易產生梯度爆炸或梯度擴散,導致實際結果與預期結果大相徑庭。雖然加入正則化可以緩解梯度爆炸和梯度擴散的問題,但是隨著深度的增加仍然會產生退化問題。

圖4 Strong Tiny-YOLOv3網絡結構圖
ResNet 網絡中首次利用跨越多層的short-cut 構建優秀模型解決了退化問題。傳統神經網絡采用堆疊式網絡架構進行的是仿射變換-非線性變換,但是傳統神經網絡中恒等映射并不容易擬合。為了解決該問題,通過加入short-cut構造恒等映射條件,由傳統的擬合恒等映射轉化為優化殘差,計算由傳統的乘法實現了加法的轉變,計算更加穩定,緩解了深度與退化的矛盾,實現了深度與精確度的雙飛躍。之后,YOLOv3對ResNet殘差塊進行了優化。為此,借鑒YOLOv3 中殘差塊的思想,本文在Strong Tiny-YOLOv3的Fire Module層之間引入short-cut,來增強網絡的特征提取能力。加入short-cut后,Strong Tiny-YOLOv3 模型的網絡結構如圖5 所示。對于FireModule層來說,前一個FireModule層的輸入與其輸出相結合作為其下一個FireModule 層的輸入。這樣,網絡中的信息流可以通過short-cut 進行跨層傳遞,在網絡的前向傳播過程中,short-cut可幫助網絡中的特征進行恒等映射,在反向傳播過程中,short-cut 可幫助傳到梯度,讓模型成功訓練。

表3 Strong Tiny-YOLOv3各層具體信息

圖5 加入short-cut的Strong Tiny-YOLOv3網絡
本文實驗數據集全部采用德國交通標志檢測數據集(German Traffic Sign Detection Benchmark,GTSDB)和中國交通標志檢測數據集(CSUST Chinese Traffic Sign Detection Benchmark,CCTSDB),兩種數據集的具體數量如表4所示。

表4 實驗數據詳情
GTSDB數據集共包含900張圖像,其中訓練集600張,測試集300張,圖像分辨率為1 360×800。該數據集包含的道路場景圖像背景復雜,包含大部分的光照變化情況及各種拍攝角度,且存在背景干擾遮擋及照片運動模糊等情況。GTSDB 數據集可分為三類:指示標志(mandatory)、警告標志(danger)、禁止標志(prohibitory)。如圖6 所示[16],指示標志一般為圓形,標志為白色,底色為藍色;警告標志為三角形,紅色外圈,底色為白色;禁止標志為圓形,紅色外圈,白色底色。每張圖像中,交通標志的大小為16×16到128×128。
CCTSDB數據集包含15 734張圖像,其中對13 829張圖像做了標簽。測試集共包含400張圖像,數據量較少。因此,本文實驗中從標簽數據中選取10 000張圖像作為訓練集,其余3 829 張圖像作為測試集。如圖7 所示[16],CCTSDB數據集同樣分為三大類:指示標志、警告標志、禁止標志。

圖6 GTSDB數據集中交通標志種類

圖7 CCTSDB數據集中交通標志種類
實驗中,采用PASCAL VOC標準對模型進行測評,即計算預測框與真實框的IoU等于0.5時的mAP。mAP的計算方法如下:假設N個樣本有M個正例,就會得到M個召回率的值R(1/M,2/M,…,M/M) ,對每個召回率取最大的準確率P,然后對這M個P值取平均值,最后得到AP 值即為mAP。由于實驗中分別使用FireModule及short-cut對模型進行改進,為比較不同方法對模型檢測效果的提升作用,Strong Tiny-YOLOv3模型的基本結構稱為Strong Tiny-YOLOv3-A,加入short-cut后的Strong Tiny-YOLOv3稱為Strong Tiny-YOLOv3-B。
為了更加真實地測試Strong Tiny-YOLOv3模型在資源受限平臺上的檢測效果,本實驗在PC機上進行。實驗在Intel?Core? i5-7200U CPU上進行訓練,其內存為8 GB。同時,采用Intel?Core? i5-7200U CPU和NVIDIA的 GeForce 940MX 進行測試,GeForce 940MX 實際上是一款移動獨立顯卡,其內存容量為2 GB,包含384 個核心流處理器,并支持CUDA的相關計算功能。在實驗過程中,Tiny-YOLOv3 模型的訓練次數為50 輪,Strong Tiny-YOLOv3模型的迭代次數為100輪。
表5 為 YOLOv3、Tiny-YOLOv3 及 Strong Tiny-YOLOv3-A及Strong Tiny-YOLOv3-B四種模型在GTSDB和CCTSDB 數據集上的實驗結果。由表5 可知,在GTSDB數據集上,YOLOv3模型的檢測mAP為91.2%,Tiny-YOLOv3 模型的檢測mAP 為67.44%,模型壓縮后檢測精度下降幅度較大;而Strong Tiny-YOLOv3-B模型的檢測mAP為75.53%,比Strong Tiny-YOLOv3-A模型提高了6.59 個百分點,表明模型加入short-cut 后,檢測mAP 有了加大幅度的提升。同時,與Tiny-YOLOv3 模型相比,Strong Tiny-YOLOv3-B 模型的檢測mAP 提高了12%。在CCTSB數據集上,YOLOv3模型的檢測mAP為93.2%,Tiny-YOLOv3模型和Strong Tiny-YOLOv3模型的檢測mAP下降相對較小,且StrongTiny-YOLOv3-B模型的檢測mAP比Tiny-YOLOv3模型提高了3.8%。在GTSDB 數據集上,Strong Tiny-YOLOv3-B 的檢測精度提升最為明顯。

表5 幾種模型在兩數據集上的mAP對比
由實驗結果可知,Strong Tiny-YOLOv3-A 模型由于FireModule 的引入,模型的深度較Tiny-YOLOv3 有所增加,模型的特征提取能力也更強,所以相較Tiny-YOLOv3,其模型壓縮后的檢測精度略有提升。Strong Tiny-YOLOv3-B 在 Fire Module 層之間 引入 short-cut,網絡的特征提取能力得到進一步增強。但是相較于YOLOv3,Strong Tiny-YOLOv3-B 在數據集 GTSDB 上mAP下降15.7%,在數據集CCTSDB上mAP下降7.6%。所以本文算法相較于YOLOv3,檢測精度沒有達到預期的效果,仍有很大的提升空間。
由 3.1 節分析可知,Strong Tiny-YOLOv3 模型的參數量為1.1×106。YOLOv3模型參數量約為62.8×106,相比減少98.3%。Tiny-YOLOv3 模型的參數量約為8.65×106,相比減少87.3%。模型參數量的減少也會使計算量相應的降低,從而有更高的檢測速度。
由于資源受限平臺的內存資源有限,勢必要求模型占據很小的內存空間,本文對比了Strong TinyYOLOv3模型與YOLO 系類模型的實際內存,如表6 所示。與YOLOv1、YOLOv2、YOLOv3模型大小相比,Tiny-YOLOv3和Strong Tiny-YOLOv3 模型要小得多。Strong Tiny-YOLOv3模型的內存大小為7.5 MB,約為YOLOv3模型的1/32。與Tiny-YOLOv3相比,Strong Tiny-YOLOv3模型占用的存儲空間減小26.5 MB,相比于Tiny-YOLOv3減小了77.9%。
BFlops(Billion Float Operations Per Second)是描述某次卷積運算需要多少個十億次浮點運算,是影響模型訓練及測試耗時的一個重要指標,可用來衡量深度學習模型的時間復雜度??赏ㄟ^計算模型每一層的BFlops,然后將它們全部相加得到整個模型的BFlops。單個卷積層的BFlops計算公式如下:

其中,2 表示一次乘法和一次加法的浮點數運算,ci表示卷積輸入通道數,co表示輸出通道數,k為卷積核的大小,wout表示卷積輸出特征圖的寬,hout表示卷積輸出特征圖的高。整個模型的BFlops 可通過如下公式計算得到:

其中n為模型卷積層總數。
表7列出了Strong Tiny-YOLOv3模型各個層的BFlops值,計算可知Strong Tiny-YOLOv3模型的BFlops為1.924。其中,9層FireModule包含卷積層的深度為18,占整個模型深度的58%,其BFlops 為0.41,僅占整個模型BFlops的21.3%。也就是說,Strong Tiny-YOLOv3 模型中的FireModule在增加網絡深度,提高模型特征提取能力的基礎上,還能有效減少模型的計算量,提高模型的檢測速度。由表8可知,Strong Tiny-YOLOv3模型的BFlops約為YOLOv3模型的1/27,且相比于Tiny-YOLOv3模型減少了65%,更適用于資源受限平臺。
Strong Tiny-YOLOv3 由于 FireModule 的引入,模型的深度較Tiny-YOLOv3 有所增加,模型的特征提取能力也更強。但是由4.2節與4.3節可知,優化后的Fire-Module對YOLOv3模型進行壓縮,減少了模型的參數量及計算量,相比YOLOv3 和Tiny-YOLOv3,有更高的檢測速度。本文在Intel?Core? i5-7200U CPU和GeForce 940MX 兩平臺上對視頻信息進行檢測,并計算對比YOLOv3模型、Tiny-YOLOv3模型和Strong Tiny-YOLOv3模型在兩平臺上的檢測速度,驗證本文的設想。由表9可看出,在Intel?Core? i5-7200U CPU和GeForce 940M兩資源受限型平臺上,Tiny-YOLOv3 模型和Strong Tiny-YOLOv3 模型的檢測速度明顯優于YOLOv3 模型。在Intel?Core? i5-7200U CPU平臺上,Strong Tiny-YOLOv3 的檢測速度是 YOLOv3 模型的 10.92 倍,相比于TinyYOLOv3 的檢測速度提高了17.2%。在GeForce 940MX 平臺上,Strong Tiny-YOLOv3 的檢測速度為33.78 幀/s,約為 YOLOv3 的 8.64 倍,比 Tiny-YOLOv3 模型的檢測速度提高了22.8%。實驗結果表明,Strong Tiny-YOLOv3 模型有較高的檢測速度,在資源受限平臺GeForce 940MX上的檢測速度能夠滿足實時檢測的需求。

表6 算法模型尺寸對比

表7 Strong Tiny-YOLOv3模型各層BFlops值

表8 不同算法BFlops對比

表9 算法實時性能對比 幀·s?1
本文提出了一種YOLOv3 模型的壓縮模型Strong Tiny-YOLOv3 模型。Strong Tiny-YOLOv3 模型中使用改進后的FireModule及short-cut對模型進行壓縮優化,使YOLOv3模型的參數量從62.8×106減少為1.1×106,模型實際內存大小從241.1 MB 減少為7.5 MB,且模型檢測的速度得到大幅度提升。在GTSDB 和CCTSDB 數據集上,Strong Tiny-YOLOv3模型的檢測速度、檢測精度都比YOLOv3 的壓縮模型Tiny-YOLOv3 要好。壓縮后的Strong Tiny-YOLOV3 模型不需要高性能GPU 也能實現實時檢測,能夠部署在車輛中對交通標志進行檢測。模型壓縮必然會導致其檢測精度的降低,與YOLOv3相比,檢測精度還有較大差距,下一步繼續對模型的壓縮方法進行研究,以盡可能減小模型壓縮后的精度損失。