馬世歡,李 偉
(河南工業(yè)職業(yè)技術(shù)學(xué)院電子信息工程學(xué)院,河南 南陽(yáng) 473000)
隨著信息技術(shù)的發(fā)展和推廣,人工智能技術(shù)逐漸滲透到各個(gè)傳統(tǒng)產(chǎn)業(yè)領(lǐng)域,智能化水平成為衡量現(xiàn)代企業(yè)綜合實(shí)力的重要標(biāo)志[1]。過(guò)磅系統(tǒng)是現(xiàn)代企業(yè)稱(chēng)量的主要組成部分。特別對(duì)于涉及大宗商品、原材料和商品的流通領(lǐng)域,過(guò)磅系統(tǒng)的效率和準(zhǔn)確性對(duì)企業(yè)的正常運(yùn)轉(zhuǎn)起著非常重要的作用[2-3]。
現(xiàn)代化的過(guò)磅系統(tǒng)充分利用信息技術(shù)的進(jìn)步,以人工智能、物聯(lián)網(wǎng)、云計(jì)算等先進(jìn)科技對(duì)傳統(tǒng)的過(guò)磅系統(tǒng)進(jìn)行改造。
我國(guó)現(xiàn)有的過(guò)磅系統(tǒng)正處于向信息化過(guò)渡的起步階段,其穩(wěn)定性、兼容性以及用戶(hù)體驗(yàn)都需要不斷改善。充分利用信息技術(shù)的進(jìn)步,將人工智能、物聯(lián)網(wǎng)、云計(jì)算等先進(jìn)科技應(yīng)用于改造升級(jí)傳統(tǒng)的過(guò)磅系統(tǒng),已逐漸成為發(fā)展趨勢(shì)。越來(lái)越多的科研工作者對(duì)此進(jìn)行了深入的研究。本文以提升企業(yè)智能化水平為目標(biāo),設(shè)計(jì)、開(kāi)發(fā)了基于計(jì)算機(jī)視覺(jué)的無(wú)人值守過(guò)磅系統(tǒng)。該系統(tǒng)改變了傳統(tǒng)過(guò)磅系統(tǒng)的工作模式,降低了系統(tǒng)安裝和維護(hù)的復(fù)雜度和成本,提高了過(guò)磅速度,保證了稱(chēng)重?cái)?shù)據(jù)的準(zhǔn)確性和系統(tǒng)的可擴(kuò)展性,能夠幫助企業(yè)實(shí)現(xiàn)過(guò)磅流程的智能化、數(shù)據(jù)管理的遠(yuǎn)程化。
目前廣泛使用的無(wú)人值守過(guò)磅系統(tǒng)[4]主要通過(guò)傳感器取代人工來(lái)觀(guān)察、判斷車(chē)輛的上磅情況,從而實(shí)現(xiàn)無(wú)人操作。工作時(shí),系統(tǒng)自動(dòng)進(jìn)行稱(chēng)重工作,無(wú)需工作人員管理。無(wú)人值守過(guò)磅系統(tǒng)的工作流程如下。
過(guò)磅系統(tǒng)管理員先將卡號(hào)、駕駛員姓名、車(chē)牌號(hào)、貨名等信息輸入系統(tǒng),然后向駕駛員發(fā)卡。汽車(chē)開(kāi)近地磅時(shí),駕駛員刷卡。系統(tǒng)驗(yàn)證其信息有效后,打開(kāi)道閘供汽車(chē)駛上地磅。當(dāng)汽車(chē)完全在地磅上時(shí),對(duì)射系統(tǒng)檢測(cè)到車(chē)尾上磅信號(hào),放下道閘,禁止下一輛車(chē)上磅。當(dāng)車(chē)輛停穩(wěn)后,系統(tǒng)記錄車(chē)輛的實(shí)時(shí)重量,同時(shí)將抓拍的車(chē)輛圖像存入系統(tǒng)。如果有打印磅單的需要,則打印出磅單,并抬起道閘,讓已過(guò)磅的車(chē)輛通過(guò)。最后,落下出口道閘,表明過(guò)磅流程結(jié)束。
傳統(tǒng)的無(wú)人值守過(guò)磅系統(tǒng)主要利用地感線(xiàn)圈和紅外線(xiàn)對(duì)射來(lái)檢測(cè)車(chē)輛是否在合適的稱(chēng)重位置。當(dāng)車(chē)輛駛?cè)氲匕鯐r(shí),地磅尾部和頭部的紅外線(xiàn)對(duì)射,檢測(cè)車(chē)身是否完全在地磅上。地磅頭部地感線(xiàn)圈檢測(cè)車(chē)輛完全駛離稱(chēng)重平臺(tái)后,關(guān)閉升降桿。
針對(duì)上述問(wèn)題,基于計(jì)算機(jī)視覺(jué)的過(guò)磅系統(tǒng)通過(guò)人工智能技術(shù)進(jìn)行車(chē)輛運(yùn)行狀態(tài)的識(shí)別和位置的判斷,從而避免大量傳感器的安裝。以下就傳統(tǒng)無(wú)人值守過(guò)磅系統(tǒng)和基于計(jì)算機(jī)視覺(jué)的無(wú)人值守過(guò)磅系統(tǒng)進(jìn)行對(duì)比分析。兩種過(guò)磅系統(tǒng)的對(duì)比如表1所示。
基于計(jì)算機(jī)視覺(jué)的無(wú)人值守過(guò)磅系統(tǒng)通過(guò)分析傳統(tǒng)無(wú)人值守過(guò)磅系統(tǒng)的工作流程,采用計(jì)算機(jī)視覺(jué)技術(shù)、人工智能技術(shù)和物聯(lián)網(wǎng)技術(shù)對(duì)過(guò)磅流程進(jìn)行重構(gòu)[5]。系統(tǒng)工作流程如圖1所示。
圖1 系統(tǒng)工作流程圖
系統(tǒng)由地磅、Wi-Fi攝像頭、稱(chēng)重?cái)?shù)據(jù)采集模塊、車(chē)牌識(shí)別模塊、物聯(lián)網(wǎng)平臺(tái)、車(chē)輛運(yùn)動(dòng)跟蹤模塊和攝像頭、計(jì)算機(jī)主控模塊和云存儲(chǔ)器組成。
系統(tǒng)總體架構(gòu)如圖2所示。
圖2 系統(tǒng)總體架構(gòu)圖
以下分別介紹各模塊的具體功能。
稱(chēng)重?cái)?shù)據(jù)采集模塊實(shí)時(shí)采集稱(chēng)重平臺(tái)上的數(shù)據(jù),并通過(guò)消息隊(duì)列遙測(cè)傳輸(message queuing telemetry transport,MQTT)協(xié)議發(fā)布到物聯(lián)網(wǎng)平臺(tái)。計(jì)算機(jī)主控模塊會(huì)訂閱該消息,從而獲得重量數(shù)據(jù)。稱(chēng)重?cái)?shù)據(jù)采集模塊主要包括稱(chēng)重傳感器和物聯(lián)網(wǎng)芯片。稱(chēng)重傳感器可將測(cè)重平臺(tái)傳遞過(guò)來(lái)的模擬信號(hào)轉(zhuǎn)換成相應(yīng)的數(shù)字信號(hào),是系統(tǒng)中采集重量數(shù)據(jù)的基礎(chǔ)組件。
車(chē)輛運(yùn)動(dòng)跟蹤模塊負(fù)責(zé)采集車(chē)輛通過(guò)地磅的狀態(tài)信息,包括車(chē)輛的運(yùn)動(dòng)狀態(tài)和位置,并將該信息傳遞給計(jì)算機(jī)主控模塊,以便計(jì)算機(jī)主控模塊進(jìn)行后續(xù)的工作。跟蹤模塊和計(jì)算機(jī)主控模塊都部署在安裝了Android操作系統(tǒng)的嵌入式設(shè)備上,利用設(shè)備自帶的攝像頭采集圖像信息,并使用卷積神經(jīng)網(wǎng)絡(luò)的目標(biāo)檢測(cè)算法確定車(chē)輛的位置[6]。
車(chē)牌識(shí)別功能模塊負(fù)責(zé)保存車(chē)牌圖片并識(shí)別車(chē)牌。它和物聯(lián)網(wǎng)平臺(tái)都部署在一個(gè)樹(shù)莓派4(Raspberry Pi 4,RPI4)上。當(dāng)車(chē)輛上磅并停穩(wěn)后,模塊首先根據(jù)車(chē)輛的運(yùn)動(dòng)方向,從相應(yīng)的Wi-Fi攝像頭獲取車(chē)牌信息;然后利用計(jì)算機(jī)視覺(jué)算法識(shí)別車(chē)牌,并將該信息傳遞給計(jì)算機(jī)主控模塊[7]。
計(jì)算機(jī)主控功能模塊是系統(tǒng)的核心模塊,負(fù)責(zé)整個(gè)流程的控制。該模塊首先通過(guò)車(chē)輛運(yùn)動(dòng)跟蹤模塊傳遞過(guò)來(lái)的信息,結(jié)合事先設(shè)置的參照物信息,判斷是否有車(chē)輛上磅并且已經(jīng)停穩(wěn);然后,對(duì)稱(chēng)重?cái)?shù)據(jù)采集模塊傳遞過(guò)來(lái)的重量信息進(jìn)行觀(guān)測(cè);當(dāng)重量穩(wěn)定后,模塊記錄該數(shù)據(jù)作為最終的重量數(shù)據(jù),同時(shí)通知車(chē)牌識(shí)別功能模塊保存車(chē)牌圖片并識(shí)別車(chē)牌;最后,保存重量和車(chē)牌信息到本地并上傳到云端。
系統(tǒng)工作時(shí),先給稱(chēng)重傳感器、物聯(lián)網(wǎng)芯片、樹(shù)莓派上電。樹(shù)莓派啟動(dòng)成功后,用戶(hù)啟動(dòng)Android設(shè)備上的自動(dòng)過(guò)磅APP。APP啟動(dòng)成功后,使用手動(dòng)過(guò)磅功能可以獲得系統(tǒng)中一些關(guān)鍵軟硬件的工作狀況,包括物聯(lián)網(wǎng)服務(wù)、樹(shù)莓派Web服務(wù)、地磅傳感器和物聯(lián)網(wǎng)芯片等;同時(shí),使用手動(dòng)過(guò)磅功能也可以進(jìn)行基本的過(guò)磅稱(chēng)重操作。
使用無(wú)人值守過(guò)磅功能時(shí),首先通過(guò)觸屏操作,確定地面基線(xiàn)和地磅基線(xiàn)。當(dāng)車(chē)輛進(jìn)入攝像頭范圍后,系統(tǒng)檢測(cè)車(chē)輛并進(jìn)行跟蹤,在屏幕右側(cè)實(shí)時(shí)顯示車(chē)輛運(yùn)行狀態(tài),狀態(tài)包括左邊上磅、右邊上磅、左邊下磅、右邊下磅、等待上磅、開(kāi)始稱(chēng)重和穩(wěn)定等。當(dāng)車(chē)輛的狀態(tài)符合稱(chēng)重要求時(shí),系統(tǒng)自動(dòng)保存實(shí)時(shí)重量,并進(jìn)行車(chē)牌識(shí)別和車(chē)牌截圖。車(chē)牌截圖為手動(dòng)修改識(shí)別錯(cuò)誤提供了依據(jù)。
在APP端和微信小程序端,管理員可查詢(xún)過(guò)磅數(shù)據(jù)、修改識(shí)別錯(cuò)誤的車(chē)牌,以及處理不合規(guī)的過(guò)磅數(shù)據(jù)(如車(chē)輛沒(méi)有按照要求兩次過(guò)磅等)。
地磅系統(tǒng)的部署安裝位置比較特殊,有可能是在比較偏僻的采石場(chǎng)、礦場(chǎng)、礦山等地,沒(méi)有固定的網(wǎng)絡(luò)。因此,過(guò)磅數(shù)據(jù)需要根據(jù)情況采用不同的上傳模式。根據(jù)這個(gè)特點(diǎn),系統(tǒng)的數(shù)據(jù)存儲(chǔ)分為本地存儲(chǔ)和云端存儲(chǔ)。本地?cái)?shù)據(jù)庫(kù)采用Android自帶的SQLite數(shù)據(jù)庫(kù)。云端使用Bmob后端云存儲(chǔ)數(shù)據(jù)。
樹(shù)莓派4具有強(qiáng)大的運(yùn)算能力,體積小且價(jià)格低廉。所以本文選擇樹(shù)莓派4部署車(chē)牌識(shí)別程序、物聯(lián)網(wǎng)服務(wù)和Web服務(wù)[8]。物聯(lián)網(wǎng)服務(wù)使用EMQX。EMQX是發(fā)布訂閱模式的開(kāi)源MQTT消息服務(wù)器。它具備功能強(qiáng)大的管理控制臺(tái),并提供了基于樹(shù)莓派平臺(tái)的版本。Web服務(wù)使用Flask構(gòu)建。Flask是由Python實(shí)現(xiàn)的Web微框架,可提供車(chē)牌圖片的Web服務(wù)。
ESP8266是性?xún)r(jià)比較高的Wi-Fi模塊,非常適合物聯(lián)網(wǎng)領(lǐng)域的項(xiàng)目[9]。MicroPython已經(jīng)實(shí)現(xiàn)了ESP8266基本硬件資源接口,所以系統(tǒng)使用在ESP8266上運(yùn)行MicroPython,實(shí)現(xiàn)重量數(shù)據(jù)的采集,并向樹(shù)莓派上的物聯(lián)網(wǎng)服務(wù)發(fā)送消息。
從一輛車(chē)上磅到下一輛車(chē)上磅中間最快也有大約1 min的間隔,可以降低對(duì)車(chē)牌識(shí)別算法時(shí)間復(fù)雜度的要求。這允許使用樹(shù)莓派這種計(jì)算能力有限的設(shè)備。HyperLPR是開(kāi)源的、基于深度學(xué)習(xí)的中文車(chē)牌識(shí)別庫(kù)。它基于端到端的Sequence模型,無(wú)需進(jìn)行字符分割,具有識(shí)別速度快、識(shí)別率高和輕量的優(yōu)勢(shì)。所以,車(chē)牌識(shí)別使用HyperLPR。
算法需要能夠運(yùn)行在Android設(shè)備上,方便移植和部署。TensorFlow Lite是Google公司推出的針對(duì)移動(dòng)設(shè)備的輕量級(jí)機(jī)器學(xué)習(xí)解決方案,允許在低延遲的移動(dòng)設(shè)備上運(yùn)行機(jī)器學(xué)習(xí)模型,還支持硬件加速Android神經(jīng)網(wǎng)絡(luò)應(yīng)用程序接口??紤]到目標(biāo)檢測(cè)是在嵌入式Android設(shè)備上進(jìn)行的,所以使用TensorFlow Lite框架。目標(biāo)檢測(cè)算法選擇SSD,以滿(mǎn)足系統(tǒng)對(duì)mAP和fps這兩個(gè)指標(biāo)的要求[10]。目標(biāo)跟蹤算法使用OpenCV自帶的算法實(shí)現(xiàn)。
本文綜合運(yùn)用計(jì)算機(jī)視覺(jué)技術(shù)和物聯(lián)網(wǎng)技術(shù),開(kāi)發(fā)了一種無(wú)人值守的自動(dòng)過(guò)磅系統(tǒng)。計(jì)算機(jī)視覺(jué)技術(shù)主要用于車(chē)牌識(shí)別和車(chē)輛檢測(cè)。物聯(lián)網(wǎng)技術(shù)主要應(yīng)用于控制指令的傳輸。該系統(tǒng)簡(jiǎn)化了過(guò)磅的工作流程,降低了系統(tǒng)安裝和調(diào)試的工作量,減少了系統(tǒng)需要的硬件設(shè)備數(shù),節(jié)省了布線(xiàn)材料和人力成本。
對(duì)于工礦企業(yè),基于計(jì)算機(jī)視覺(jué)的無(wú)人值守過(guò)磅系統(tǒng)的使用提高了過(guò)磅效率,能將計(jì)量誤差控制在3‰以?xún)?nèi),降低了企業(yè)成本,提高了企業(yè)的信息化水平,為企業(yè)的智能化提供了有力支撐。