滕新棟,唐宇豪,馬興錄,李曉旭
1(中華人民共和國青島海關(guān),青島 266426)
2(青島科技大學 信息科學技術(shù)學院,青島 266061)
最近幾年,人工智能正在迅速崛起,機器視覺是人工智能正在快速發(fā)展的一個分支.通俗地講,機器視覺就是用機器代替人眼來做測量和判斷; 機器視覺系統(tǒng)是通過攝像頭等圖像采集裝置將被攝取的目標轉(zhuǎn)換成圖像信號,通過對圖像的像素特征進行處理運算得到目標的特征進而根據(jù)結(jié)果來進行下一步操作[1,2].特別是在工業(yè)領(lǐng)域,現(xiàn)已逐漸應(yīng)用在一線,其次主要應(yīng)用于半導體、電子制造、制藥、包裝等領(lǐng)域.如今在汽車制造乃至新能源行業(yè),機器視覺技術(shù)的應(yīng)用也正在逐步發(fā)展[3-11].
在大部分港口、機場等出入境的場所,對集裝箱內(nèi)病媒生物的檢測是非常關(guān)鍵的環(huán)節(jié)[12],特別是在特殊的疫情期間,在保證集裝箱不含病源的前提下,才能確保集裝箱的安全出入境.面對數(shù)量多且空間狹窄的集裝箱,為了減少疫情傳播,解決病媒生物檢測問題,需要一款具有檢測功能的智能機器人幫助工作人員快速地進行病媒生物的檢測及清理.
本系統(tǒng)將病媒生物檢測系統(tǒng)與智能探尋抓取機器人相結(jié)合,以Python 語言作為編程核心,設(shè)計了檢測本地視頻和遠程視頻、檢測報警以及檢測記錄的顯示和存儲等功能.針對現(xiàn)如今人工檢測繁鎖的局限性,通過深度學習YOLOv5 訓練模型實現(xiàn)了病媒生物的檢測,保障了出入境的安全性,提高了集裝箱的通關(guān)效率.
此集裝箱病媒生物檢測系統(tǒng)分為4 個模塊.分別是本地視頻檢測模塊、遠程視頻傳輸及實時檢測模塊、檢測報警模塊、檢測記錄顯示和存儲模塊,如圖1所示.具體的實現(xiàn)可分為檢測界面的設(shè)計、檢測病媒生物的實現(xiàn)、遠程視頻傳輸?shù)膶崿F(xiàn)、檢測報警模塊的實現(xiàn)、檢測記錄顯示和存儲的實現(xiàn).
圖1 系統(tǒng)設(shè)計結(jié)構(gòu)圖
所涉及的硬件智能探尋抓取機器人,屬于隱匿病媒生物監(jiān)測技術(shù)領(lǐng)域,解決了現(xiàn)有裝置不能夠識別隱匿病媒生物的種類的問題; 其技術(shù)特征是: 包括抓取機構(gòu)、視覺檢測裝置和底盤,所述底盤的左側(cè)安裝有抓取機構(gòu),底盤的上方設(shè)置有視覺檢測裝置,視覺檢測裝置上安裝有探照燈和監(jiān)控相機,所述探照燈和監(jiān)控相機與視覺檢測裝置的連接方式為卡接,底盤的底部安裝有多個滾輪,能夠快速探尋識別是否存活隱匿病媒生物,提高了對隱匿病媒生物的抓取效率,從而避免隱匿病媒生物污染集裝箱[13].
系統(tǒng)正常工作流程為: 獲取遠程視頻或本地視頻后,顯示在PC 端界面,識別視頻,當在某一幀圖片中檢測到病媒生物時,將其標注并報警,同時將圖片保存到文件夾中并顯示在界面中,后續(xù)工作人員可通過操控現(xiàn)場機器人進行病媒生物的抓取和清理.
此集裝箱病媒生物檢測系統(tǒng)界面的設(shè)計主要是采用Python 庫中的PyQt5,它是最強大的GUI 庫之一[14],具體使用到QtCore、QtGui、QtWidgets,在PyCharm中使用額外工具(external tools)QtDesigner 進行界面設(shè)計.
整個檢測界面的風格采用暗色調(diào),界面整體布局具體主要分為4 個區(qū)域: 檢測視頻實時顯示區(qū)域,在檢測本地視頻或者接收遠程視頻時,將視頻顯示在該label 中; 報警信息顯示區(qū)域,在檢測到病媒生物時,將檢測時的具體信息輸出在該listview 中; 檢測記錄顯示區(qū)域,在檢測到病媒生物時,將保存在文件夾中的圖片顯示該listview 中; 檢測模式選項區(qū)域,在界面的右下方設(shè)置兩個按鈕,分別命名為遠程視頻和本地視頻,用來控制檢測的具體對象.該UI 設(shè)計界面如圖2 所示.
圖2 UI 設(shè)計界面圖
檢測病媒生物的核心是利用PyTorch 訓練YOLOv5訓練集也就是自定義病媒生物數(shù)據(jù)集訓練.
YOLOv5 是一種基于深度學習的one stage 檢測方法[15].YOLOv5 的模型結(jié)構(gòu)如圖3 所示.
圖3 YOLOv5 模型結(jié)構(gòu)圖
YOLOv5 模型結(jié)構(gòu)主要分布為4 個部分,分別是輸入端、Backbone、Neck、Head 輸出端,其共有4 個版本分別是 YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x,主要差異在于depth_multiple 和width_multiple 不同即模型的深度和寬度不同.
此集裝箱病媒生物檢測系統(tǒng)在YOLOv5 的基礎(chǔ)上進行了改進,使用了DIoU、CIoU[15].DIoU 是將目標與anchor (錨框)之間的距離,重疊率以及尺度標準都考慮進去,使目標框回歸變得更加穩(wěn)定,不會像IoU 和GIoU 一樣出現(xiàn)訓練過程中發(fā)散等問題.在將DIoU 替換普通的IoU 評價策略,應(yīng)用于NMS 中,即DIoU_nms,會使得NMS 得到的結(jié)果更加合理有效,方便檢測重疊的目標,而且可以直接最小化兩個目標框的距離,加快收斂速度.CIoU 是在DIoU 的基礎(chǔ)上進行改進.兩個函數(shù)的使用不但有效提高了檢測速率,也能夠保證檢測精度.
原始版YOLOv5 模型與改進版YOLOv5 模型在經(jīng)過實驗后對比結(jié)果如圖4 所示.
圖4 算法對比結(jié)果圖
在使用了改進YOLOv5 的基礎(chǔ)上又增加了epoch(迭代次數(shù))以提高檢測準確度[16].檢測結(jié)果如圖5,其中,圖5(a)-圖5(d)和圖5(i)-圖5(l)為增加前結(jié)果,其余為增加后結(jié)果.
圖5 檢測結(jié)果圖 (其中,橫坐標表示Epoch 數(shù)量)
遠程視頻傳輸?shù)膶崿F(xiàn)分為兩部分,分別是視頻發(fā)送與接收以及數(shù)據(jù)處理.
視頻的發(fā)送與接收基于現(xiàn)場配有嵌入式WiFi 模塊的機器人實時捕獲的畫面,視頻流傳輸?shù)暮诵脑谟赩S 運行視頻獲取程序與檢測程序進行網(wǎng)絡(luò)通信[17],VS 作為發(fā)送端實時發(fā)送視頻流,檢測程序作為接收端接受視頻.在機器人上安裝WiFi 模塊的小型嵌入式系統(tǒng),連接WiFi,運行VS 程序獲取現(xiàn)場視頻,運用TCP[18]將VS 與檢測程序?qū)崿F(xiàn)網(wǎng)絡(luò)通信,檢測程序接收實時的視頻流,實現(xiàn)遠程視頻的實時傳輸.
數(shù)據(jù)處理是在檢測程序接收到視頻流數(shù)據(jù)之后,利用Numpy[19]進行相應(yīng)的數(shù)據(jù)處理,使得到的數(shù)據(jù)轉(zhuǎn)換成視頻并且能夠讀入檢測模型,讀入模型之后開始進行檢測.
當檢測病媒生物時,需要及時提醒工作人員進行抓取清理,防止病媒生物污染集裝箱貨物產(chǎn)生其他不必要的損失.因此需要設(shè)置檢測報警模塊,及時在檢測界面顯示報警信息.時間信息尤為重要,準確的時間可以方便工作人員后續(xù)查看錄像,精準地找到病媒生物存在的時間區(qū)域,方便進一步分析調(diào)查.滾動式信息的報警方式可以更加顯著的提醒工作人員及時處理.檢測報警模塊的具體實現(xiàn)主要是利用Python 自帶的localtime 函數(shù)獲取具體時間,進一步使用strftime 函數(shù)將時間信息格式轉(zhuǎn)換為年月日,后續(xù)綁定組件listview,使報警信息可以顯示在檢測界面的固定區(qū)域.
當檢測到病媒生物時,需要截取這一幀圖片作為檢測記錄,這張圖片可以再次顯示,也可以定向保存到文件夾,方便工作人員后期分析統(tǒng)計.檢測記錄截取之后,綁定界面組件listview 和model,使其能夠顯示在檢測界面視頻下方,并利用OpenCV 的imwrite 將檢測記錄保存到本地文件夾中,并以報警信息的具體檢測時間命名.當視頻區(qū)域未顯示視頻時,可以通過點擊圖片將圖片顯示到視頻顯示區(qū)域,也可以打開存儲檢測記錄的文件夾打開圖片,進行詳細查看.
經(jīng)過一系列測試,此集裝箱病媒生物檢測系統(tǒng)的開發(fā)已達到預期目標,并且此系統(tǒng)的功能性、準確性以及速度均達到了預期水平.完整的實現(xiàn)了集裝箱內(nèi)病媒生物的檢測以及檢測之后的報警、存儲和抓取清理一整套流程,經(jīng)過多次測試,其功能實現(xiàn)如圖6 所示; 完整實現(xiàn)打印發(fā)現(xiàn)病媒生物時間及顯示圖像,將圖像信息保存在電腦的固定文件夾中.功能完善且運行順暢.
圖6 功能實現(xiàn)圖
根據(jù)實際情況,在此系統(tǒng)只對部分實驗數(shù)據(jù)結(jié)果進行展示.精度測試結(jié)果如表1 所示,展示了在光線充足和不充足的條件下,對病媒生物分別檢測10 次、20 次、40 次的平均檢測精度結(jié)果.
表1 平均檢測結(jié)果
在準確性方面主要是體現(xiàn)在識別精度,在光線充足的條件下,平均精度可以達到0.9 左右,即使是在光線不充足的條件下,對病媒生物的識別平均精度也能達到0.8 以上; 在速度方面則是體現(xiàn)在對病媒生物的識別時間,單個病媒生物的識別時間控制在2 s 以內(nèi).
集裝箱病媒生物檢測系統(tǒng)是一種現(xiàn)代化的檢測管理方式,結(jié)合了深度學習的概念,代表了出入境檢測自動化的發(fā)展趨勢.圍繞機器視覺技術(shù)、網(wǎng)絡(luò)通信技術(shù)、深度學習方法等計算機視覺領(lǐng)域的相關(guān)知識,經(jīng)過大量的研究,采用了YOLOv5 的訓練模型方案并開發(fā)實現(xiàn),經(jīng)過多次調(diào)試,最終實現(xiàn)了集裝箱病媒生物的檢測.此外,該系統(tǒng)核心編程語言為Python,代碼可移植性高,擴展性良好,對二次開發(fā)友好.系統(tǒng)針對集裝箱傳統(tǒng)人工檢測方式的弊端,在智能自動檢測方面不懈努力,對工業(yè)智能化、自動化具有重要意義.