崔博森, 曾慶宇, 竇蓉蓉
(南京大學電子科學與工程學院,南京 210023)
在工業4.0 時代,將物聯網、人工智能等新興科技應用到工業生產已成為趨勢,信息系統和物理系統的深度融合使智能工廠在工業4.0 時代成為可能[1]。設備智能檢測仍然是智能工廠建設的短板,以實時檢測電動螺絲刀工作狀態為例,應用扭矩傳感器實現控制電動螺絲刀鎖緊螺母的精度[2],但動輒10 萬的售價,使得絕大部分中小企業的智能化改造成本劇增,不具備實用價值。
針對工業生產中判斷螺絲刀工作狀態與螺絲擰緊的實際問題[2],提出一種基于百度飛槳PaddlePaddle深度學習框架下的語義分割PaddleSeg 和有限狀態機(Finite State Machine,FSM)的電動螺絲刀工作狀態檢測算法,并設計硬件實驗平臺,以98%準確率,1 s 以內延時,實現對于螺絲刀工作狀態的實時檢測與螺絲擰緊程度的判斷。
本系統總體設計框架如圖1 所示。主要包括視覺傳感模塊、算法執行服務器和網頁端可視化。

圖1 系統總體設計
視覺傳感模塊采用1 080 p、30 f/s 的單目視覺攝像頭實時采集圖像,在計算平臺算力不足的情況下可以使用480 p、720 p 的攝像頭采集圖像。算法執行服務器負責執行PaddleSeg圖像語義分割和FSM識別算法,二者共同實現對智能工廠螺絲的打入情況進行檢測,其輸出結果主要分類為“合格產品”與“不合格產品”,方便智能工廠工作人員進行處理。
機器學習領域中的PaddlePaddle深度學習框架與Tensorflow框架功能類似,前者具有中文生態的天然優勢[3]。PaddlePaddle內部提供了PaddleSeg 語義分割模型的算法應用程序接口(Application Programming,API),調用該方法可將圖像信息按類分割,本系統把圖片中的螺絲刀和螺絲按類分割。PaddlePaddle的AI Studio平臺給用戶提供Cuda GPU用于訓練模型,GPU訓練模型相比于CPU有更快的速度,極大節省用戶在模型訓練上的時間。網頁端可視化用于展示算法執行服務器的輸出結果,并將結果上傳至云端進行數據管理,輸出結果將呈現在特定的網頁界面上,方便工廠負責人查看,實現對工廠產品的管理,并及時糾正工廠可能存在的異常情況。
語義分割是將圖像像素按照不同的表達含義進行分組[4]。是一種層次結構復雜的任務,也是一個核心計算機視覺問題,對現實場景的理解與分析[4],讓計算機完成需要對場景有完整理解的任務。語義分割可采用PaddlePaddle開發的PaddleSeg語義分割庫[5],其優勢在于內部已預先配置如DeepLabv3 +,U-Net 和ICNet等主流分割模型,方便用戶通過統一的預配置完成語義分割模型的訓練與部署[5]。
調用PaddleSeg 模塊需要構造專門的螺絲刀和螺絲的數據集,數據集要用labelme 工具對圖片做特殊標記。數據集搭建完畢后,在AI Studio遠程深度學習平臺上利用PaddleSeg API訓練圖像分割模型,將攝像頭拍攝圖像中的螺絲刀和螺絲分割,并用不同的顏色標記,得到分類圖像。
采用ICNet模型實現PaddleSeg語義分割效果,如圖2 所示。將智能工廠的工作圖像作為輸入傳入語義分割模塊,模塊會根據“電動螺絲刀”和“螺絲”輸出分割圖像,圖中綠色標記為電動螺絲刀,紅色標記為螺絲。

圖2 PaddleSeg語義分割圖像
電動工具的操作都是循環的機械操作,其工作流程都是固定模式,故可以采用FSM來記錄電動工具的工作狀態。
以“電動螺絲刀”的工作狀態為例,FSM模塊內部狀態轉移情況,如圖3 所示。FSM內部共有6 種狀態:空(IDLE)、螺絲刀下降(Screwdriver_is_falling)、貼合(Docking)、螺絲刀返回(Back _ Return)、打入成功(done_successful)和打入失敗(done_with_error)。

圖3 狀態機工作流程圖
FSM算法以PaddleSeg 模塊的語義分割圖像作為輸入,輸出為該時刻螺絲刀和螺絲的工作狀態。在FSM算法模塊收到來自語義分割模塊的輸出時,模塊內部會對圖像做預處理,提取圖像中螺絲刀和螺絲的碰撞坐標[6],判斷二者的碰撞坐標與質檢參考線坐標的高低位置關系,以此作為螺絲刀是否成功將螺絲打入指定位置的依據,而螺絲刀和螺絲的運動方向與它們和質檢參考線的位置關系作為FSM 內部狀態轉移的條件,可以嚴謹模擬實際情況下工件的工作狀態。
平臺硬件結構如圖4 所示。主要包括PaddlePadle模型訓練單元、硬件仿真單元和預訓練集。

