李青青,李陳斌,李鎮(zhèn)宇,陸可
(1.安徽工業(yè)大學(xué)管理科學(xué)與工程學(xué)院,馬鞍山243000;2.哈爾濱工業(yè)大學(xué)計算學(xué)部,哈爾濱150013;3.上海應(yīng)用技術(shù)大學(xué)經(jīng)濟(jì)與管理學(xué)院,上海200235)
機(jī)器視覺被越來越廣泛的應(yīng)用于無人工廠、智能控制等場景中。在工業(yè)物流系統(tǒng)中,叉車在搬運(yùn)和存儲環(huán)節(jié)中扮演著重要角色。然而,大部分工廠內(nèi)部叉車數(shù)量大、運(yùn)送路線復(fù)雜,并且對搬運(yùn)的貨物采用人工統(tǒng)計、紙質(zhì)保存等傳統(tǒng)方式進(jìn)行管理,難以對叉車的工作效率進(jìn)行有效評估。因此,本文提出一種基于機(jī)器視覺統(tǒng)計裝卸貨物次數(shù)的方法,對叉車工作效率進(jìn)行分析和記錄。
近年來,許多學(xué)者在不同領(lǐng)域?qū)C(jī)器視覺進(jìn)行深入研究。物體檢測是機(jī)器視覺領(lǐng)域的基礎(chǔ)性研究,對后續(xù)能效管理、自動識別等任務(wù)起著至關(guān)重要的作用。傳統(tǒng)的檢測是通過傳感器判斷托盤貨物的狀態(tài)。文獻(xiàn)[1]使用傳感器與激光雷達(dá)結(jié)合,通過聯(lián)合標(biāo)定和配準(zhǔn)來實(shí)現(xiàn)對叉車托盤的檢測,但是價格昂貴,無法普及使用。文獻(xiàn)[2-3]基于顏色和幾何要素生成特征信息,應(yīng)用具有針對性,但是易受光照與噪聲的影響。隨著深度學(xué)習(xí)的發(fā)展以及硬件水平的提高,基于深度學(xué)習(xí)的目標(biāo)檢測技術(shù),取得了劃時代的發(fā)展。從最初的R-CNN[4]、OverFeat[5]、到后來的Fast R-CNN[6]、進(jìn)階版的Faster R-CNN[7]、SSD[8]以及YOLO系列,網(wǎng)絡(luò)架構(gòu)實(shí)現(xiàn)從雙階段到單階段的革新。從面向PC端R-CNN到手機(jī)端MobileNet[10],目標(biāo)檢測技術(shù)在不同終端上展現(xiàn)了出色的檢測效果和性能。文獻(xiàn)[11]利用托盤孔位置的焦點(diǎn)特征進(jìn)行托盤識別,要求存在托盤孔,限制因素較高。文獻(xiàn)[12]利用改進(jìn)的DenseNet算法對實(shí)際場景下的托盤進(jìn)行檢測,實(shí)驗(yàn)場景環(huán)境單一,檢測效果一般。所以將機(jī)器視覺應(yīng)用于實(shí)際場景中,存在網(wǎng)絡(luò)模型較大、參數(shù)多、嵌入性差的問題,導(dǎo)致計算量大、硬件要求高的問題。
為了解決上述問題,適應(yīng)作業(yè)環(huán)境的復(fù)雜多樣性,首先在通用數(shù)據(jù)集的基礎(chǔ)上增加了符合實(shí)地應(yīng)用場景的數(shù)據(jù)。其次,對于現(xiàn)場硬件的限制性,難以嵌入大規(guī)模的應(yīng)用程序,改進(jìn)了YOLOv5的主干網(wǎng)絡(luò)結(jié)構(gòu),使用更輕量級的特征提取網(wǎng)絡(luò)減少網(wǎng)絡(luò)的冗余特征。為保證減少網(wǎng)絡(luò)運(yùn)算量的前提下,不降低網(wǎng)絡(luò)檢測的準(zhǔn)確度,故增加了注意力機(jī)制,更具針對性地提取圖像的目標(biāo)特征信息,提高網(wǎng)絡(luò)的準(zhǔn)確度。實(shí)驗(yàn)結(jié)果表明,在不同復(fù)雜度場景下,與原始的YOLOv5算法比較,改進(jìn)后的網(wǎng)絡(luò)在魯棒性和準(zhǔn)確度顯著提高。
首先,本文將單目2D相機(jī)部署在叉車駕駛室的頂端,檢測到叉車前向托盤立面局部貨物。在獲取實(shí)際場景下視頻流的基礎(chǔ)上,對視頻進(jìn)行分幀操作,截取間隔若干幀的不同時段的圖片。然后對圖像進(jìn)行聚類分析,建立所有圖像之間的相似度函數(shù)。利用相似度函數(shù)分析截取到的圖片之間的相似程度,設(shè)定一定閾值對相似程度高的圖片進(jìn)行重復(fù)篩選,避免人工挑選的時間成本和主觀判斷的差異。最終圖片作為自建數(shù)據(jù)集的源文件,通過標(biāo)注后得到不同場景下的類別數(shù)據(jù)。選取YOLOv5算法作為機(jī)器視覺的檢測算法,實(shí)現(xiàn)對叉車運(yùn)輸狀態(tài)的實(shí)時準(zhǔn)確獲取。對現(xiàn)實(shí)場景進(jìn)行目標(biāo)檢測的流程設(shè)計如圖1所示。
圖1 檢測場景系統(tǒng)框架
本文圍繞VOC數(shù)據(jù)集和自建數(shù)據(jù)集進(jìn)行算法效果的對比實(shí)驗(yàn)。VOC數(shù)據(jù)集是擁有多項(xiàng)功能的數(shù)據(jù)集,包含20類目標(biāo),數(shù)量超過5萬張,以XML數(shù)據(jù)結(jié)構(gòu)存儲。VOC數(shù)據(jù)集雖然包含著大量標(biāo)注數(shù)據(jù),但是適用于實(shí)際工業(yè)應(yīng)用場景比較少。
本文仿照VOC數(shù)據(jù)集制作了一個專門用于檢測叉車貨物的數(shù)據(jù)集,用于提高網(wǎng)絡(luò)性能。該數(shù)據(jù)集從實(shí)地車間駕駛員行車過程中跟拍獲取視頻,采集到不同天氣、不同時間段(夜景也在內(nèi))、不同地點(diǎn)的復(fù)雜樣本數(shù)據(jù)。通過后續(xù)對視頻的分幀、聚類,挑選出叉車托盤貨物中含有滿盤、半盤、空載、上下料過程的四種不同復(fù)雜場景。最后使用labelImg軟件對采集圖片進(jìn)行矩形框標(biāo)定,生成對應(yīng)的XML文件,用于訓(xùn)練和測試。自建叉車貨物數(shù)據(jù)集更貼合工廠場景,同時復(fù)雜多變,對于目標(biāo)檢測網(wǎng)絡(luò)的性能具有更大的挑戰(zhàn)性。
本文應(yīng)用的場景中,數(shù)據(jù)以視頻的形式存儲,而實(shí)際使用的數(shù)據(jù)集是以圖像的格式作為輸入,所以要對原始的數(shù)據(jù)進(jìn)行預(yù)處理操作。數(shù)據(jù)預(yù)處理流程如圖2所示。首先對視頻數(shù)據(jù)處理,對輸入的視頻進(jìn)行采集和編號,并將編號后的視頻輸入存儲模塊。然后對視頻進(jìn)行預(yù)處理操作,在利用高斯濾波濾除編號視頻噪聲的基礎(chǔ)上,再進(jìn)行分幀處理。在預(yù)設(shè)時間間隔下保證幀長有效性,得到若干獨(dú)立的預(yù)處理圖像。視頻通過預(yù)處理模塊首先對視頻間隔為60幀頻率取一張圖片,并進(jìn)行存儲操作。在保證圖像清晰的前提下,每個視頻約提取5000張圖片,所有視頻數(shù)據(jù)共計生成90739張圖片。
圖2 數(shù)據(jù)分幀聚類處理
由于分幀后處理的數(shù)據(jù)量較大,圖片與圖片之間的差異性較小,通過聚類過后易于對圖片進(jìn)行刪減。我們首先將原始圖像看作是一個高維向量,將數(shù)據(jù)由高維向低維投影,進(jìn)行坐標(biāo)的線性轉(zhuǎn)換。常見的數(shù)據(jù)降維方法包括主成分分析,奇異值分解等。我們采用PCA(Principal Component Analysis)算法進(jìn)行降維,便于有效信息的提取和剔除無用信息。降維公式如下:
進(jìn)行降維后,提取圖片本身具有的特征,從而判斷兩兩圖片之間的相似程度。通過計算相鄰圖片特征的相似性,設(shè)定合理閾值解決自建數(shù)據(jù)集冗余的問題。
v1是圖像1降維后的向量形式,v2是圖像2的向量形式,也可以理解為概率論上的樣本點(diǎn)。conv(v1,v2)為v1與v2的協(xié)方差,var(v1)為v1的方差,var(v2)為v2的方差。
針對相似度高無法識別的圖片,提取圖片更深層的語義信息,利用圖片多層次特征預(yù)防刪除過度情況。為了平衡聚類效果以及運(yùn)算時間成本,將本實(shí)驗(yàn)聚類數(shù)目設(shè)置為9,通過每個類簇的協(xié)方差來決定簇類分布的形狀。經(jīng)反復(fù)迭代訓(xùn)練后,處理速度可達(dá)28bit/s,最終獲得貼合數(shù)據(jù)集的模型。聚類效果如圖3所示,不同散點(diǎn)群組間距離越遠(yuǎn),相似度越低。
圖3 聚類效果
YOLOv5網(wǎng)絡(luò)框架主要由三個模塊組成,框架如圖4所示。首先是提取特征的主干網(wǎng)絡(luò)CSPNet[13],在不同圖片上提取細(xì)粒度級特征,提取豐富的語義信息和位置信息。模型的head模塊包括PANet[14]和head檢測部分,路徑聯(lián)合網(wǎng)絡(luò)PANet網(wǎng)絡(luò)可以對主干提取的特征進(jìn)行特征融合。對于不同尺度目標(biāo)的檢測,特征金字塔結(jié)構(gòu)會強(qiáng)化訓(xùn)練好的模型,有利于對不同大小的同一目標(biāo)識別問題。Head檢測層將預(yù)測出的目標(biāo)框映射到對應(yīng)的特征圖上,最終輸出包含目標(biāo)所屬類別概率、對象得分和包圍框的坐標(biāo)的向量。
圖4 YOLOv5網(wǎng)絡(luò)結(jié)構(gòu)
在實(shí)際工業(yè)場景中,一方面現(xiàn)有數(shù)據(jù)集類似于PASCAL VOC(以下簡稱VOC)、COCO等公共數(shù)據(jù)集與實(shí)際場景的耦合性較差,模型適配性較低。另一方面,原始算法對現(xiàn)場設(shè)備性能要求過高,難以嵌入。對于以上問題,首先,自建了符合現(xiàn)實(shí)場景的數(shù)據(jù)集,在公共數(shù)據(jù)集的基礎(chǔ)上滿足實(shí)地檢測要求。其次,對YO?LOv5網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行了改進(jìn),通過GhostBottleneck(以下簡稱GB層)層代替BottleneckCSP網(wǎng)絡(luò)層,縮減網(wǎng)絡(luò)參數(shù)。同時新增了Squeeze-and-Excitation注意力機(jī)制模塊(以下簡稱SE模塊),對主干網(wǎng)絡(luò)的提取特征重新組合,更好擬合網(wǎng)路通道之間復(fù)雜的相關(guān)性,提取更具針對性的特征。
在實(shí)際場景下,由于現(xiàn)場設(shè)備空間布局的設(shè)計,硬件算力有限,限制了深度學(xué)習(xí)的應(yīng)用。針對此問題,我們采用為移動設(shè)備設(shè)計的GhostNet[15]網(wǎng)絡(luò)結(jié)構(gòu),其核心是利用線性操作來生成豐富的特征圖。原始的Bottle?neck網(wǎng)絡(luò)中,在提取特征的過程中生成過多冗余特征圖,占用硬件內(nèi)存時還影響網(wǎng)絡(luò)的運(yùn)行速度。本文使用GB網(wǎng)絡(luò)結(jié)構(gòu)代替YOLO中的BottleneckCSP結(jié)構(gòu)。我們將網(wǎng)絡(luò)拆分成shortcut和conv堆疊兩個部分,使用一部分普通卷積獲取特征圖,其他特征圖使用5×5的線性卷積操作,從而在減少一半計算量的同時,依舊能獲取相同數(shù)量的特征圖??蚣芾L制如圖5所示。
圖5 GhostBottleNeck框架
特征圖經(jīng)過一個Ghostconv卷積過后,判斷傳入的stride參數(shù)是否為1。當(dāng)判斷stride不等于1時,則執(zhí)行DWconv層,實(shí)現(xiàn)對輸入特征層的下采樣,減少網(wǎng)絡(luò)的運(yùn)算參數(shù),特征圖會縮小為原來的一半,網(wǎng)絡(luò)層的深度加深。當(dāng)stride等于1時,網(wǎng)絡(luò)會經(jīng)過Ghostconv層進(jìn)行特征提取,實(shí)現(xiàn)通道數(shù)的擴(kuò)展。最終對前幾層的輸出進(jìn)行整合操作。這樣我們設(shè)置網(wǎng)絡(luò)步長大小的同時,使得網(wǎng)絡(luò)結(jié)構(gòu)更富有靈活性和選擇性。
與此同時,由于梯度發(fā)散,單純增加網(wǎng)絡(luò)深度難以簡單地提高網(wǎng)絡(luò)的效果,反而可能損害模型的效果。本文使用shortcut模塊,對上一層的網(wǎng)絡(luò)進(jìn)行DWconv層的操作,與Conv堆疊塊相似,選擇傳入的stride參數(shù)來進(jìn)行控制是否進(jìn)行卷積操作。增加的shortcut模塊就是為了保證加深網(wǎng)絡(luò)深度的同時,自適應(yīng)地調(diào)節(jié)網(wǎng)絡(luò)的輸出通道數(shù),便于維持模型的效果。
為了實(shí)現(xiàn)網(wǎng)絡(luò)的輕量化,因此本文采用了Ghost?Conv卷積模塊,繪制如圖6所示。首先使用1×1大小的普通卷積層CV1實(shí)現(xiàn)更深層的特征提取。并且為了保證特征圖細(xì)節(jié)信息的獲取,分離出多尺度的局部特征信息。對前層輸出數(shù)據(jù)分組成組特征,每個特征使用5×5大小的卷積核經(jīng)過線性變換,提取更深層次的特征。最終將網(wǎng)絡(luò)每一個模塊可執(zhí)行一組轉(zhuǎn)換,在一個低維嵌入上執(zhí)行每組轉(zhuǎn)換,通過求和合并輸出。網(wǎng)絡(luò)通過分組卷積的方式來達(dá)到分組效果和卷積數(shù)量兩個方式的平衡,最終可以在減少網(wǎng)絡(luò)參數(shù)的同時還降低模型的復(fù)雜度。
圖6 GhostConv網(wǎng)絡(luò)
使用了GhostConv過后,本文又結(jié)合了DWconv對網(wǎng)絡(luò)進(jìn)行優(yōu)化。DWconv層使用1×1的卷積神經(jīng)網(wǎng)絡(luò),設(shè)置網(wǎng)絡(luò)輸入輸出的最大公約數(shù)作為劃分群的個數(shù),采用分組數(shù)量等于輸入通道數(shù)量,即每個通道作為一個小組分別進(jìn)行卷積,最終將每組結(jié)果聯(lián)結(jié)作為輸出。
考慮到本文的檢測目標(biāo)物體面積較大,小目標(biāo)物體較少,而在卷積池化的過程中,不同通道特征所占的重要性相同,造成信息損失問題。SE模塊[16]是HU等人提出來的通過關(guān)注通道之間的關(guān)系,解決不同通道特征信息影響因子不同的問題。
SE模塊包括Squeeze(壓縮)和Excitation(激發(fā))兩個操作。在改進(jìn)后GB層不斷進(jìn)行通道堆疊過后,會產(chǎn)生參數(shù)量大,模型容易過擬合的問題。我們首先利用Squeeze通過在Feature Map層上執(zhí)行Global Average Pooling,輸出1×1×channel的特征圖對整個網(wǎng)路做正則化以防止過擬合。其公式如下:
H表示輸入特征圖的高度,W表示輸入特征圖的寬度。Excitation操作通過兩層全連接結(jié)構(gòu)獲取通道間聯(lián)系。然后接一個sigmoid激活函數(shù)層來保證輸出的權(quán)重在[0,1]區(qū)間內(nèi)。此時sigmoid函數(shù)的門機(jī)制,選擇更加重要的特征交互傳遞到更深層。公式如下:
其中r為升降維比率,為降維層參數(shù),為升維層參數(shù),ReLU是其激活函數(shù)。最后一步是Scale層,將學(xué)習(xí)sigmoid層各通道歸一化權(quán)重加權(quán)到原始特征上。
我們自建數(shù)據(jù)集中的圖片,在特征表現(xiàn)上有很強(qiáng)的指向性,特征較少的位置信息對整體網(wǎng)絡(luò)檢測和識別的影響有限。我們使用SE模塊控制scale的大小,對不同層的特征圖提取的特征指向性更強(qiáng)。雖然增加SE模塊層會相應(yīng)增加網(wǎng)絡(luò)模型的參數(shù)和計算量,對于模型參數(shù)增加量為:
其中r為降維系數(shù),S為stage數(shù)量,Cs表示第s個stage的通道數(shù),Ns是第s個stage的block重復(fù)次數(shù)。SE模塊不可避免地增加了一些參數(shù)和計算量,但是在改進(jìn)后的網(wǎng)絡(luò)結(jié)構(gòu)中表現(xiàn)出更好的性能效果。
改進(jìn)后的YOLOv5算法主干網(wǎng)絡(luò)如圖7所示,通過使用GB層對輸入進(jìn)行特征提取,不影響網(wǎng)絡(luò)特征提取效果的基礎(chǔ)上,使用步長為1的GB層代替原有的提取特征層。步長為2的GB層代替普通卷積層。再增加SE模塊動態(tài)自適應(yīng)完成在GB層通道維度上對原始特征進(jìn)行雙重驗(yàn)證,關(guān)注了模型通道層面的依賴關(guān)系。一方面,我們使用GB層的線性變換降低模型的大小,減少模型的運(yùn)算成本。另一方面,結(jié)合使用SE模塊針對性提取不同重要性的特征,使得網(wǎng)絡(luò)剪枝的效果更加明顯,對GB層提取的特征更具有魯棒性和精確度。
圖7 改進(jìn)的YOLOv5主干網(wǎng)絡(luò)結(jié)構(gòu)
增加的SE模塊中,經(jīng)過前面一系列的卷積操作和注意力機(jī)制層,會輸出豐富的全局語義信息,但對局部的特征信息較少。我們在網(wǎng)絡(luò)的后端增加空間金字塔池化層(Spatial Pyramid Pooling,SPP),對網(wǎng)絡(luò)的前向卷積進(jìn)行特征融合,從而獲取更加豐富的局部特征信息。
本次實(shí)驗(yàn)所用到的軟硬件配置如表1所示,實(shí)驗(yàn)框架基于PyTorch開發(fā)。
表1 實(shí)驗(yàn)配置
經(jīng)過網(wǎng)絡(luò)中的Neck模塊過后得到挑選的候選框,訓(xùn)練過程中會得到每一個框的屬性。其中一個指標(biāo)是準(zhǔn)確率(Precision,P),即遍歷過的預(yù)測框中,屬于正確預(yù)測邊框的比值。其中若正確地檢測出來托盤貨物則為真正類(True Positive),若對于未裝載貨物的托盤檢測為有貨物則為假正類(False Positive)。檢測準(zhǔn)確率為:
將實(shí)驗(yàn)的1172張樣本集分成10份,將其中的9份作為訓(xùn)練集,剩下的1份作為交叉驗(yàn)證集,最終取所有類別平均誤差,得到以下評估模型性能數(shù)據(jù)。本實(shí)驗(yàn)從mAP準(zhǔn)確度的指標(biāo)來衡量,對原始的YOLOv5算法和改進(jìn)后的進(jìn)行比較分析。
為了驗(yàn)證算法的魯棒性對兩種算法兩個尺度各進(jìn)行測試分析。結(jié)果如圖8所示,原始的YOLOv5用細(xì)線條表示,改進(jìn)后的網(wǎng)絡(luò)用粗線條表示。從圖中可看出,改進(jìn)后的YOLOv5網(wǎng)絡(luò)在保持較高準(zhǔn)確度的基礎(chǔ)上,波動水平較低,說明模型更加魯棒。
圖8 不同網(wǎng)絡(luò)下的準(zhǔn)確率測試
為了驗(yàn)證本文算法的有效性,將算法與更輕量級YOLO-fastest的性能進(jìn)行比較。由表2結(jié)果表明,在自建的倉儲托盤數(shù)據(jù)集上改進(jìn)后的YOLOv5 mAP達(dá)到了99.1%,相對于原始網(wǎng)絡(luò)mAP可提高0.9%,相對于更加輕量級的YOLO-fastest提高了2.31%。保證原有檢測效果下,模型大小僅有5.4MB,模型的大小降低了67%。因此,本文算法在保證托盤貨物叉車預(yù)測精準(zhǔn)度下,模型占用內(nèi)存小,更適用于樹莓派、嵌入式電子設(shè)備等低端設(shè)備。
表2 不同網(wǎng)絡(luò)的準(zhǔn)確率測試值
經(jīng)實(shí)驗(yàn)可發(fā)現(xiàn),改進(jìn)后的YOLOv5-SE與其他算法評估其網(wǎng)絡(luò)性能,在相同數(shù)據(jù)集下表現(xiàn)效果如表3所示,在增加網(wǎng)絡(luò)層數(shù)的同時,模型參數(shù)雖然有所增加,處理圖像的速度比改進(jìn)前的慢0.005s,但是依舊能滿足現(xiàn)實(shí)場景實(shí)時檢測的需求。
表3 不同網(wǎng)絡(luò)的參數(shù)比較
算法從實(shí)際工廠情景下出發(fā),將訓(xùn)練好的模型應(yīng)用于實(shí)地工業(yè)場景,算法能夠完備地嵌入到工業(yè)應(yīng)用現(xiàn)場。在叉車運(yùn)行過程中,實(shí)現(xiàn)了實(shí)時檢測的基礎(chǔ)上,準(zhǔn)確度維持較高水平。實(shí)驗(yàn)評估測試的結(jié)果如圖9所示,表明在很大程度遮掩、工廠背景嘈雜、不同姿態(tài)的托盤情況下,網(wǎng)絡(luò)模型依然取得了很好的檢測精度。
圖9 改進(jìn)后的YOLOv5叉車托盤預(yù)測圖
本文提出了一種改進(jìn)的YOLOv5算法用于統(tǒng)計叉車不同狀態(tài)下裝卸貨物的次數(shù),自建了基于實(shí)際工廠倉儲叉車運(yùn)輸?shù)臄?shù)據(jù)集用于訓(xùn)練,修改了主干網(wǎng)絡(luò)以降低算法的運(yùn)算量,并引入注意力機(jī)制提取有效特征信息。改進(jìn)后的YOLOv5模型小、更輕量級,易于進(jìn)行嵌入式的開發(fā)。在叉車運(yùn)行時面對復(fù)雜的場景魯棒性強(qiáng),能保持較好的檢測性能。但在測試的過程中也發(fā)現(xiàn)存在預(yù)測框的邊沿并不理想的情況,與檢測托盤當(dāng)前所屬狀態(tài)存在偏差,接下來我們將會這項(xiàng)工作進(jìn)行重點(diǎn)改進(jìn),設(shè)計更好性能的YOLOv5模型。