張 元,孟建軍,2,3,呂德芳,祁文哲,胥如迅,2,3,,陳曉強(qiáng),2,3,
(1.蘭州交通大學(xué)機(jī)電技術(shù)研究所,甘肅蘭州 730070;2.甘肅省物流與運(yùn)輸裝備行業(yè)技術(shù)中心,甘肅蘭州 730070;3.甘肅省物流及運(yùn)輸裝備信息化工程技術(shù)研究中心,甘肅蘭州 730070;4.蘭州交通大學(xué)機(jī)電工程學(xué)院,甘肅蘭州 730070)
鋼軌是鐵路軌道的主要組成部件,鋼軌扣件作為具有剛性扣壓件的鋼軌與軌枕的緊固裝置零件,是保障鐵路運(yùn)營安全的重要組成部分[1]。研究表明,鋼軌扣件通常因?yàn)榧庸すに嚥贿_(dá)標(biāo)[2]或是長(zhǎng)時(shí)間受惡劣自然環(huán)境甚至是惡意的人為因素的影響會(huì)出現(xiàn)松動(dòng)或損毀的狀況[3]。
鋼軌扣件檢測(cè)以人工檢修為主,其檢測(cè)結(jié)果嚴(yán)重依賴巡檢工人的技術(shù)熟練程度和環(huán)境因素,誤檢率較髙。隨著機(jī)器視覺技術(shù)的廣泛應(yīng)用,出現(xiàn)大量目標(biāo)檢測(cè)模型并被使用于軌道狀態(tài)檢測(cè)工作。J.Chen等[4]提出了基于YOLO的一個(gè)級(jí)聯(lián)三階段的缺陷扣件檢測(cè)網(wǎng)絡(luò),實(shí)現(xiàn)了較高的檢測(cè)率;Y.Li等[5]將深度可分離卷積和特征金字塔結(jié)合到Y(jié)OLO V3網(wǎng)絡(luò)中,以提高缺陷檢測(cè)的精度。YOLO是一種典型的單階段模型,YOLO V5模型大小僅為27 MB,檢測(cè)速度快,但基于COCO數(shù)據(jù)集[6]的 mAP (mean average precision,平均精度的均值)性能指標(biāo)僅約36%;若使用YOLO V4,盡管mAP 性能指標(biāo)接近43%,但是檢測(cè)速度有所降低,并且模型體積高達(dá)245 MB。因此,為保證較高的檢測(cè)精度和檢測(cè)速度,提出一種改進(jìn)YOLO V5模型,設(shè)計(jì)基于輕量化模型的鋼軌扣件缺陷檢測(cè)系統(tǒng),通過攝像頭拍攝和模型計(jì)算,最后將檢測(cè)信息反饋到顯示屏,并對(duì)比搭載未改進(jìn)的原生YOLO V5模型的系統(tǒng)檢測(cè)結(jié)果,驗(yàn)證本文方法的有效性。
圖1為系統(tǒng)的總體設(shè)計(jì)結(jié)構(gòu)及硬件結(jié)構(gòu),系統(tǒng)硬件部分由嵌入式設(shè)備Jetson TX2(包括充當(dāng)視覺傳感模塊的板載CSI攝像頭)、內(nèi)存卡、鍵盤、鼠標(biāo)和便攜式顯示屏組成。圖2為Jetson TX2的結(jié)構(gòu)簡(jiǎn)圖,其中的Tegra X2為整個(gè)嵌入式設(shè)備的計(jì)算處理模塊,為檢測(cè)和訓(xùn)練過程提供圖像處理的算力;Jetson TX2自身搭載的CSI攝像頭對(duì)攝像頭視場(chǎng)范圍內(nèi)的鋼軌進(jìn)行掃描,并拍攝鋼軌扣件;便攜式顯示屏通過VGA電纜線連接到Jetson TX2上,用于檢測(cè)信息的顯示;內(nèi)存卡中存放著系統(tǒng)的軟件部分,將內(nèi)存卡插入SD卡槽并開啟Jetson TX2,用鍵盤和鼠標(biāo)對(duì)系統(tǒng)進(jìn)行交互操控。
圖1 系統(tǒng)總體設(shè)計(jì)及硬件結(jié)構(gòu)
圖2 Jetson TX2結(jié)構(gòu)簡(jiǎn)圖
圖3為系統(tǒng)軟件結(jié)構(gòu)示意圖。Jetson TX2開機(jī)后進(jìn)入內(nèi)存卡中存放的Ubuntu 18.04操作系統(tǒng),在輕量化模型主目錄下,攝像頭調(diào)用程序操控CSI攝像頭對(duì)鋼軌扣件進(jìn)行圖像自動(dòng)采集;訓(xùn)練程序用于檢測(cè)工作開始前調(diào)用輕量化檢測(cè)模型對(duì)扣件圖像數(shù)據(jù)集進(jìn)行訓(xùn)練并生成一個(gè)權(quán)重文件;檢測(cè)程序用于調(diào)用輕量化檢測(cè)模型并使用訓(xùn)練得到的權(quán)重文件對(duì)CSI攝像頭實(shí)時(shí)拍攝的扣件圖片進(jìn)行檢測(cè)。
圖3 系統(tǒng)軟件結(jié)構(gòu)
圖4為系統(tǒng)進(jìn)行扣件缺陷檢測(cè)工作的流程,同時(shí)運(yùn)行2個(gè)進(jìn)程,分別實(shí)現(xiàn)對(duì)扣件進(jìn)行自動(dòng)拍攝和自動(dòng)檢測(cè),提升效率。進(jìn)程都是循環(huán)自動(dòng)執(zhí)行,當(dāng)檢測(cè)工作結(jié)束時(shí)只需關(guān)閉進(jìn)程即可。
圖4 系統(tǒng)檢測(cè)鋼軌扣件缺陷的流程
圖5為改進(jìn)后的輕量化YOLO V5模型。在用于訓(xùn)練數(shù)據(jù)集時(shí),將鋼軌扣件圖片壓縮成特征圖輸入,經(jīng)過主干網(wǎng)絡(luò)backbone的卷積,扣件被分成S×S個(gè)網(wǎng)格,每個(gè)網(wǎng)格預(yù)測(cè)N個(gè)邊界框和每個(gè)邊界框的置信度和類別概率;而用于檢測(cè)時(shí),將整張圖像輸入模型,經(jīng)過backbone的卷積后形成多維特征圖,在Neck部分的Concat層進(jìn)行特征圖融合后,再經(jīng)過UnSample層上采樣提高圖像分辨率[7],最后經(jīng)過Detector部分的Conv2d卷積后輸出所有扣件位置、類別和精度。改進(jìn)點(diǎn)在于:將原生YOLO V5的主干網(wǎng)絡(luò)更換為MobileNet V3,再向MobileNet V3的bneck層中引入CA協(xié)同注意力機(jī)制[7](coordinate attention)并修改激活函數(shù)為Mish,形成CAMish-MobileNet卷積網(wǎng)絡(luò)(如圖5所示),并以此網(wǎng)絡(luò)構(gòu)成輕量化模型。
圖5 輕量化檢測(cè)模型及輕量化網(wǎng)絡(luò)結(jié)構(gòu)
MobileNet系列卷積神經(jīng)網(wǎng)絡(luò)[8]相較于Large版本,MobileNet V3-Small的基本單元bneck數(shù)量更少,在整體網(wǎng)絡(luò)的參數(shù)量比MobileNet V2減少約20%,同時(shí)精度提高6.6%。MobileNet V3以深度可分離卷積為基本單元構(gòu)建網(wǎng)絡(luò),深度可分離卷積由深度卷積和逐點(diǎn)卷積組成。深度卷積時(shí),特征圖的每個(gè)通道由一個(gè)卷積核進(jìn)行卷積,卷積核數(shù)量等于通道數(shù),其表達(dá)式如式(1)所示,F為輸入特征圖,C為寬W和高H的卷積核,特征圖在第a通道上的(x,y)坐標(biāo)經(jīng)過寬和高2個(gè)方向的卷積核后得到該通道上的卷積核權(quán)重元素坐標(biāo)(i,j)并輸出為特征圖G。
(1)
逐點(diǎn)卷積首先將卷積核尺寸設(shè)置為 1×1并使用深度卷積來提取每個(gè)通道的特征,再使用逐點(diǎn)的形式對(duì)通道的特征進(jìn)行關(guān)聯(lián)。深度卷積與逐點(diǎn)卷積累加的深度可分離卷積D的計(jì)算量如式(2)所示:
D=DC·DC·M·DF·DF+M·N·DF·DF
(2)
式中:DF、N分別為輸入特征圖F的邊長(zhǎng)和通道數(shù);DC為深度卷積核的邊長(zhǎng);M為逐點(diǎn)卷積的通道數(shù)。
相較于普通卷積,深度可分離卷積減少的計(jì)算量如式(3)所示:
(3)
當(dāng)采用3×3的卷積核即DC=3時(shí),深度可分離卷積的計(jì)算量約為普通卷積的1/9,達(dá)到輕量化的目標(biāo)。
YOLO V5原生的激活函數(shù)是ReLU 6,若使用這種激活函數(shù)可能會(huì)出現(xiàn)梯度消失或梯度爆炸的問題。將激活函數(shù)修改為Mish,可解決包括MobileNet V3自帶的Hard-Swish在內(nèi)的大部分激活函數(shù)都無法解決的梯度消失或梯度爆炸的問題。計(jì)算公式如式(4)所示,x∈R時(shí),f(x)無邊界,避免了取值封頂而導(dǎo)致的飽和。這樣平滑的Mish激活函數(shù)允許信息更好地深入,可減少卷積網(wǎng)絡(luò)不穩(wěn)定帶來的不必要的計(jì)算量,在性能較低的嵌入式設(shè)備上運(yùn)行更流暢。在原本參數(shù)量就較少的MobileNet V3卷積網(wǎng)絡(luò)中使用Mish激活函數(shù),最終檢測(cè)精度比使用Hard-Swish和ReLU分別提高了0.494%和1.671%[9],達(dá)成了“輕量化但不損失精度”的目標(biāo)。
f(x)=x·tanh[ln(1+ex)]
(4)
包括MobileNet V3在內(nèi)的眾多卷積網(wǎng)絡(luò)都采用了SE注意力機(jī)制,SE注意力機(jī)制僅考慮通道間的信息而忽略位置信息,致使全局信息全部壓縮到通道中,當(dāng)圖片中出現(xiàn)多個(gè)扣件樣本時(shí)會(huì)出現(xiàn)預(yù)測(cè)框位置不準(zhǔn)確的情況。
為避免上述情況,引入一種高效注意力機(jī)制CA[7],它對(duì)于尺寸為C×H×W的特征圖輸入按照坐標(biāo)為(i,j)的元素的水平W方向和垂直H方向進(jìn)行池化,分別生成尺寸為C×H×1和C×1×W的特征圖xC(h,i)和xC(j,w),如式(5)所示:
(5)
通過式(5)信息嵌入的變換后,接下來將C×H×1和C×1×W的特征圖zh和zw進(jìn)行拼接,之后使用1×1的卷積模塊F1×1對(duì)其進(jìn)行變換,將其維度降低為原來的C/r,經(jīng)σ(即Sigmoid函數(shù))激活得到特征圖f,如式(6)所示:
f=σ(F1×1([zh,zw]))
(6)
如式(7),此時(shí)利用另外2個(gè)代表空間方向的1×1卷積變換Fh和Fw分別將fh和fw經(jīng)σ激活得到2個(gè)方向的注意力權(quán)重gh和gw,輸入得到CA協(xié)同注意力機(jī)制的最終輸出yc如式(8)所示:
(7)
(8)
CA注意力機(jī)制同時(shí)考慮2個(gè)空間位置(i,j)方向的信息xc和yc,幫助模型更好地定位和識(shí)別目標(biāo),維度的降低帶來更小的計(jì)算開銷,使檢測(cè)模型輕量化。
如圖6所示,按照?qǐng)D1的硬件結(jié)構(gòu)方案搭建鋼軌扣件缺陷檢測(cè)系統(tǒng)的硬件部分,圖6中細(xì)節(jié)之處在圖7中展示,其中Jetson的具體型號(hào)配置為NVIDIA Jetson TX2 8 GB搭載四核ARM Cortex-A57 MPCore處理器、配有256核心NVIDIA Pascal架構(gòu)及8 GB 128位LPDDR4內(nèi)存,內(nèi)存卡型號(hào)配置為SanDisk Extreme PRO 32 GB。按照?qǐng)D3的軟件結(jié)構(gòu)方案構(gòu)造鋼軌扣件缺陷檢測(cè)系統(tǒng)的軟件部分,將訓(xùn)練程序train_model.py、調(diào)用攝像頭程序camera.py、檢測(cè)程序detect_defects.py置于輕量化YOLO V5檢測(cè)模型的主目錄下,如圖8所示。最后將系統(tǒng)安置在圖9的軌道巡檢小車上,在鐵路上駕駛時(shí)實(shí)現(xiàn)鋼軌扣件的自動(dòng)拍攝與缺陷自動(dòng)檢測(cè)。
圖6 系統(tǒng)硬件部分實(shí)物圖
圖7 Jetson TX2上的組件細(xì)節(jié)
數(shù)據(jù)集有1 376張不同工況的鋼軌扣件圖片,包括扣件正常無缺陷(標(biāo)注為normal)360張、扣件螺母丟失(標(biāo)注為loss_nut)322張、扣件彈條缺失(標(biāo)注為loss_sp)374張、扣件彈條斷裂(標(biāo)注為cracked_sp)320張,圖像分辨率從128 pixel×98 pixel至750 pixel×1 000 pixel。整個(gè)數(shù)據(jù)集的1 376張鋼軌扣件圖片共有2 032個(gè)標(biāo)注框,各工況的標(biāo)注數(shù)量如表1所示。
圖9 軌道巡檢小車
表1 不同工況扣件的標(biāo)注數(shù)量 個(gè)
在訓(xùn)練開始前,為了盡可能與未改進(jìn)的YOLO V5清晰對(duì)比,超參數(shù)值設(shè)定使用與YOLO V5基本相同的配置[10]:模型初始學(xué)習(xí)率為0.005,訓(xùn)練迭代100輪,Batch Size(批歸一化值)為8。
使用目標(biāo)檢測(cè)領(lǐng)域中常用的mAP@.5和mAP@.5:.95[6]作為模型訓(xùn)練的精度指標(biāo)。
(9)
式中:n為類別數(shù)量;APk為第k類的平均精度;而mAP即所有k類平均精度的平均值。
實(shí)驗(yàn)中需預(yù)先設(shè)定預(yù)測(cè)框與真實(shí)框交并比IoU(intersection over union)閾值,mAP@.5是指IoU閾值取0.5時(shí)的mAP值,mAP@.5:.95是指當(dāng)IoU閾值以0.05為步長(zhǎng),從0.5取至0.95時(shí)的mAP值的平均數(shù)。
運(yùn)行訓(xùn)練程序train_model.py,使用設(shè)定好的超參數(shù)開始對(duì)鋼軌扣件數(shù)據(jù)集進(jìn)行訓(xùn)練。如圖10所示,訓(xùn)練過程中,mAP@.5和mAP@.5:.95隨著迭代次數(shù)的增加而增加。
(a)mAP@.5與迭代次數(shù)的關(guān)系
(b)mAP@.5:.95與迭代次數(shù)的關(guān)系
同理,使用原生YOLO V5訓(xùn)練數(shù)據(jù)集。將改進(jìn)前后的模型的訓(xùn)練結(jié)果進(jìn)行對(duì)比,mAP性能指標(biāo)、模型大小和顯存占用的情況如表2所示。
表2 模型改進(jìn)前后對(duì)鋼軌扣件數(shù)據(jù)集的訓(xùn)練性能比較
與原生YOLO V5模型對(duì)比可知,經(jīng)過改進(jìn)的輕量化YOLO V5訓(xùn)練精度mAP指標(biāo)更高,模型體積更小且占用更少的顯存,滿足輕量化需求。
巡檢工人駕駛軌道巡檢小車在鐵路上行駛,同時(shí)操作部署在巡檢小車上的鋼軌扣件缺陷檢測(cè)系統(tǒng)。如圖11所示,打開終端,運(yùn)行攝像頭調(diào)用程序開啟圖像采集進(jìn)程,攝像頭對(duì)準(zhǔn)鋼軌扣件,每隔10 s拍攝1張新圖片,本次測(cè)試拍攝了69張鋼軌扣件圖片,其中包含100個(gè)扣件樣本,圖片存放在fastener_pic目錄下。
圖11 系統(tǒng)拍攝鋼軌扣件
將3.2節(jié)中經(jīng)過輕量化模型訓(xùn)練數(shù)據(jù)集得到的權(quán)重yolov5-lightweight.pt如圖8中置于輕量化檢測(cè)模型的主目錄下。同時(shí)打開另一個(gè)終端,運(yùn)行檢測(cè)程序,對(duì)fastener_pic目錄下拍攝到的鋼軌扣件圖片進(jìn)行檢測(cè),檢測(cè)運(yùn)行過程如圖12所示。
圖12 系統(tǒng)進(jìn)行扣件缺陷檢測(cè)
100個(gè)樣本的扣件缺陷檢測(cè)結(jié)果如表3所示。
表3 系統(tǒng)檢測(cè)扣件缺陷結(jié)果 個(gè)
經(jīng)系統(tǒng)檢測(cè)輸出后的部分扣件缺陷識(shí)別結(jié)果實(shí)物如圖13所示。
(a)正確檢測(cè)為“扣件正常”
(b)錯(cuò)誤檢測(cè)為“彈條斷裂”
(c)正確檢測(cè)為“彈條丟失”
(d)檢測(cè)為“彈條丟失”但精度較低
(e)正確檢測(cè)為“螺母丟失”
(f)錯(cuò)誤檢測(cè)為“扣件正?!?/p>
檢測(cè)完成后,會(huì)在終端顯示平均每張扣件圖片的檢測(cè)時(shí)間和FPS(frames per second,幀速率)。如表4所示,為使用改進(jìn)前后YOLO V5得到的權(quán)重進(jìn)行扣件缺陷檢測(cè)的速度和FPS對(duì)比。結(jié)合上述檢測(cè)結(jié)果,證明搭載輕量化模型的本系統(tǒng)具有實(shí)現(xiàn)檢測(cè)速度更快、檢測(cè)準(zhǔn)確度更高的輕量化表現(xiàn)。
表4 改進(jìn)前后的模型檢測(cè)速度和FPS對(duì)比
經(jīng)過3.3節(jié)的測(cè)試,系統(tǒng)最終對(duì)于100個(gè)鋼軌扣件樣本的缺陷檢測(cè)得到87%的準(zhǔn)確率。進(jìn)一步研究系統(tǒng)參數(shù)發(fā)現(xiàn),在模型訓(xùn)練時(shí),將超參數(shù)中的初始學(xué)習(xí)率進(jìn)行修改,會(huì)影響最終系統(tǒng)檢測(cè)的準(zhǔn)確度。如圖14所示,同樣拍攝100個(gè)鋼軌扣件樣本,使用初始學(xué)習(xí)率設(shè)置為0.01時(shí)訓(xùn)練模型得到的權(quán)重文件來運(yùn)行系統(tǒng)檢測(cè)工作,誤檢個(gè)數(shù)僅為4個(gè),準(zhǔn)確度較學(xué)習(xí)率設(shè)置為0.005時(shí)提升10.3%。
圖14 誤檢個(gè)數(shù)與初始學(xué)習(xí)率的關(guān)系
設(shè)計(jì)輕量化模型,對(duì)YOLO V5目標(biāo)檢測(cè)模型的主干網(wǎng)絡(luò)和激活函數(shù)進(jìn)行修改,并融入?yún)f(xié)同注意力機(jī)制。調(diào)用經(jīng)過訓(xùn)練扣件數(shù)據(jù)集得到的權(quán)重文件,對(duì)CSI攝像頭拍攝到的鋼軌扣件進(jìn)行缺陷檢測(cè)。
經(jīng)實(shí)驗(yàn)測(cè)試,使用所設(shè)計(jì)的鋼軌扣件缺陷檢測(cè)系統(tǒng),對(duì)單張扣件圖片檢測(cè)時(shí)間為56.8 ms,誤檢率為13%。對(duì)系統(tǒng)進(jìn)行改進(jìn),增加初始學(xué)習(xí)率數(shù)值,發(fā)現(xiàn)將初始學(xué)習(xí)率設(shè)置為0.01進(jìn)行訓(xùn)練得到的模型用于系統(tǒng)中,誤檢率僅為4%,相比系統(tǒng)改進(jìn)之前,檢測(cè)精度更高且速度不減,對(duì)算力和存儲(chǔ)空間等硬件條件要求極低。