張志強, 馮偉, 趙小虎, 尤星懿
(1.山西霍爾辛赫煤業有限責任公司, 山西 長治 046600;2.礦山互聯網應用技術國家地方聯合工程實驗室, 江蘇 徐州 221008;3.中國礦業大學 信息與控制工程學院, 江蘇 徐州 221008)
刮板輸送機工作狀態的好壞決定著工作面的生產效率。刮板輸送機在全封閉式環境中進行煤料的加工且工作時間長,極易導致刮板出現故障,輕則影響刮板輸送機的正常工作,降低工作效率,重則造成重大財產損失[1-2]。因此,對刮板輸送機運行狀態進行監測具有重要意義。
傳統的刮板輸送機大多采用PLC控制器或壓力傳感器來監測其運行狀態。文獻[3]基于光纖光柵曲率傳感原理設計了用于監測刮板輸送機直線度的光纖光柵曲率傳感器,通過可視化系統輸出檢測結果,但該方法需要擬合重建三維曲線的詳細信息,獲取信息難度大,導致檢測結果與實際情況存在一定的偏差。文獻[4]提出以PLC為控制器,采用電流反饋閉環控制算法來保障刮板輸送機正常勻速運行,從而減少了刮板輸送機事故的發生,但當刮板輸送機長時間工作時,該方法容易導致雙電動機運行不同步現象,造成刮板輸送機不能正常運行,降低了工作效率。
近幾年圖像識別技術得到了快速發展,相比傳統的監測方法具有智能化、直觀化、自動化的優點。文獻[5]提出了一種數字孿生的卡爾曼濾波刮板輸送機位置狀態估計方法,利用卡爾曼濾波算法監測刮板輸送機狀況,監測精度較高,但該方法計算量大,嚴重依賴計算機硬件性能,實際應用效果不佳。文獻[6]應用灰度識別和特征搜索算法測量刮板輸送機的形態,并將結果運行在視頻服務器中,達到了監測的目的,但這種圖像識別方法受光照不足、煤塵多等因素影響,存在檢測結果不理想且視頻服務器成本高等問題。Jetson Nano是一個面向邊緣計算的嵌入式產品,含有GPU(Graphics Processing Unit,圖像處理單元)模塊,可以專門用來處理圖像,具有低成本、低功耗的優點,因此,設計出一種面向邊緣計算的圖像識別方法來檢測刮板全方位的運行狀態,對促進安全生產和減少機器事故的發生具有重要的實際意義[7]。將圖像算法部署到Jetson Nano時,主要利用CUDA(Compute Unified Device Architecture,統一計算設備架構)[8]將算法并行化來達到實時性要求。文獻[9-10]提出了對圖像特征提取進行CUDA加速實現的方法。文獻[11]基于并行協同線性參數,利用CUDA來加速Hough變換,使Hough變換檢測直線的運行時間大大減少,同時檢測精度卻保持不變[12]。文獻[13-14]提出了基于GPU的Hough變換并行化算法,提高了Hough變換的處理速度和直線的檢測精度。但Hough變換計算量大,如果直接利用Hough變換檢測刮板并將其部署在Jetson Nano上會導致執行效率低、實時性差,為此,將Hough變換算法并行化,結合Jetson Nano具有的內存與顯存共享機制,提出了一種可并行化Hough變換的面向邊緣計算的刮板檢測方法,在刮板檢測中,將Hough變換并行化及采用零拷貝傳輸數據,同時將刮板檢測的整體流程設計成CPU和GPU協同工作的模式,即刮板圖像預處理環節運行在CPU端,將可并行化的Hough變換運行在GPU端。在該模式下,可以充分利用Jetson Nano中的硬件資源,從而在Jetson Nano中實現刮板的實時檢測,解決了Hough變換和刮板檢測在邊緣計算平臺Jetson Nano上運行存在執行效率低、實時性差的問題。
本文采用Hough變換算法來檢測刮板狀態。首先檢測出刮板的直線方程,獲取直線方程的參數;然后運用極坐標轉換計算出刮板與鏈條之間的角度θ;最后根據角度θ來判斷刮板的狀態。刮板狀態如圖1所示。

圖1 刮板狀態Fig.1 Scraper state
由圖1可知,正常運行時刮板兩側鏈條是相互平行的,因此,計算刮板角度值只需計算出刮板與鏈條之間的角度θ即可。為了提高Hough變換的檢測精度和檢測速度,在求θ時對刮板的角度進行約束。由于攝像頭固定并實時采集刮板圖像,正常狀態下,刮板與鏈條之間近似垂直,經過多次測量得到刮板與鏈條之間的角度平均值為89.76°,而當卡槽松動時,刮板與鏈條之間的角度經過測量也不會小于85°。刮板發生傾斜時最多卡到鏈條的下一個卡槽中,此時的角度值最小為67.31°,為了便于計算,設θ的范圍為[60°,90°]。刮板檢測的整體流程如圖2所示。獲取直線參數和計算出刮板角度,并判斷該刮板角度是否在正常的閾值范圍,即[85°,90°],若小于設定的閾值則向工作人員報警,反之則正常運行。

