湯科元,劉川莉,蔡樂才,成 奎,張宇杰,高 祥
(1.四川輕化工大學自動化與信息工程學院,四川 宜賓 644002;
2. 宜賓學院三江人工智能與機器人研究院,四川 宜賓 644000)
交通標志檢測是現(xiàn)代智能交通系統(tǒng)中不可或缺的一部分,也是無人駕駛和自動駕駛技術(shù)中的重要組成部分。近年來,隨著我國經(jīng)濟社會的不斷發(fā)展,全國機動車保有量也不斷上升,道路交通安全狀況和交通堵塞情況日趨嚴峻[1]。據(jù)不完全統(tǒng)計,交通事故當中絕大多數(shù)案例都是人為因素造成的[2-3],例如超速、酒后駕駛、疲勞駕駛等,因為車輛和道路因素造成的交通事故則不到事故總數(shù)量的10%。所以近年來輔助駕駛技術(shù)被越來越多地應用于實際生活當中[4-5],無人駕駛和自動駕駛技術(shù)也成為許多研究人員和汽車廠商的重要研究領(lǐng)域。而交通標志檢測在無人駕駛技術(shù)中扮演著至關(guān)重要的角色,通過計算機視覺技術(shù)對交通標志進行檢測和識別,并將結(jié)果反饋給駕駛員或者無人駕駛系統(tǒng),以對車輛的速度和方向進行手動或自動控制,從而最大程度地避免交通事故的發(fā)生。因此交通標志的檢測具有十分重要的社會價值和學術(shù)意義。
目前已有多種方法可以實現(xiàn)交通標志的檢測。由于交通標志形狀比較規(guī)則,顏色較為單一,所以早期有學者提出了通過形狀或顏色來檢測交通標志的方法[6]。而且還可以結(jié)合尺度不變特征變換和支持向量機等方法以提高檢測率[7]。但現(xiàn)實情況非常復雜,當交通標志與其背景顏色相近或者出現(xiàn)極端天氣的時候,就容易出現(xiàn)誤檢或者漏檢的情況。近年來隨著人工智能的興起,越來越多的學者將深度學習方法應用到交通標志檢測領(lǐng)域。Zhu 等[8]利用CNN 卷積神經(jīng)網(wǎng)絡(luò)來識別野外環(huán)境下的交通標志。Zhang 等[9]提出了一種針對小號交通標志和惡劣天氣下交通標志的檢測方法,獲得了較高的準確率,在中國交通標志數(shù)據(jù)集(CTSD)與德國交通標志檢測數(shù)據(jù)集(GTSDB)上有著較好的實時性和魯棒性。Tabernik 等[10]提出了一種基于R_CNN 網(wǎng)絡(luò)的交通標志檢測算法,錯誤率可降低到3% 以下。以上這些學者所做的研究都是基于深度學習的方法,雖然精度相比于傳統(tǒng)方法有著極大的提高,但是網(wǎng)絡(luò)較為復雜,對于嵌入式移動設(shè)備來說計算量較大,導致檢測速度慢,無法滿足實時性要求。但是這也從另一個方面證明了深度學習方法在檢測交通標志上的可行性。
針對嵌入式平臺運算能力不足導致的檢測速度慢和準確率低的問題,基于Yolov4-Tiny 模型提出一種改進的檢測算法Deep-Yolov4-tiny,根據(jù)數(shù)據(jù)集和交通標志圖像的特征,修改模型的輸入尺度,然后分別將兩個3 × 3 的卷積層添加到Y(jié)olov4-tiny 模型的第5 個 和 第9個卷積層后,與原來的兩個卷積層重疊,以獲得更多的特征信息[11]。網(wǎng)絡(luò)中添加多個1 × 1卷積層可以降低計算復雜度,提高檢測速度和實時性,使其更加適合于在嵌入式或者移動設(shè)備當中運行。最后,通過K-means 聚類算法優(yōu)化anchor box 的尺寸,改進Yolo 層的配置。采用中國交通標志檢測數(shù)據(jù)集(CCTSDB)[12]訓練和測試模型,并與改進前的Yolov4-tiny及Yolov3-tiny進行對比測試,驗證Deep-Yolov4-tiny算法在平均正確率、召回率和交并比等評價指標。
Yolov4-tiny 算法是在Yolov4 算法[13]的基礎(chǔ)上設(shè)計的,其網(wǎng)絡(luò)結(jié)構(gòu)更加精簡,網(wǎng)絡(luò)層數(shù)由162 層減少到了38 層,大幅提高了其目標檢測速度,為此付出的代價就是在檢測精度方面有所下降。即便如此,其精度和速度也能夠滿足實際應用的需求,使其可以部署到嵌入式系統(tǒng)或移動設(shè)備等運算能力不高的設(shè)備當中。在交通標志檢測、行人檢測等應用場景具有很高的應用價值。
Yolov4 算法采用CSPDarknet53 網(wǎng)絡(luò)作為其骨干網(wǎng)絡(luò),相應地,Yolov4-tiny 算法使用了CSPDarknet53-tiny網(wǎng)絡(luò)作為骨干網(wǎng)絡(luò),以精簡其網(wǎng)絡(luò)結(jié)構(gòu)。CSPDarknet53-tiny 網(wǎng) 絡(luò) 在CSPNet(Cross Stage Partial Network)中使用了CSPBlock 模塊,而不是殘差網(wǎng)絡(luò)中的ResBlock 模塊。CSPBlock 模塊將特征圖分為兩部分,并通過CSP 殘差網(wǎng)絡(luò)將這兩部分合并,使得梯度信息在兩個不同的路徑中傳播,以增加梯度信息的相關(guān)性[14]。
與ResBlock 模塊相比,CSPBlock 模塊可以增強卷積網(wǎng)絡(luò)的學習能力。雖然計算量增加了10% ~20%,但其準確性有了較大提高。 為了減少計算量,消除原CSPBlock 模塊中具有較高計算量的計算瓶頸,在計算量基本不變甚至減少的情況下,Yolov4-tiny 算法的準確性得到了進一步地提升。
為了進一步減少計算量,提高網(wǎng)絡(luò)的實時性,Yolov4-tiny 算法沒有使用Yolov4 中的Mish 函數(shù)作為激活函數(shù),而是使用了LeakyReLU 函數(shù)作為CSPDarknet53-tiny 網(wǎng)絡(luò)中的激活函數(shù)。LeakyReLU 函數(shù)如下式所示:
其中,ai∈(1, + ∞),為一常量。
在特征的提取與融合方面,Yolov4-tiny 與Yolov4 也有所不同,Yolov4 算法使用的是SPP(spatial pyramid pooling)和PANet(Path Aggregation Network)進行特征提取與融合。SPP 的目的是增加網(wǎng)絡(luò)的感受野,PANet 則縮短了底層尺寸大的特征到高層尺寸小的特征之間的距離,使得特征融合更加有效。Yolov4-tiny 算法使用了特征金字塔網(wǎng)絡(luò)[15]提取具有不同比例的特征圖,以提高目標檢測速度。同時,其使用兩個不同的比例特征圖(13 × 13和26 × 26)來預測檢測結(jié)果。Yolov4-tiny網(wǎng)絡(luò) 結(jié)構(gòu)如圖1所示。
圖1 Yolov4-tiny網(wǎng)絡(luò)結(jié)構(gòu)
在進行檢測時,Yolov4-tiny 算法首先會調(diào)整輸入圖像的大小,使所有輸入圖像具有相同的尺寸。其次,輸入圖像將被劃分成大小為S × S 的網(wǎng)格,每個網(wǎng)格將使用B 個邊界框來檢測其中所包含的對象,且所有生成的邊界框會覆蓋整個圖像。因此,對于輸入的一張圖像,將生成S × S × B 個邊界框,如果圖像中某個對象的中心落在某個網(wǎng)格中,則該網(wǎng)格中的邊界框就可以檢測該對象。
Yolov4-tiny 的損失函數(shù)由3 部分構(gòu)成,分別為置信度損失函數(shù)loss1、分類損失函數(shù)loss2和邊界框回歸損失函數(shù)loss3,則損失函數(shù)可用式(2)表示:似性。
其中:K 為特征圖的大小,M 為錨框的數(shù)量,λ 為超參數(shù),c 為類別,p(c) 代表類別的置信度,IOU 為真實框與預測框的交并比,ρ 表示歐式距離,C 表示真實框與預測框的最小外界矩形的對角線距離,v 用來度量長寬比的相
由于車載電腦的計算能力普遍不高,且車輛速度較快,路邊的交通標志牌的面積在整個視野中所占的比例較小,所以攝像頭采集到的畫面有可能很模糊,再加上交通標志牌也有不同程度的歪斜和污損,因此對于交通標志的檢測,研究選用結(jié)構(gòu)簡單、運算復雜度相對較低的Yolov4-tiny 模型作為基礎(chǔ)模型來滿足準確性和實時性要求。在Yolov4-tiny的基礎(chǔ)上,修改了模型的輸入圖片的尺寸大小,由原來的416 × 416 改為480 × 480,然后將兩個3 × 3 的卷積層分別添加到Y(jié)olov4-tiny 模型的第5個和第9個卷積層后,與原來的卷積層重疊,增加了模型的深度,可以輸出不同大小和通道的特征圖,再通過Yolo 中的route 層在網(wǎng)絡(luò)的不同位置來連接淺層特征圖和深層特征圖。這是因為淺層特征包含更多的細節(jié)信息,而深層特征包含更多的邊緣信息,通過鏈接就可以使整個模型獲得更加豐富的特征信息,提高其檢測的準確性。除此之外,還將多個1×1 的卷積層添加到模型中,以降低模型的計算量。
經(jīng)初步測試發(fā)現(xiàn)Yolov4-tiny 原始模型對于CCTSDB 數(shù)據(jù)集的IOU 值并不理想,這是因為Yolov4-tiny 模型中的初始anchor box 的值是由coco 數(shù)據(jù)集得來的,覆蓋了從小到大不同大小的目標,而CCTSDB 數(shù)據(jù)集中的目標大多都是小目標。針對這一問題,研究采用K-means 聚類算法對Yolov4-tiny中的anchor box 尺寸進行聚類優(yōu)化,以使其與CCTSDB數(shù)據(jù)集更加匹配。然后再對第二個Yolo 層進行改進,使其充分利用經(jīng)過K-means聚類后的anchor值,便可以更加全面地覆蓋數(shù)據(jù)集中實際目標的大小,從而進一步提升Deep-Yolov4-ting 模型的檢測準確率。改進后的網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示。
圖2 改進后的Yolov4-tiny網(wǎng)絡(luò)結(jié)構(gòu)
中國的交通標志主要分為主標志和輔助標志兩大類,輔助標志一般設(shè)在主標志下,起輔助說明的作用。其中主標志可以分為6 類,分別是警告標志、禁令標志、指示標志、指路標志、旅游區(qū)標志和道路施工安全標志。在主標志中又以警告標志、禁令標志和指示標志最為常見。每一類交通標志都有著統(tǒng)一的設(shè)計語言,警告標志為黃底、黑邊、黑圖案,形狀為頂角朝上的等邊三角形。禁令標志除個別特殊情況外,顏色為白底、紅圈、紅杠,黑圖案,圖案壓杠,形狀為圓形、八角形、頂角朝下的等邊三角形。指示標志為藍底、白圖案,形狀分為圓形、長方形和正方形。3類常見的交通標志如圖3所示。
圖3 常見的3類交通標志
研究所用的數(shù)據(jù)集選自中國交通標志檢測數(shù)據(jù)集(CCTSDB)[12],此數(shù)據(jù)集由長沙理工大學綜合交通運輸大數(shù)據(jù)智能處理湖南省重點實驗室張建明老師團隊制作,一共包含圖像15 724 張,研究選取9000 張涵蓋了不同類型、大小、角度、光照條件和破損程度的交通標志圖像作為數(shù)據(jù)集(圖4),涵蓋了真實情況下的大多數(shù)路況,可以客觀地反映現(xiàn)實條件下交通標志的情況,該數(shù)據(jù)集也分為指示標志、禁止標志、警告標志3大類。
圖4 部分數(shù)據(jù)集圖片
為減少代碼的重寫量,使用批處理腳本對數(shù)據(jù)集圖片的命名格式和GroundTruth 進行了修改,以符合DarkNet框架對數(shù)據(jù)集的格式要求。
數(shù)據(jù)集的分配情況見表1。
表1 數(shù)據(jù)集分配情況
實驗平臺硬件配置見表2。
表2 實驗平臺硬件配置
研究所用平臺軟件為Ubuntu18.04 TLS,訓練所用的深度學習框架為DarkNet。訓練過程中對網(wǎng)絡(luò)設(shè)定的超參數(shù)見表3。
表3 部分超參數(shù)設(shè)置
設(shè)定好訓練參數(shù)后,從零開始訓練所提出的Deep-Yolov4-tiny 模型。為了增大訓練樣本,提高模型的魯棒性,在訓練的過程中通過將圖片隨機旋轉(zhuǎn)角度、隨機調(diào)整飽和度、曝光度、色調(diào)等方法,增加更多的樣本數(shù)。模型訓練的loss 曲線如圖5 所示。從圖5 可以看出,在訓練后期,模型的loss 值基本穩(wěn)定在0.1 左右,誤差較小。使用同樣的數(shù)據(jù)集,設(shè)定同樣的訓練參數(shù),在同樣的平臺上對改進前的Yolov4-tiny和Yolov3-tiny進行訓練,然后與Deep-Yolov4-tiny算法進行對比。
圖5 模型損失曲線
使用在相同條件下訓練好的Yolov3-tiny 和改進前的Yolov4-tiny 與Deep-Yolov4-tiny 進行對比測試。先從測試樣本中選取5 張可以代表不同環(huán)境下的圖像,檢測難度依次增加,將其記為1 號圖片、2 號圖片、3 號圖片、4號圖片與5號圖片,分別用上述3種算法進行測試。
3.3.1 單個標志目標清晰
首先用3 種算法對最清晰明了的1 號圖片進行測試,結(jié)果如圖6所示。
圖6 不同算法對1號圖片檢測結(jié)果
從圖6 可看出,標志在圖片中目標較大,且較為清晰的情況下,3 種算法都能夠準確快速地檢測出該交通標志為禁令標志,圖6(b)、6(c)、6(d)3圖檢測結(jié)果置信度均為99%。
3.3.2 標志較小且模糊
當標志較小且較模糊的時候,算法對其識別難度將會增大。為了測試識別能力,采用3 種算法對2 號圖片進行了測試,結(jié)果如圖7所示。
圖7 不同處理后2號圖片檢測結(jié)果
從圖7可以看出,Yolov3-tiny沒有識別出任何目標,Yolov4-tiny和本文算法Deep-Yolov4-tiny則能夠成功地檢測出圖中交通標志為指示標志,但是Yolov4-tiny識別結(jié)果的置信度為47%,而Deep-Yolov4-tiny 算法識別結(jié)果的置信度為99%,可見Deep-Yolov4-tiny 算法的識別準確率相比原算法有一定提升。
3.3.3 多個標志且較小
對于有多個較小的交通標志信號,特別是存在干擾的條件下,測試3 種算法能否準確檢測出目標結(jié)果如圖8所示。
圖8 不同算法對3號圖片檢測結(jié)果
從圖8 可看出,3 號圖片中有多個較小的交通標志,其中有一個是一塊交通標志牌的背面,反光較為嚴重,為一干擾目標。Yolov3-tiny 正確地檢測出了其中一個禁令標志,置信度為94%。Yolov4-tiny 檢測出了兩個禁令標志,其中一個為正確檢測,置信度為92%,另一個錯誤地將干擾目標檢測為禁令標志。Deep-Yolov4-tiny算法則正確地檢測出了兩個禁令標志,置信度分別為51%和36%。
3.3.4 多個標志且較模糊
從圖9 可看出,4 號圖片中出現(xiàn)了兩個交通標志,均為指示標志。Yolov3-tiny 和Yolov4-tiny 都只正確地檢測出了其中一個較大且較為清晰的目標,置信度分別為98% 和96%,而Deep-Yolov4-tiny 算法則成功地檢測出了兩個目標,置信度為88%和94%。
圖9 不同算法對4號圖片檢測結(jié)果
3.3.5 標志較小且較模糊
從圖10 中可以看出,在光線較暗、目標很小且存在多個目標的極端條件下(5 號圖片),Yolov3-tiny 和Yolov4-tiny 都無法檢測出目標,而Deep-Yolov4-tiny 算法則成功地檢測出了其中一個目標為禁令標志,置信度為76%。可見Deep-Yolov4-tiny算法在面對相對極端的環(huán)境時,仍然能夠檢測出目標,雖然沒有做到全部正確檢出,但是相較于其他兩種算法,有著較好的魯棒性。
圖10 不同算法對5號圖片檢測結(jié)果
由以上測試結(jié)果可以看出,Deep-Yolov4-tiny 算法在檢測能力和檢測的準確度方面都優(yōu)于現(xiàn)有的Yolov3-tiny 和Yolov4-tiny,證明Deep-Yolov4-tiny 在原算法上所做的改進是有效的。
為了更加直觀地驗證Deep-Yolov4-tiny算法的有效性,采 用mAP(Mean Average Precision)、召 回 率R(Recall)、IOU 和檢測速度4 個評價指標來驗證Deep-Yolov4-tiny 算法的效果。其中mAP 是指各個類別的AP平均值,可由式(6)表示:
其中:AP 則是指平均精確度,其值為P-R 曲線下的面積。精確度P可由式(7)表示:的樣本,F(xiàn)P(false positive)表示被預測為正而實際為負的樣本,F(xiàn)N(False negative)表示被預測為負而實際為正的樣本[16]。召回率R 表示的是正確預測的正樣本數(shù)占真實正樣本總數(shù)的比值。
檢測速度也是評價目標檢測模型的重要指標之一,它指的是模型每秒能夠處理的幀數(shù),用來評價模型的實時性,單位為FPS。在同等條件下,檢測速度越快,證明模型性能越好,越有利于部署在嵌入式系統(tǒng)和移動設(shè)備當中。
將訓練好的模型設(shè)置為測試模式,以上述4 個評價指標對訓練好的3 種算法在研究所用的數(shù)據(jù)集上進行測試,得到測試結(jié)果見表4。
表4 測試結(jié)果對比
其中:TP(true positive)表示預測結(jié)果為正而實際為正
從表4 可知,Deep-Yolov4-tiny 算法在mAP、R 和IOU 等方面都領(lǐng)先于現(xiàn)有算法。得益于Yolov4-tiny 網(wǎng)絡(luò)結(jié)構(gòu)的精簡,在相同測試條件下Yolov4-tiny算法的檢測速度與Yolov4 相比提升8 倍,在1080Ti 顯卡上,其檢測速度可達371FPS[17],而本文算法Deep-Yolov4-tiny在檢測速度上與Yolov4-tiny 不相上下。因此從測試結(jié)果來看,Deep-Yolov4-tiny 算法能夠滿足部署在嵌入式設(shè)備上的使用要求。
根據(jù)交通標志的特點和在行車過程中檢測交通標志的難點,在Yolov4-tiny算法的基礎(chǔ)上有針對性地進行改進,提出了一種改進的交通標志檢測算法Deep-Yolov4-tiny,實現(xiàn)了對交通標志快速、準確地檢測。改進后的算法在原算法的基礎(chǔ)上增大了輸入尺度,修改了網(wǎng)絡(luò)結(jié)構(gòu)和參數(shù),利用K-means聚類算法優(yōu)化了anchor box尺寸。實驗采用公開的CCTSDB數(shù)據(jù)集對改進后的算法進行訓練和測試,并使用相同的數(shù)據(jù)集,在相同的實驗平臺上對改進前的Yolov4-tiny、Yolov3-tiny 等算法進行了訓練和測試。結(jié)果表明,Deep-Yolov4-tiny 算法相較于Yolov4-tiny 算法,在檢測準確性上有較大提升,實時性也能夠滿足要求,更加有利于應用在嵌入式設(shè)備和移動設(shè)備等運算能力不強的設(shè)備當中,這對于提高行車安全和推動無人駕駛技術(shù)的發(fā)展有著一定的現(xiàn)實意義。