圖4 平臺實驗設計
PaddlePaddle 模型訓練單元包括:PC 機、無線路由器和AI Studio 平臺。PC 機設定PaddleSeg 語義分割模型需要實現的分割指標,通過WiFi無線網絡將指標與訓練集傳送到AI Studio 平臺,在平臺上借助NVIDIA Tesla V100 訓練模型,訓練完畢后將模型下載,部署在計算單元上。
實驗所需要的硬件模塊包括:視覺傳感器、計算單元、機械工作臺。視覺傳感器負責將工作臺圖像通過有線網橋傳入計算單元,計算單元會根據預先設定的自定義質檢要求檢測螺絲的打入情況,并根據輸出結果將工作臺的螺絲分類為“合格產品”與“不合格產品”。在計算單元每次根據工作臺的情況輸出結果后,將工作臺的圖像信息與工作結果擴充到原有的訓練集中,PaddlePaddle 模型訓練單元可將新的訓練集上傳至AI Studio 平臺,使以后模型訓練的結果更準確。
數據集是深度學習模型訓練的關鍵[7],要實現高魯棒性的計算機視覺方案,就必須保證以下幾點:高容量模型;高速增長的計算能力;大規模標記數據的可用性[7]。
AI Studio 遠程深度學習平臺提供模型訓練的算力,同時PaddleSeg語義分割模型需要構建標記過螺絲刀和螺絲的數據集,優質的數據集才能保證模型訓練的有效性。數據集的獲取途徑主要有兩種:自定義數據集和公共數據集,本次應用場景涉及螺絲刀與螺絲數據集,在已有的公共數據集中并無先例,因而需要自定義數據集。
采集自定義數據集的方式是通過拍攝一段正面視角、螺絲刀向下貼緊螺絲、打入螺絲、離開的視頻,每秒截取4 張照片,共計截取200 張照片。
利用labelme工具對拍攝圖片進行標記,如圖5 所示,經labelme工具標記后的圖像會得到標注圖像與記錄標注點供模型讀取的JSON文件[8]。

圖5 labelme軟件標記圖像界面
表1 列出了數據集目錄dataset 的文件格式。數據即主要包括annotations標注圖像目錄和images原始圖像目錄,test、train、val文件夾分別對應測試集、訓練集和驗證集。

表1 數據集格式
文件夾annotations 下存放分類標記后的圖像,即經過labelme工具標記后的標注圖像。文件夾images下存放原始圖像和對應的JSON 格式的標注文件,標注分類為screwdriver(螺絲刀)和screw(螺絲)兩類。
在dataset文件夾的訓練集數據準備完畢后,可通過PaddlePaddle Segementaion 庫程序create _ dataset _list.py生成規范的cityscapes格式的數據集,供模型訓練調用。
PaddleSeg內部配置了多種功能腳本,如模型訓練、模型評估和訓練可視化等。不同腳本在訓練過程中可通過控制特定Flags 開關啟動,也可通過直接修改默認的訓練配置啟動。
本次訓練的語義分割對象screwdriver(螺絲刀)和screw(螺絲)是小型物體,且數據集規模不大,不過仍可在遠程深度學習平臺AI Studio上借助一塊NVIDIA Tesla V100 開啟CUDA加速,快速完成模型訓練[9],且識別準確率達到工業生產螺絲刀與螺絲的分割標準。
圖6 所示為分別借助CPU 和在AI Studio 上的NVIDIA Tesla V100 進行模型訓練的效果圖,其中圖6(a)為調用CPU的模型訓練輸出結果,圖6(b)為調用GPU的結果。

圖6 模型訓練效果圖
取連續10 個epoch作為樣本,分別計算采用GPU和CPU訓練模型的平均速度,得到用GPU 訓練模型的平均速度是3.353 step/s,而CPU 的平均速度只有1.776 step/s,說明調用平臺GPU 的訓練模型的速度是CPU的近1.89 倍,AI Studio 平臺訓練模型只需花費約原先一半的時間,是可靠的高性能計算手段[10]。
模型訓練完畢后,將訓練好的模型通過PaddleSeg API庫內部的eval.py測試程序進行驗證,根據API的使用說明可知,測試程序的輸出結果為準確率(acc)、mean IoU和Kappa系數,這3 種指標數值通常是小于1 的正數,其數值越接近1,說明模型的一致性越好[11]。
圖7 所示為通過eval.py 測試程序對模型進行測試的結果圖,由圖可見,acc、mean IoU 和Kappa 系數3種指標數值都十分接近1,說明此時訓練的模型一致性強,具備完成螺絲刀與螺絲的語義分割任務的能力。

