許志勇 馬小林 陳 壯 周煒程
(武漢理工大學(xué)信息工程學(xué)院寬帶無線通信與傳感器網(wǎng)絡(luò)湖北省重點(diǎn)實(shí)驗(yàn)室 湖北 武漢 430070)
金屬礦產(chǎn)資源是自然資源的重要組成部分,是國家經(jīng)濟(jì)建設(shè)的基礎(chǔ)物質(zhì)資料,隨著我國經(jīng)濟(jì)的飛速發(fā)展,對金屬礦產(chǎn)資源的需求也迅速增長[1]。金屬礦石開采后的第一道工序就是粉碎礦石和泥塊,粉碎后需要進(jìn)行數(shù)次洗礦。前兩到三次洗礦粗選,使用高壓水槍洗去松散的泥塊以及礦石表面附著的大面積泥土,每次洗礦后,再人工分揀出粘結(jié)性較強(qiáng)的泥塊。在粗選之后,還需要使用洗礦機(jī)進(jìn)行細(xì)選,洗去礦石表面附著的頑固泥土,以確保礦石的高質(zhì)量[2]。如果泥土含量過多,會極大地增加之后工序的難度,嚴(yán)重時甚至?xí)氯V機(jī),造成財(cái)產(chǎn)的損失并威脅工作人員的安全。如何提高洗礦效率、減少礦石的含泥量,已經(jīng)成為迫切需要解決的問題。
孫海波[3]通過改進(jìn)回采工藝,增大水槍壓力等方法提高選礦效率;黃春源等[4]采用圓振篩+直線篩+濃密機(jī)組合進(jìn)行洗礦工藝改造,大大提高了礦漿流動性,避免管道和分礦箱堵塞。但這些方法著重提高洗礦工藝,對粘結(jié)性強(qiáng)的泥塊的處理能力還顯得不足,存在著水資源消耗過大,人工參與較多以及工藝改造成本高問題。
丁濤等[5]提出了一種基于視覺識別技術(shù)的礦石在線分選機(jī)的系統(tǒng),將圖像處理技術(shù)應(yīng)用于礦石選礦上。其根據(jù)礦石和脈石不同的光學(xué)特性,通過機(jī)器視覺技術(shù),判斷出脈石的具體位置,并進(jìn)行剔除處理。但是這種方法效率較低,并且抗干擾性能差。礦石和泥塊的分揀數(shù)量巨大,形態(tài)復(fù)雜,在實(shí)際情況還會有大量碎泥和碎石作為噪聲,單純的機(jī)器視覺技術(shù)已經(jīng)不能滿足需求。
近年來,隨著深度學(xué)習(xí)(Deep Learning,DL)技術(shù)的成熟,這項(xiàng)技術(shù)被越來越多地應(yīng)用在目標(biāo)揀選上。深度學(xué)習(xí)通過逐層初始化人工神經(jīng)網(wǎng)絡(luò)解決了大規(guī)模多層神經(jīng)網(wǎng)絡(luò)在訓(xùn)練速度上的難題,以此奠定了DL的基礎(chǔ)。王鵬等[6]設(shè)計(jì)了一種基于機(jī)器視覺的多機(jī)械臂煤矸石分揀機(jī)器人系統(tǒng),應(yīng)用了深度學(xué)習(xí)方法中的目標(biāo)檢測技術(shù)對煤矸石抓取特征并識別,能夠?qū)崿F(xiàn)對煤矸石高效、快速分揀。這驗(yàn)證了基于深度學(xué)習(xí)的目標(biāo)檢測器在礦石分揀方面的優(yōu)勢。
為了克服傳統(tǒng)洗礦操作含泥量過大問題,滿足對大量礦石和泥塊的快速分揀要求,本文提出了一種礦石泥塊混合物分揀的原型驗(yàn)證系統(tǒng)。本系統(tǒng)創(chuàng)造性地使用了深度學(xué)習(xí)中的目標(biāo)檢測方法,在選定目標(biāo)檢測框架后,通過使用大量的礦石泥塊混合物的數(shù)據(jù)集對模型進(jìn)行訓(xùn)練,結(jié)合設(shè)計(jì)的圖像采集與無線快速傳輸裝置、云服務(wù)器等設(shè)備,實(shí)現(xiàn)了對礦石泥塊混合物的快速分揀。
基于深度學(xué)習(xí)的金屬礦石快速分揀系統(tǒng)如圖1所示。該系統(tǒng)由圖像采集與傳輸裝置、云服務(wù)器等構(gòu)成。
圖1 金屬礦石快速分揀系統(tǒng)的整體架構(gòu)
系統(tǒng)總體工作流程如下:(1) 礦石粗選時產(chǎn)生礦石和泥塊的混合物,在進(jìn)行下一次工序前,通過圖像采集與傳輸裝置將混合物的圖片上傳至云服務(wù)器;(2) 云服務(wù)器將接收的圖片存儲到指定位置,并使用目標(biāo)檢測算法對圖片中的礦石、泥塊進(jìn)行檢測,檢測的結(jié)果在終端予以顯示;(3) 根據(jù)檢測結(jié)果生成泥塊的位置信息,發(fā)送控制信號給下位機(jī),控制分揀裝置進(jìn)行分揀。
考慮到裝置的成本和簡易性,采用STM32F407作為主控板芯片。本系統(tǒng)對圖像分辨率要求不高,采用OV5640作為攝像頭,存儲器大小FLASH:1 MB,RAM:192 KB。在實(shí)際生產(chǎn)中,存在大量礦石和泥塊待分揀,需要保證圖像傳輸?shù)膶?shí)時性,采用Marvell 88W8801無線傳輸模塊。圖像采集與傳輸裝置的工作流程如圖2所示。
圖2 圖像采集與傳輸?shù)墓ぷ髁鞒?/p>
STM32F407自帶一個數(shù)字?jǐn)z像頭接口(DCMI),用于接收外部CMOS攝像頭OV5640模塊輸出的高速數(shù)據(jù)流,不斷地對礦石和泥塊進(jìn)行圖像采集。裝置采用1 920×1 080分辨率,由于一幀圖像的數(shù)據(jù)遠(yuǎn)遠(yuǎn)超出了DMA傳輸?shù)淖畲髷?shù)目65 535字節(jié)的限制,需要完成多次DMA中斷。在中斷中改變圖像數(shù)據(jù)存儲地址才能將圖像數(shù)據(jù)存儲到SRAM中。
未經(jīng)壓縮的RGB565圖像格式數(shù)據(jù)流太大,會阻礙圖像的傳輸與存儲,降低圖像傳輸速率,本裝置對圖像進(jìn)行了JPEG格式壓縮。通過對原始圖像進(jìn)行圖像預(yù)處理、離散余弦變化、量化及熵編碼[7],并將最終壓縮好的數(shù)據(jù)封裝上JPEG文件頭、文件尾、數(shù)據(jù)段,即成為標(biāo)準(zhǔn)的JPEG格式文件。
采集到的圖像經(jīng)過主控芯片處理,通過SDIO接口連接Wi-Fi模塊發(fā)送出去。Wi-Fi模塊傳輸速率為72.2 Mbit/s,支持802.11b/g/n無線標(biāo)準(zhǔn),支持TCP/IP網(wǎng)絡(luò)協(xié)議棧[8],工作在STA站點(diǎn)模式,通信IP地址設(shè)為192.168.0.8。無線通信上位機(jī)顯示采用FLASK網(wǎng)絡(luò)套接字(Socket)編程[9]:首先打開套接字,將其初始化為數(shù)據(jù)流套接字,并開始監(jiān)聽;之后調(diào)用函數(shù)連接AP(無線接入點(diǎn)),連接成功則接收數(shù)據(jù);最后對接收后的數(shù)據(jù)進(jìn)行解碼,就可以顯示清晰的圖像。
圖像采集與傳輸裝置的實(shí)物圖和上位機(jī)顯示結(jié)果如圖3所示。
圖3 圖像采集與傳輸裝置的實(shí)物圖和上位機(jī)顯示結(jié)果
目標(biāo)檢測模型部署在云服務(wù)器上,并采用GPU加速。云服務(wù)器為阿里云的GPU輕量型服務(wù)器,系統(tǒng)為Ubuntu 16.04,CPU:Intel Xeon E5- 2682 V4,GPU:Nvidia Tesla P4/8,內(nèi)存6 GB,系統(tǒng)盤40 GB固態(tài)硬盤。服務(wù)器后端采用FLASK、Gunicorn、Nginx架構(gòu)及HTTP協(xié)議,完成圖片的存儲和識別結(jié)果的推理。
服務(wù)器前端的網(wǎng)站顯示界面如圖4所示,在輸入用戶名和密碼后,可以將傳入圖片的識別結(jié)果顯示到界面上。
圖4 前端顯示界面
在深度學(xué)習(xí)的推動下,目標(biāo)檢測的技術(shù)近年來得到了飛速的發(fā)展,使用深度學(xué)習(xí)中的CNN來進(jìn)行目標(biāo)檢測已經(jīng)成為了主流的技術(shù),出現(xiàn)了諸如Fast R-CNN、Faster R-CNN、R-FCN、YOLO、SSD等算法。其中Faster R-CNN、YOLO和SSD是現(xiàn)今應(yīng)用最廣泛的三種架構(gòu)[10]。
Ren等[11]提出的新的Faster R-CNN算法,引入了RPN網(wǎng)絡(luò)提取的proposals,通過共享卷積層實(shí)現(xiàn)proposals和目標(biāo)特征的提取,使得運(yùn)算速度大大提升。Redmon等[12]提出YOLO算法,將目標(biāo)檢測和目標(biāo)識別同時實(shí)現(xiàn),發(fā)揮了速度快的特點(diǎn),但精度有所下降。Liu等[13]提出SSD算法,結(jié)合了YOLO回歸思想和Faster R-CNN的anchor機(jī)制,實(shí)現(xiàn)了速度與準(zhǔn)度并存。
由于本文所實(shí)現(xiàn)的裝置只要求識別1種目標(biāo),同時由于礦石和泥塊數(shù)量巨大,對精度要求不追求完美。根據(jù)表1中三種模型在公共數(shù)據(jù)集VOC2007、VOC2012和COCO的精度和速度表現(xiàn),本系統(tǒng)選擇以VGG-16[14]為網(wǎng)絡(luò)的SSD512目標(biāo)檢測框架作為實(shí)驗(yàn)?zāi)P汀?/p>
表1 三種模型在公共數(shù)據(jù)集上的表現(xiàn)
VGGNet(VGG-16)是卷積神經(jīng)網(wǎng)絡(luò)的經(jīng)典網(wǎng)絡(luò),由輸入層、卷積層、全連接層和輸出層四個部分組成。輸入層用于直接輸入原始圖像數(shù)據(jù);卷積層主要用于提取輸入數(shù)據(jù)的特征,包括兩部分,一部分是卷積核,另一部分是下采樣層,對目標(biāo)圖像進(jìn)行降維,以減少數(shù)據(jù)處理量;全連接層相當(dāng)于一個分類器,用來實(shí)現(xiàn)信號的縱向傳導(dǎo),每一層的神經(jīng)元節(jié)點(diǎn)分別連接線上的權(quán)值,然后經(jīng)過加權(quán)組合來獲取下面一層的輸入;輸出層用于推理結(jié)果輸出。
相比于SSD300模型,SSD512模型使得網(wǎng)絡(luò)能提取到更細(xì)微的特征,且較大地?cái)U(kuò)充了先驗(yàn)框的數(shù)量,使得模型的識別準(zhǔn)確率提高一個檔次。
本文為了研究初選的礦石和泥塊識別任務(wù),在實(shí)驗(yàn)前,使用CMOS相機(jī),采用1 920×1 080和1 080×1 920兩種像素對礦石和泥塊的數(shù)據(jù)圖進(jìn)行實(shí)地采集。為了滿足數(shù)據(jù)集多樣性的要求,模擬實(shí)際場景,增加識別網(wǎng)絡(luò)的魯棒性,特地選取了表面粗糙度、干濕度、裹泥量和本身自然形態(tài)都不相同的礦石泥塊混合物作為樣本。再從拍攝角度入手,以不同的光照和角度,對此前收集的目標(biāo)樣本進(jìn)行大量的圖片采集。在采集中,添加了一些碎石和碎泥作為噪聲,增加所訓(xùn)練網(wǎng)絡(luò)的抗干擾能力。采集的部分圖片如圖5所示。
(a)
(b)圖5 數(shù)據(jù)集采集的部分圖片
最終采集了4 600幅礦石泥塊混合物圖片,根據(jù)SSD官方模型采用的PASCAL VOC競賽數(shù)據(jù)集[15]格式,使用LabelImage軟件對感興趣的區(qū)域進(jìn)行了標(biāo)注,所標(biāo)注目標(biāo)的4元組參數(shù)(Xmin,Ymin,Xmax,Ymax),分別表示標(biāo)注框的左上和右下角坐標(biāo),并只對圖像中的泥塊進(jìn)行了標(biāo)記,即只有泥塊Mud和背景Background兩種Classes,信息保存在了xml文件中。
根據(jù)常見數(shù)據(jù)集的劃分規(guī)則,本實(shí)驗(yàn)將訓(xùn)練集和測試集按8 ∶2比例進(jìn)行劃分,即訓(xùn)練集計(jì)3 680幅,測試集計(jì)920幅。訓(xùn)練集用于網(wǎng)絡(luò)參數(shù)的訓(xùn)練,測試集用于目標(biāo)預(yù)測的性能評估。
為進(jìn)一步提升網(wǎng)絡(luò)的魯棒性,還采用數(shù)據(jù)增強(qiáng)的方法提高其泛化能力,使用相應(yīng)變換函數(shù),對輸入圖像進(jìn)行翻轉(zhuǎn)、裁剪和平移等操作。數(shù)據(jù)集通過迭代器輸入網(wǎng)絡(luò),迭代器在每次圖像輸入時會進(jìn)行隨機(jī)的圖像增強(qiáng)變換,進(jìn)一步擴(kuò)充了數(shù)據(jù)量。
根據(jù)SSD512的輸入數(shù)據(jù)要求,將輸入的.jpg文件調(diào)整到512×512的像素大小,并轉(zhuǎn)化為Array形式,再將像素點(diǎn)值矩陣X用式(1)減去均值,通過轉(zhuǎn)置函數(shù)轉(zhuǎn)置,以Tensor形式輸入到網(wǎng)絡(luò)中去。
X=X-(104.0,117.0,123.0)
(1)
SSD512網(wǎng)絡(luò)模型屬于前饋神經(jīng)網(wǎng)絡(luò),以VGG-16作為目標(biāo)檢測分類的基礎(chǔ)架構(gòu),輸入為512×512像素大小的圖片,在5層網(wǎng)絡(luò)后,丟棄全連接,并添加額外的卷積層,卷積層的大小逐層地遞減,以此提取不同粒度的特征。選取規(guī)定的7個多尺度下的卷積層(Conv)作為特征層(Feature map),在特征層每個單元上,按照不同長寬比分別提取4到6個先驗(yàn)框,總共可以獲取24 564個先驗(yàn)框。整個SSD網(wǎng)絡(luò)前向結(jié)構(gòu)如圖6所示。
圖6 SSD512 網(wǎng)絡(luò)前向結(jié)構(gòu)圖
(2)
位置損失Lloc是預(yù)測框l和真實(shí)標(biāo)簽回歸框g之間的平滑L1損失。平滑L1損失見式(3),由此推導(dǎo)的位置損失見式(4)。
(3)
(4)
(5)
(6)
根據(jù)上述位置和置信度損失,總體目標(biāo)函數(shù)可用兩者加權(quán)和表示為:
(7)
式中:c是SoftMax函數(shù)對每個類別的置信度;N是匹配先驗(yàn)框的數(shù)量;權(quán)重項(xiàng)a取1。
(1) 網(wǎng)絡(luò)模型的訓(xùn)練。圖像數(shù)據(jù)輸入網(wǎng)絡(luò)后,經(jīng)過網(wǎng)絡(luò)的前饋,可以求得總體目標(biāo)損失函數(shù)L(x,c,l,g)。結(jié)合損失函數(shù),通過SGD梯度下降方法,使得網(wǎng)絡(luò)不斷學(xué)習(xí),參數(shù)不斷更新,位置的回歸和類別的分類精確度不斷上升,最終能達(dá)到一個理想的模型權(quán)值。
(2) 網(wǎng)絡(luò)模型的測試。在模型訓(xùn)練的過程中,每隔一段時間對模型的精準(zhǔn)度進(jìn)行測試。測試時,將測試集圖片經(jīng)預(yù)處理輸入到訓(xùn)練過后的SSD512網(wǎng)絡(luò)模型中去,得到輸出預(yù)測框位置loc值和置信度conf值。對loc值進(jìn)行解碼(decode),并和24 564個先驗(yàn)框比較,通過篩選規(guī)則將conf值小于給定閾值的框篩除掉??梢缘玫胶芏嗷ハ嘀丿B的框,對這些框運(yùn)用NMS(非極大值抑制)算法[16],即可得到最終的框選結(jié)果。根據(jù)預(yù)測結(jié)果可以分析出此時網(wǎng)絡(luò)的學(xué)習(xí)情況。
NMS算法流程:假設(shè)有N個框,每個框的分類得分為Sb(1≤Sb≤N)。新建集合H,將N個框放入集合H中,同時初始化一個空集M,用來存放最優(yōu)框。① 將H中框box按得分Sb進(jìn)行排序,選出得分最高框box_m,將box_m移動至集合M中;② 遍歷H中的框box,分別與框box_m計(jì)算交并比(IOU),表示為:
(8)
③ 若IOU高于某個閾值,則將此框box從集合H中去除。不斷重復(fù)步驟①到步驟③,直到集合H為空,集合M即最終框選結(jié)果。
SSD算法的訓(xùn)練和測試都在Linux PC上完成,其軟件配置為Ubuntu 16.04、Pytorch(0.3.1)、CUDA(9.0),使用雙GPU服務(wù)器進(jìn)行并行訓(xùn)練。
由于隨機(jī)參數(shù)的初始化將消耗大量的算力和時間用于降低模型損失值,本實(shí)驗(yàn)采用了遷移學(xué)習(xí)方法。遷移學(xué)習(xí)所訓(xùn)練的卷積層具有提取通用圖像特征的本領(lǐng)[17],將經(jīng)大數(shù)據(jù)集ImageNet[18]數(shù)據(jù)下訓(xùn)練好的預(yù)訓(xùn)練模型,共享底層結(jié)構(gòu)權(quán)重參數(shù),然后修改其頂層網(wǎng)絡(luò)結(jié)構(gòu),在新任務(wù)訓(xùn)練中可以大大加速收斂速度。
考慮到硬件設(shè)備的條件限制、原始權(quán)重經(jīng)過大數(shù)據(jù)訓(xùn)練,以及礦石和泥塊本身存在多樣性不高的問題,經(jīng)過嘗試和調(diào)整,將各實(shí)驗(yàn)參數(shù)設(shè)置如表2所示。
表2 參數(shù)設(shè)置
本算法中用于評價目標(biāo)檢測算法的指標(biāo)如下:
(1) 精確率(Precision,P)。
(9)
式中:TP代表true positive,即正樣本中被預(yù)測正確的數(shù)量;FP代表false positive,即負(fù)樣本被預(yù)測為正樣本的數(shù)量。
(2) 召回率(Recall,R)。
(10)
式中:FN為false negative,即正樣本被錯誤地分為負(fù)樣本的數(shù)量。
(3) 平均準(zhǔn)確率(Average Precision,AP)。
(11)
式中:P(R)表示精準(zhǔn)率隨召回率變化的函數(shù)。
(4) 平均精確率均值(mean Average Precision,mAP)。
(12)
式中:N為檢測類別的數(shù)量。
本系統(tǒng)算法的評估使用的是SSD512網(wǎng)絡(luò)模型中的位置損失Lloc(式(4))和置信度損失Lconf(式(5)),在對訓(xùn)練的日志文件中的位置損失值和置信度損失值進(jìn)行提取后,繪制了如圖7所示的算法模塊的位置損失值和置信度損失值的散點(diǎn)圖。
(a)
(b)圖7 SSD512模型的損失值散點(diǎn)圖
本實(shí)驗(yàn)1次迭代輸入16幅數(shù)據(jù),總共迭代近30 000次。每迭代10次,記錄一下訓(xùn)練損失值。從圖7(a)位置損失和圖7(b)置信度損失可以看出,在0到5 000次迭代時,訓(xùn)練損失下降較慢,在迭代5 000次后,訓(xùn)練損失下降速度開始加快,在迭代10 000次后,訓(xùn)練損失趨于平滑其中位置損失值在0.15附近波動,置信度損失值在0.75附近波動,網(wǎng)絡(luò)趨于穩(wěn)定。
此外,每10個Epoch,對920幅的測試集進(jìn)行1次測試,測定出mAP。mAP變化曲線如圖8所示。
圖8 10個Epoch后的mAP大小曲線
可以看出,在35個Epoch之后,mAP數(shù)值趨于穩(wěn)定,在0.91附近波動。
從上述現(xiàn)象中可以看出,得益于遷移學(xué)習(xí)的特征提取優(yōu)勢,在較少的Epoch下,損失函數(shù)收斂,達(dá)到了91%的精準(zhǔn)度。具體為,在0到5 000次迭代訓(xùn)練的過程中,損失函數(shù)抖動較大,但整體呈現(xiàn)下降趨勢,此時神經(jīng)網(wǎng)絡(luò)正在學(xué)習(xí)礦石泥塊之間的特征。在5 000次之后,礦石泥塊之間區(qū)別的重要特征已經(jīng)學(xué)習(xí)完成,且由于本身數(shù)據(jù)集之間區(qū)分度不大,損失函數(shù)發(fā)生加速下降。在10 000次后模型進(jìn)入學(xué)習(xí)的平臺期,此時模型的識別mAP已經(jīng)達(dá)到91%左右,并不再上升,這表明模型的訓(xùn)練已經(jīng)完畢。
泥塊的識別mAP達(dá)到91%后不再繼續(xù)上升,主要原因是數(shù)據(jù)集中有部分礦石裹泥量過大,甚至已經(jīng)完全覆蓋礦石表面。這種礦石圖像從圖像角度,已經(jīng)和泥塊沒有任何差別,在標(biāo)注過程中依舊把這些礦石標(biāo)注為礦石,就會降低泥塊的識別率。這種情況在實(shí)驗(yàn)和實(shí)際情況中是不可避免的,只能通過前期高壓水槍的沖刷盡量沖去表面附著的大量泥巴。
圖片測試時,一幀圖片的檢測時間大約維持在0.05 s左右,能夠滿足實(shí)時性檢測要求。圖9為使用訓(xùn)練后的網(wǎng)絡(luò)識別的結(jié)果圖。
(a)
(b)圖9 網(wǎng)絡(luò)識別后的結(jié)果圖
圖9中,mud值代表泥塊置信度,其取值范圍為0~1,mud數(shù)值越大,表明是泥塊的可能性越大??梢钥闯觯W(wǎng)絡(luò)對傳入的一幅礦石泥塊混合物圖片進(jìn)行了識別,并對可能是泥塊的目標(biāo)進(jìn)行了標(biāo)注,標(biāo)注的數(shù)值越大,表明網(wǎng)絡(luò)判斷該目標(biāo)是泥塊的可能性越大。建立的模型已經(jīng)提取出了礦石、泥塊的特征,并可以根據(jù)學(xué)習(xí)到的特征精準(zhǔn)地識別出礦石和泥塊。礦石表面的附著的泥巴過多,與泥塊基本沒有區(qū)分度,則會發(fā)生置信度大于0.5的誤判。而整個的泥塊,無論是干是濕,都能夠產(chǎn)生置信度為1左右的正確判決。
本文提出了一種基于深度學(xué)習(xí)的普通金屬礦石快速分揀系統(tǒng),主要由圖像采集與傳輸裝置、云服務(wù)器等構(gòu)成。通過SSD512目標(biāo)檢測算法對輸入的礦石泥塊混合物數(shù)據(jù)集進(jìn)行學(xué)習(xí)實(shí)驗(yàn),結(jié)果顯示生成的模型能夠完成對礦石泥塊混合物的識別任務(wù),且識別準(zhǔn)確率達(dá)到了91%左右,具有良好的魯棒性。由于礦石泥塊識別對精度要求并不能追求完美,所以使用該模型作為系統(tǒng)的核心算法模塊是滿足要求的,能夠?qū)崿F(xiàn)整個系統(tǒng)裝置的良好運(yùn)作。
未來的算法研究方向主要著重于兩方面,一是繼續(xù)優(yōu)化網(wǎng)絡(luò)結(jié)構(gòu),使得檢測的準(zhǔn)確率得到更大的提升;二是研究網(wǎng)絡(luò)的壓縮算法,得到更輕型的網(wǎng)絡(luò),從而提高本文提出模型的識別效率,增加識別的實(shí)時性。