陳騫
(四川大學(xué)視覺合成圖形圖像技術(shù)國(guó)防重點(diǎn)學(xué)科實(shí)驗(yàn)室,成都 610065)
工業(yè)制造的車間和倉(cāng)儲(chǔ)存在大量貨物搬運(yùn),托盤碼放是最主要的儲(chǔ)貨形式,拾取托盤的工業(yè)搬運(yùn)車輛稱為叉車,國(guó)內(nèi)叉車銷量從2000年不到2萬(wàn)臺(tái)增至2018年銷量接近60萬(wàn)臺(tái),漲幅近30倍[1]。目前國(guó)內(nèi)生產(chǎn)車間主要采用人工操作機(jī)動(dòng)或非機(jī)動(dòng)叉車拾取托盤搬運(yùn)貨物。人工搬運(yùn)除了人力和時(shí)間開銷,還要面對(duì)滿載貨物的叉車慣性大操控難等問(wèn)題,以及可能發(fā)生貨物坍塌、撞傷砸傷工人等意外事故。所以實(shí)現(xiàn)叉車在無(wú)人操控條件下托盤取放、貨物運(yùn)輸具有廣闊前景。
拾取托盤首先要對(duì)托盤進(jìn)行檢測(cè),武文漢[2]提出針對(duì)遠(yuǎn)距離場(chǎng)景,使用ToF(Time-of-Flight)相機(jī)采集三維點(diǎn)云,將全局和局部特征與托盤模板特征進(jìn)行比對(duì),檢測(cè)精確但ToF相機(jī)價(jià)格不菲;Syu J L等人[3]對(duì)單目攝像頭獲取的圖像,基于類似Haar特征算子提取輪廓,將這些輪廓分正負(fù)樣本經(jīng)過(guò)AdaBoost分類訓(xùn)練和多次迭代,組成級(jí)聯(lián)分類器。檢測(cè)正面朝向的托盤具有高準(zhǔn)確度,但側(cè)面朝向并不樂(lè)觀。Kim M等人[4]根據(jù)托盤邊緣對(duì)邊平行,依靠檢測(cè)平行線來(lái)檢測(cè)托盤并確定位姿,易受遮擋影響以及到其他物體輪廓干擾。Mohamed I S等人[5]采用深度學(xué)習(xí)的方法,用Faster R-CNN網(wǎng)絡(luò)訓(xùn)練數(shù)據(jù),得到模型以檢測(cè)托盤。該網(wǎng)絡(luò)框架計(jì)算開銷大,檢測(cè)速度只能達(dá)到16幀每秒。
可見光攝像頭部署簡(jiǎn)單,成本相比其他傳感元件更低。伴隨著計(jì)算機(jī)視覺技術(shù)的發(fā)展,以及近期深度學(xué)習(xí)卷積神經(jīng)網(wǎng)絡(luò)YOLOv4[6]目標(biāo)檢測(cè)算法的提出,文章設(shè)計(jì)了基于該算法,使用可見光相機(jī)采集車間作業(yè)場(chǎng)景,處理數(shù)據(jù),訓(xùn)練網(wǎng)絡(luò)模型,檢測(cè)托盤的同時(shí)一并檢測(cè)貨物和工人便于后續(xù)拓展應(yīng)用。驗(yàn)證YOLOv4網(wǎng)絡(luò)訓(xùn)練的模型,檢測(cè)的準(zhǔn)確度和速度能夠滿足實(shí)際生產(chǎn)的實(shí)時(shí)需求。
考慮外部環(huán)境尤其光照影響,使用可見光相機(jī)分別在陰天晴天的早上10:00、中午14:00、下午18:00錄制拍攝從不同角度觀測(cè)車間各區(qū)域的作業(yè)場(chǎng)景視頻,共578分鐘,圖像尺寸2560×1440。對(duì)視頻每間隔5秒取幀,得到6943張車間場(chǎng)景圖,篩選去除鏡頭被嚴(yán)重遮擋以及低質(zhì)量無(wú)關(guān)目標(biāo)圖像后保留6851張用于制作數(shù)據(jù)集。使用標(biāo)注工具LableImg,在每張圖像中找到托盤、貨物和人,框選出緊貼目標(biāo)輪廓的矩形,附加對(duì)應(yīng)標(biāo)簽。將每張圖像的所有標(biāo)簽信息、標(biāo)簽框的左上角坐標(biāo)值和右下角坐標(biāo)值,保存到對(duì)應(yīng)的XML文件。打亂數(shù)據(jù)集所有圖像的順序,選擇其中5481張作為訓(xùn)練集,剩下1370張作為測(cè)試集。
使用Mosaic數(shù)據(jù)增強(qiáng)方法,將四張圖像拼湊為一張,標(biāo)簽信息也從原圖映射至拼接后的圖像,如圖1所示。再調(diào)整圖像亮度、對(duì)比度、飽和度,形態(tài)上再進(jìn)行裁剪、縮放、翻轉(zhuǎn)以及鏡像變化。該方法能豐富檢測(cè)目標(biāo)的背景,減少目標(biāo)對(duì)特定背景的依賴,防止后續(xù)模型訓(xùn)練過(guò)擬合。同時(shí)由于每張?jiān)鰪?qiáng)圖像涵蓋四張?jiān)瓐D信息,可以降低訓(xùn)練時(shí)每批次的圖像載入數(shù)量,降低對(duì)GPU顯存和算力需求。
圖1 Mosaic數(shù)據(jù)增強(qiáng)拼接效果圖
YOLOv4整體采用one-stage目標(biāo)檢測(cè)模式,即同步完成目標(biāo)的定位和分類。結(jié)構(gòu)如圖2所示。
圖2 YOLOv4網(wǎng)絡(luò)框架圖
其主干特征提取網(wǎng)絡(luò)CSPDarkNet53包含一個(gè)DarkNet卷積塊和五個(gè)CSP(Cross Stage Partial)模塊。卷積塊將輸入608×608×3的RGB原圖像調(diào)整為32通道,歸一化后再采用Mish激活函數(shù),表達(dá)式(1):
Mish=x×tanh(ln(1+ex))
(1)
該激活函數(shù)的優(yōu)點(diǎn)是在函數(shù)曲線平滑,且保留了一定的負(fù)值特性。CSP殘差塊是在殘差堆疊的基礎(chǔ)上增加整體殘差邊的結(jié)構(gòu),能夠進(jìn)一步減少計(jì)算消耗,提取目標(biāo)細(xì)微和整體特征。尺寸從608×608每經(jīng)過(guò)一個(gè)CSP殘差塊遞減一倍,直至19×19,而通道數(shù)從32開始成倍遞增至1024。
增強(qiáng)特征提取網(wǎng)絡(luò)采用SPP+PANet,該結(jié)構(gòu)能夠增加網(wǎng)絡(luò)的感受野,融合目標(biāo)在不同尺度下的特征信息。CSPDarkNet53的輸出經(jīng)過(guò)空間金字塔池化得到特征層,卷積、上采樣后堆疊,向高尺寸層遞進(jìn)。再由高尺寸特征層經(jīng)過(guò)卷積、下采樣,與低尺寸特征層堆疊。此結(jié)構(gòu)能將一張圖像上不同尺寸目標(biāo)的特征有效提取,最后再通過(guò)YOLO HEAD整合通道,計(jì)算損失。
將圖像劃分為三種尺寸的網(wǎng)格便于檢測(cè)不同尺寸的目標(biāo)。每種尺寸都根據(jù)標(biāo)注數(shù)據(jù)集時(shí)目標(biāo)尺寸的大概分布,預(yù)先設(shè)置三種值的錨框。一個(gè)網(wǎng)格映射一個(gè)原圖區(qū)域,負(fù)責(zé)該區(qū)域目標(biāo)的檢測(cè),當(dāng)真實(shí)目標(biāo)的中心位于某網(wǎng)絡(luò)內(nèi)時(shí),與該網(wǎng)格的預(yù)測(cè)值進(jìn)行比對(duì),計(jì)算損失偏差。
每個(gè)網(wǎng)格的預(yù)測(cè)輸出包括num_anchors*(num_classes+5)個(gè)值,其中num_anchors是預(yù)先設(shè)置錨框數(shù),為3;檢測(cè)目標(biāo)分托盤、貨物、工人,故num_classes等于3;最后的“5”包含存在目標(biāo)的可能性、預(yù)測(cè)目標(biāo)中心坐標(biāo)相對(duì)網(wǎng)格位置以及預(yù)測(cè)長(zhǎng)寬相對(duì)錨框長(zhǎng)寬縮放比例。YOLOv4的損失函數(shù)由三部分類構(gòu)成:置信度損失Lconf、位置損失Lpos和分類損失Lcls。
(1)置信度損失Lconf
置信度表示該網(wǎng)格預(yù)測(cè)存在目標(biāo)的可能性,將其與實(shí)際存在目標(biāo)和實(shí)際不存在目標(biāo)兩種情況進(jìn)行比對(duì)并計(jì)算,置信度損失Lconf由公式(2)計(jì)算:
(2)
式中:
K×K——網(wǎng)格尺寸(本實(shí)驗(yàn)有19×19、38×38、76×76三種);
M——錨框數(shù)(本實(shí)驗(yàn)每種網(wǎng)格劃分都有相應(yīng)3種尺寸錨框);
(2)位置損失Lpos
位置損失衡量預(yù)測(cè)目標(biāo)中心與實(shí)際目標(biāo)中心的位置偏移以及預(yù)測(cè)目標(biāo)框和實(shí)際目標(biāo)框的長(zhǎng)寬偏差。用CIoU(Complete Intersection over Union)[7]計(jì)算,CIoU結(jié)合了預(yù)測(cè)目標(biāo)框與實(shí)際目標(biāo)框的尺度、中心距離、重疊率,并加入了描述二者寬高比即形狀相似度的懲罰因子。使訓(xùn)練時(shí)預(yù)測(cè)目標(biāo)中心坐標(biāo)和長(zhǎng)寬的回歸更穩(wěn)定,避免發(fā)散。計(jì)算位置損失L_pos如公式(3):
(3)
式中:
ρ——?dú)W氏距離;
l——包圍實(shí)際目標(biāo)框和預(yù)測(cè)框的最小矩形的對(duì)角線距離。
(3)分類損失Lcls
分類損失衡量預(yù)測(cè)的目標(biāo)是每一類的概率分布與實(shí)際標(biāo)簽?zāi)骋活惛怕手?、其他類概率置0的分布偏差,分類損失Lcls采用交叉熵計(jì)算,其公式(4):
(4)
式中:
訓(xùn)練時(shí)總損失函數(shù)Ltotal有公式(5):
Ltotal=aLconf+bLpos+cLcls
(5)
其中a、b、c為加權(quán)系數(shù),可根據(jù)需求調(diào)整,默認(rèn)為1。
本實(shí)驗(yàn)采用TensorFlow 2.1.0深度學(xué)習(xí)框架,GPU加速網(wǎng)絡(luò)訓(xùn)練,顯卡NVIDIA RTX2080s,顯存8G。CUDA版本10.2.15,CUDNN版本7.6.5。圖像輸入尺寸608×608,RGB三通道。隨機(jī)選取6851張標(biāo)注圖像中的80%用于訓(xùn)練,訓(xùn)練集中10%用于驗(yàn)證。因?yàn)椴捎肕osaic數(shù)據(jù)增強(qiáng)方式,每張合成圖像包含4張?jiān)瓐D信息,每批輸入量設(shè)置為4。數(shù)據(jù)集重復(fù)100次,迭代34250次完成訓(xùn)練。初始學(xué)習(xí)率設(shè)置為0.001,擬用Adam(Adaptive Momentum)[8]自適應(yīng)矩估計(jì)梯度更新算法調(diào)整訓(xùn)練時(shí)的學(xué)習(xí)率。
評(píng)估模型重要指標(biāo)是損失值,使用可視化工具matplotlib繪制訓(xùn)練過(guò)程的損失值L_total變化,如圖3。
圖3 損失函數(shù)變化曲線
由圖3可知,損失值在0~12000次迭代時(shí)震蕩較大,呈明顯下降趨勢(shì)。12000~28000次迭代期間,損失值下降緩慢,逐漸從2左右降至1左右。28000次迭代之后損失值一直在1附近小幅波動(dòng),迭代34250次結(jié)束訓(xùn)練時(shí)損失值為0.914。
測(cè)試集1370張圖像,一共包含目標(biāo)5827個(gè),其中托盤2361,貨物2712,工人754。使用訓(xùn)練機(jī)器進(jìn)行測(cè)試,將測(cè)試集圖像輸入網(wǎng)絡(luò)模型,設(shè)定置信度大于等于0.5判定為存在目標(biāo),其類別概率分布的最大值對(duì)應(yīng)目標(biāo)為預(yù)測(cè)目標(biāo),預(yù)測(cè)框與實(shí)際框交并比大于等于0.5為有效預(yù)測(cè)。平均每張圖像檢測(cè)耗時(shí)0.0358s,檢測(cè)效果如圖4。
(a) (b)
由圖4可見,如果目標(biāo)個(gè)體獨(dú)立,在各種位姿下檢測(cè)都能保持高置信度,并且框得的范圍準(zhǔn)確。如果遮擋嚴(yán)重,置信度明顯降低,甚至出現(xiàn)漏檢。
統(tǒng)計(jì)每類目標(biāo)的預(yù)測(cè)情況見表1。
表1 分類混淆統(tǒng)計(jì)
準(zhǔn)確率Pprecision和召回率Precall是評(píng)估模型的重要指標(biāo)。準(zhǔn)確率Pprecision描述模型預(yù)測(cè)的結(jié)果正確占總預(yù)測(cè)量的百分比,召回率Precall描述實(shí)際為正的樣本有多少被正確預(yù)測(cè)。Pprecision和Precall的計(jì)算如公式(6)和(7)。
(6)
(7)
式中:
TP——預(yù)測(cè)結(jié)果為某類目標(biāo),實(shí)際標(biāo)簽為該類,預(yù)測(cè)正確的樣本;
FP——預(yù)測(cè)結(jié)果為某類目標(biāo),實(shí)際標(biāo)簽非該類或?qū)嶋H非目標(biāo),預(yù)測(cè)錯(cuò)誤的樣本;
FN——預(yù)測(cè)結(jié)果非某類或未能預(yù)測(cè)到目標(biāo),實(shí)際標(biāo)簽為該類,預(yù)測(cè)錯(cuò)誤的樣本。
整理計(jì)算結(jié)果見表2。
表2 預(yù)測(cè)結(jié)果各項(xiàng)參數(shù)
平均每張圖像檢測(cè)耗時(shí)0.0358s,即檢測(cè)速度可達(dá)到28fps,能夠滿足車間作業(yè)環(huán)境下實(shí)時(shí)檢測(cè)。由表1、2可知,三種目標(biāo)的檢測(cè)都保持了較高的準(zhǔn)確率,尤其工人和貨物,總體準(zhǔn)確率達(dá)到96.45%,表明網(wǎng)絡(luò)預(yù)測(cè)的結(jié)果具有高可靠性。貨物和托盤由于互相大面積遮擋,存在一定的漏檢,影響了召回率。誤檢方面,同樣因?yàn)檎趽鯇?dǎo)致少量托盤被檢測(cè)成貨物。較為反常的是出現(xiàn)貨物被檢測(cè)成工人,主要原因在于工人多數(shù)場(chǎng)景都在搬運(yùn)貨物,兩者經(jīng)常同時(shí)出現(xiàn)且緊貼,所以數(shù)據(jù)集中工人的數(shù)據(jù)量、動(dòng)作和位姿都有待擴(kuò)充。
在樣的數(shù)據(jù)集,設(shè)備和同樣置信度、交并比閾值設(shè)定的條件下,與采用YOLOv3[9]和Faster R-CNN[10]網(wǎng)絡(luò)檢測(cè)算法作對(duì)比,見表3。
表3 模型對(duì)比
YOLOv4準(zhǔn)確度已經(jīng)接近two-stage檢測(cè)算法的Faster R-CNN,F(xiàn)PS提升了12幀/秒。相比YOLOv3,準(zhǔn)確度提升了2.12%,F(xiàn)PS提升了3幀/秒。
本文基于深度學(xué)習(xí)YOLOv4目標(biāo)檢測(cè)網(wǎng)絡(luò),自主采集車間作業(yè)場(chǎng)景數(shù)據(jù),標(biāo)注建立數(shù)據(jù)集,增強(qiáng)數(shù)據(jù),訓(xùn)練模型。本文方法比傳統(tǒng)圖像處理方法和過(guò)去的深度學(xué)習(xí)目標(biāo)檢測(cè)算法性能更佳,實(shí)時(shí)并且能檢測(cè)多目標(biāo)多種類。無(wú)需激光或者紅外等傳感元件,可見光相機(jī)拍攝圖像清晰分辨率大于608×608即可,具可拓展性和實(shí)用價(jià)值。被遮擋目標(biāo)的檢測(cè)準(zhǔn)確度還需提升,數(shù)據(jù)豐富程度有待增強(qiáng),著重應(yīng)對(duì)漏檢問(wèn)題。后續(xù)可以考慮將網(wǎng)絡(luò)模型的輸出結(jié)果與傳統(tǒng)的紋理、邊緣輪廓等圖像特征進(jìn)行融合,提升目標(biāo)種類判別的準(zhǔn)確度和范圍選取的精確度,甚至達(dá)到像素級(jí)別的分割。