圖2 刮板檢測流程Fig.2 Scraper detection process
在刮板圖像預處理環節需要將圖像轉換為灰度圖像,使其變成一個通道,以加快處理速度。從某選煤廠采集的某幀刮板圖像如圖3所示。從圖3可知,刮板與背景圖像存在大量的噪聲,需要進行高斯濾波操作來降噪處理,本文采用高斯卷積核為(11,11)和標準差為0的高斯濾波算法對圖像進行降噪處理。刮板圖像具有長而窄的特征,在處理環節很容易丟失重要的特征信息,因此,需要進行直方圖均衡化和膨脹腐蝕操作來增強刮板圖像的亮度,更顯著地突出刮板的特征信息[15]。在進行Hough變換前,需要對處理的刮板圖像進行二值化操作和Canny邊緣檢測[16]。

圖3 某幀刮板圖像Fig.3 Scraper image of a frame
Hough變換的基本思想來自于數學中點和線的對偶性,是在直角坐標系中建立一個圖像空間到參數空間的一種函數映射。直線中相關的映射關系如圖4所示,其中x,y表示點的坐標值,ρ表示該直線到坐標軸原點的距離,α為直線過坐標原點的垂線與坐標軸橫軸正方向的夾角。根據點和線的對偶性可知,在圖像中某一個像素點通過Hough變換后就會在參數空間得到一條正弦曲線,如果圖像中的邊緣像素點共線構成一條直線,那么映射到參數空間就構成了一條條相交的正弦曲線,相交點的坐標信息為圖像中共線的位置信息。
ρ=xcosα+ysinα
(1)

圖4 參數空間轉換Fig.4 Parameter space conversion
由Hough變換原理可知,Hough變換的計算量較大,若直接利用Hough變換檢測刮板,并將其部署在Jetson Nano上會導致執行效率低、實時性差,因此,本節在刮板檢測的基礎上進行了2個方面的改進:一方面利用CUDA將Hough變換算法并行化,減少Hough變換處理的時間;另一方面利用Jetson Nano本身固有的特性將可并行化的Hough變換運行在GPU上,將其他刮板圖像處理過程運行在CPU上,CPU與GPU之間的數據傳輸則采用零拷貝技術實現。
Hough變換本質上是一個累計投票及尋找最值的過程,采用的策略是將刮板圖像的各像素點的Hough映射過程及尋找累加器矩陣最值的過程采用可并行的處理方式,實現步驟如下:

d[θ][ρ]=d[θ][ρ]+1
(2)
第2步:采用計算像素點所在的四鄰域內的局部最大值的方法來尋找累加器中的最值。首先找出最值以及累加器中索引的位置,然后進行極坐標反變換計算出刮板角度并輸出結果。Hough變換在CUDA中的并行實現流程如圖5所示,其中分為2個部分,即計算復雜度高的Hough變換運行在GPU端(Device),而利用Hough變換檢測刮板的結果則在CPU端(Host)顯示。

圖5 Hough變換的CUDA并行實現Fig.5 CUDA parallel implementation of Hough transform
邊緣計算平臺Jetson Nano中包含有ARM架構的CPU和Maxwall架構的GPU,兩者共用一塊4 GB的物理內存。因此,可通過CUDA提供的零拷貝技術來傳輸數據,降低傳輸延遲,從而減少數據在CPU和GPU之間的傳輸時間,使刮板檢測整體的運行時間減少。零拷貝技術是一種內存映射,在GPU端可以直接使用CPU端的內存地址進行數據訪問,CPU與GPU的內存關系如圖6所示。

(a) 普通的數據拷貝

(b) 數據零拷貝
將可并行化Hough變換的面向邊緣計算的刮板檢測方法設計成CPU+GPU的協同分工模式,即將可并行化的Hough變換算法運行在GPU端,而刮板檢測的其他圖像處理部分運行在CPU上,相關實現流程如圖7所示。

圖7 面向邊緣計算的刮板檢測實現流程Fig.7 Edge computing-oriented scraper detection implementation process
為驗證檢測方法的可靠性,本文采用NVIDIA的邊緣計算平臺Jetson Nano為實驗平臺,硬件為四核Cortex-A57 CPU及Maxwell架構的GPU,含有128個CUDA核,4 GB內存,操作系統為Ubuntu18.04,CUDA版本為10.0,OpenCV 3.4.5。實驗數據來自山東泰安翟鎮選煤廠的刮板視頻數據,采用5種不同分辨率下的500幀刮板視頻,分別用Hough變換和可并行化Hough變換算法來進行刮板檢測實驗,實驗中除了分辨率不同,其他參數均保持一致。其中Hough變換處理的時間見表1,表中TC和TG分別表示500幀刮板視頻在CPU端和GPU端用Hough變換算法的平均檢測時間;TCi,TGi為第i幀檢測刮板圖像的用時;S為刮板視頻的總幀數;sp表示加速比。
(3)
(4)
sp=TC/TG
(5)