圖7 模型檢測
將原始圖片傳入語義分割模塊,模塊的輸出圖像僅包含螺絲刀圖像和螺絲圖像,該圖像不能直接作為輸入傳入FSM算法模塊,因為不僅需要將圖像信息轉換成FSM算法模塊的規范輸入,還需要考慮語義分割模塊在復雜環境下的噪聲干擾[12]。
FSM算法圖像預處理主要包括邊緣檢測和降噪。
邊緣檢測是提取分割圖像的邊緣信息,獲得只含有螺絲刀和螺絲的邊緣圖像[13],由于復雜環境影響,分割圖像存在噪音,需將該圖像再傳入降噪模塊濾掉噪聲。語義分割圖像經邊緣檢測模塊輸出圖像,如圖8(a)、(b)所示。

圖8 邊緣檢測模塊工作效果圖
降噪模塊會接收邊緣檢測模塊的輸出圖像,對該圖像做降噪處理[14],保證傳入FSM 算法模塊的圖像是可識別的。邊緣檢測圖像經過降噪模塊的輸出圖像,如圖9(a)、(b)所示。

圖9 降噪模塊工作效果圖
將降噪模塊的輸出圖像傳入FSM算法模塊中,保證FSM能正常運作。
在FSM算法模塊中,不斷接收來自前模塊的輸出圖像,提取圖像特征,判斷螺絲刀和螺絲的工作狀態,運轉狀態機。
最初螺絲刀處于空閑狀態,螺絲還未打入,此時FSM進入“IDLE(空閑)”狀態,如圖10 所示。只有當螺絲刀高度低于初始位置,并且運動方向朝下時,狀態機進入次態Screwdriver_is_falling,否則將一直處于IDLE狀態。

圖10 “空閑”狀態
當FSM識別到螺絲刀已離開初始位置,并開始下降至螺絲高度時,FSM進入次態“Screwdriver_is_falling(螺絲刀下降)”,如圖11 所示。只有當螺絲刀和螺絲圖像合并時,即在實際工作情況是螺絲刀與螺絲工件契合,螺絲刀開始將螺絲旋入工件時,FSM 進入次態Docking,否則將一直處于Screwdriver_is_falling。

圖11 “螺絲刀下降”狀態
直到螺絲刀和螺絲契合,螺絲刀開始旋轉螺絲,此時FSM才進入次態“Docking(貼合)”,如圖12 所示。只有當螺絲刀與螺絲不再合并,且螺絲刀運動方向朝上時,狀態機進入次態Back_return,否則將一直處于Docking。

圖12 “貼合”狀態
之后螺絲刀和螺絲分離,螺絲刀開始上升回到初始位置,此時FSM狀態進入次態“Back_return(螺絲刀返回)”,如圖13 所示。

圖13 “螺絲刀返回”及“打入成功”狀態
在Back_return 狀態下,根據輸入的不同,FSM 的次態情況會有不同:當螺絲刀回到初始位置,且螺絲高度符合用戶自定義產品質檢高度要求時,FSM 進入次態“done_successful(打入成功)”;當螺絲刀回到初始位置,但螺絲高度不符合用戶自定義產品質檢高度要求時,FSM進入次態“done_with_error(打入失敗)”。質檢高度指在工業生產中,螺絲打入器件時在外側露出的最大高度[15],它一般精確到毫米,當下常用攝像頭的分辨率均已達到1 080 p,完全可以勝任毫米級的圖像識別,用這些攝像頭采集的圖像可以幫助計算機判斷螺絲是否符合質檢要求。
顯然圖13 也能說明此時FSM 識別螺絲屬于“done_successful(打入成功)”的情況。而對于“done_with_error”的輸出圖像,如圖14 所示。螺絲刀返回至初始位置,但螺絲高度不符合產品質檢高度要求,此時FSM進入次態“done_with_error(打入失敗)”。

圖14 “打入失敗”狀態
當FSM 狀態是“done_successful”或“done_with_error”時,FSM會返回空閑狀態“IDLE”,準備進入下一輪對螺絲刀工作狀態的檢測。
對于FSM算法模塊,在正常工作情況下都會經歷以上6 個狀態[16],但為防止異常情況發生,需要工廠負責人周期性檢查算法輸出的結果是否正常,防止造成資源浪費[17]。
圖15 所示為電動工具檢測設備實驗平臺實物圖,包括:工件傳送帶,工件托盤,電動螺絲刀,螺絲,攝像頭,運算服務器(PC機)等設備。

圖15 電動工具檢測系統實物圖
在實際工作臺上運行電動工具檢測系統,其輸出結果如圖16 所示。
本文以電動螺絲刀工作狀態識別、判斷擰緊作為實際工作場景,基于PaddlePaddle深度學習框架,采用PaddleSeg語義分割方法,在AI Studio遠程深度學習平臺訓練語義分割模型,將語義分割圖進行預處理后傳入FSM實現工作狀態識別與擰緊判斷,為解決工業生產提供一種方案。本系統具有物聯網特性,在智能工廠中設置視覺傳感器設備,將數據傳送至遠程終端,在終端實現智能處理,實現工廠前端與管理后端數據互聯。本項目在2020 年全國物聯網設計大賽中獲華東賽區特等獎。

圖16 電動工具檢測系統輸出結果