表1 Hough變換在Jetson Nano中的運行時間Table 1 Running time of Hough transform in Jetson Nano
從表1可看出,在刮板圖像分辨率較小時,采用可并行化的Hough變換算法相比原Hough變換算法檢測速度只提升了7倍,隨著刮板圖像分辨率的不斷增大,Hough變換算法運行在GPU端時,采用可并行化處理,其速度相較于運行在CPU端時提升了12倍。這說明可并行化的Hough變換算法明顯優于原Hough變換算法,并且可以明顯提高在Jetson Nano上刮板檢測的速度,為刮板檢測的整體過程減少了大量時間。
刮板角度的準確率實驗結果見表2。角度準確率用acc表示。漏檢率表示未檢測出刮板的次數占刮板視頻總幀數的比例,漏檢率越高,檢測效果越不理想,漏檢率用Re表示。
(6)
式中:Ai為第i幀刮板圖像計算出來的預測角度;S′為已經檢測到的刮板圖像幀的總數,取值為100;θ=89.76°。
(7)
式中:SN為沒有檢測到刮板的視頻幀數;ST為檢測到刮板的視頻幀數。

表2 刮板角度的準確率實驗結果Table 2 Experimental results of accuracy rate of scraper angle
從表2可看出,分辨率為640×360時,采用CPU+GPU(零拷貝)方法處理刮板圖像,幀率可達34.3幀/s,而直接利用Hough變換(CPU)檢測刮板的幀率為19.3幀/s,但是分辨率較低,使得角度檢測準確率低,而且漏檢率較高,這樣導致很多幀刮板圖像檢測不出刮板,不能滿足應用需求。隨著刮板圖像分辨率的增大,采用可并行Hough變換的面向邊緣計算的刮板檢測方法(CPU+GPU(零拷貝))的優勢得到明顯體現,在960×540的分辨率下,采用該方法檢測刮板圖像,幀率可達17.2幀/s,檢測角度準確率達96.3%,滿足實際應用需求。這正說明面向邊緣計算的刮板檢測方法充分利用了邊緣計算平臺Jetson Nano的GPU資源,發揮了CPU和GPU協調工作的優點,使得刮板檢測的整體性能得到明顯提升。分辨率為960×540的刮板圖像的實驗結果如圖8—圖10所示。從圖中可看出,刮板輸送機運行時,刮板某幀圖像是模糊的,但由于前期的刮板圖像預處理和Hough變換算法具有很好的魯棒性,無論在CPU端運行還是在CPU和GPU協同分工模式下運行均可以準確地檢測出刮板,并計算出刮板與鏈條之間的夾角。

圖8 CPU端運行Fig.8 CPU side operation
在CPU和CPU+GPU、CPU+GPU(零拷貝)情況下的運行速度比較情況如圖11所示。從圖11可看出,可并行化Hough變換的面向邊緣計算的刮板檢測方法(CPU+GPU(零拷貝))相比直接使用Hough變換算法(CPU)檢測刮板的速度提升了1.5倍以上,改進效果明顯。結合表2,當分辨率為1 920×1 080甚至更大時,Jetson Nano中圖像檢測幀率均低于10幀/s,無法滿足實時性要求。這是因為在Jetson Nano中CUDA核心只有128個,GPU的性能已經達到極限,無法再繼續處理更大分辨率的刮板圖像。

圖9 CPU+GPU端運行Fig.9 CPU+GPU side operation

圖10 CPU+GPU端(零拷貝)運行Fig.10 CPU+GPU side (zero copy) operation
針對Hough變換檢測刮板及部署到低功耗、低成本的嵌入式Jetson Nano上存在執行效率低、實時性差等問題,基于Jetson Nano提出了一種可并行化Hough變換的面向邊緣計算的刮板檢測方法。在刮板檢測中,將Hough變換并行化并采用零拷貝傳輸數據,同時將刮板檢測的整體流程設計成CPU和GPU協同工作的模式,將刮板圖像的預處理環節運行在CPU端,將可并行化的Hough變換運行在GPU端,通過這種模式來充分利用Jetson Nano的硬件資源。實驗結果表明,在Jetson Nano中,對于分辨率為960×540的刮板圖像,采用可并行化的Hough變換算法比原Hough變換算法檢測速度提升了10倍,刮板圖像檢測的幀率可達17幀/s,檢測刮板角度準確率達96.3%,滿足實時性要求。