一文解讀基于PaddleSeg的鋼筋長度超限監(jiān)控方案

項目背景
鋼鐵廠生產(chǎn)鋼筋的過程中會存在部分鋼筋長度超限的問題,如果不進行處理,容易造成機械臂損傷。因此,需要通過質(zhì)檢流程,篩選出存在長度超限問題的鋼筋批次,并進行預(yù)警。傳統(tǒng)的處理方式是人工核查,該方式一方面增加了人工成本,降低了生產(chǎn)效率;另一方面也要求工人師傅對業(yè)務(wù)比較熟練,能夠準(zhǔn)確地判斷鋼筋長度是否超限,且該方法可能存在一定的誤判率。在AI時代,利用深度學(xué)習(xí)技術(shù),可以實現(xiàn)端到端全自動的鋼筋長度超限監(jiān)控,從而降低人工成本,提高生產(chǎn)效率。整體技術(shù)方案可以歸納為如下步驟:
在鋼筋一側(cè)安裝攝像頭,拍攝圖像;
利用圖像分割技術(shù)提取鋼筋掩膜;
根據(jù)攝像頭位置和角度確定長度界限;
最后根據(jù)該長度界限和鋼筋分割范圍的幾何關(guān)系判斷本批次鋼筋是否超限。
鋼筋超限監(jiān)控問題可以轉(zhuǎn)換為圖像分割后的幾何判斷問題。為了實現(xiàn)圖像分割,我們使用提供了全流程分割方案的飛槳圖像分割套件 PaddleSeg,只需簡單地修改配置文件,就可以進行模型訓(xùn)練,獲得高精度的分割效果。進一步地,我們挑選使用精度和速度平衡的 PP-LiteSeg 模型,保證在實現(xiàn)高精度的同時,滿足工業(yè)部署的要求。
安裝環(huán)境
使用 PaddleSeg 套件,我們需要準(zhǔn)備如下環(huán)境:
Python >= 3.6
飛槳框架>= 2.1
PaddleSeg
接下來,使用如下命令安裝 PaddleSeg 以及相應(yīng)的依賴:
數(shù)據(jù)處理
由于鋼筋長度超限檢測數(shù)據(jù)集是使用圖像標(biāo)注工具 LabelMe 標(biāo)注的,其數(shù)據(jù)格式與 PaddleSeg 支持的格式不同,因此可借助 PaddleSeg 中 tools 目錄下的腳本 labelme2seg.py,將 LabelMe 格式標(biāo)注轉(zhuǎn)換成 PaddleSeg 支持的格式。
接下來,使用 PaddleSeg 提供的腳本(split_dataset_list.py)將數(shù)據(jù)集劃分為訓(xùn)練集、驗證集和測試集。
模型訓(xùn)練
此處我們選擇輕量級語義分割模型 PP-LiteSeg 模型,對鋼筋進行分割。具體介紹可參考 PP-LiteSeg 的 README 說明文件。
說明文件鏈接
https://github.com/PaddlePaddle/PaddleSeg/tree/release/2.7/configs/pp_liteseg
為了在自定義數(shù)據(jù)集上使用 PP-LiteSeg 模型,需要對 PaddleSeg 提供的默認(rèn)配置文件(PaddleSeg/configs/pp_liteseg/pp_liteseg_stdc1_cityscapes_1024x512_scale0.5_160k.yml)進行輕微修改。?
如下所示,添加自定義數(shù)據(jù)集路徑、類別數(shù)等信息:
接下來,開始執(zhí)行訓(xùn)練:
使用 PaddleSeg 訓(xùn)練過程中可能會出現(xiàn)報錯,例如,one_hot_kernel 相關(guān)的報錯:
這里需要注意類別是否正確設(shè)置,考慮背景類是否添加。one_hot_kernel 另一種報錯:
此時需要注意 mask 中標(biāo)簽是否超過 [0, num_classes + 1] 的范圍。訓(xùn)練完成后,可使用模型評估腳本對訓(xùn)練好的模型進行評估:
輸出結(jié)果為:
由評估輸出可見,模型性能為 mIoU:0.9858,Acc:0.9947,能夠滿足實際工業(yè)場景需求。
模型預(yù)測
使用 predict.py 可用來查看具體樣本的切割樣本效果。
預(yù)測的結(jié)果如下所示。


接下來,利用預(yù)測的結(jié)果,并采用最大聯(lián)通域處理后,判斷鋼筋是否超限。
此處,我們可以對比最大聯(lián)通域處理前后的差別,可以發(fā)現(xiàn)濾除了小的聯(lián)通區(qū)域。

判斷鋼筋是否超限:
對預(yù)測結(jié)果批量判斷是否超限。
可視化后處理結(jié)果。

模型推理與部署
我們可以選擇使用飛槳原生推理庫 Paddle Inference 推理。首先將訓(xùn)練好的模型導(dǎo)出為 Paddle Inference 模型。
接下來使用推理模型預(yù)測。
最后,根據(jù)模型輸出,判斷鋼筋是否超限,可視化判斷結(jié)果。
我們也可以使用 FastDeploy 進行部署。FastDeploy 是一款全場景、易用靈活、極致高效的AI推理部署工具。其提供開箱即用的云邊端部署體驗,支持超過160個文本、視覺、語音和跨模態(tài)模型,并可實現(xiàn)端到端的推理性能優(yōu)化。此外,其還可實現(xiàn)包括圖像分類、物體檢測、圖像分割、人臉檢測、人臉識別、關(guān)鍵點檢測、摳圖、OCR、NLP和TTS等任務(wù),滿足開發(fā)者多場景、多硬件、多平臺的產(chǎn)業(yè)部署需求。
通過如下命令就可以非常方便地安裝 FastDeploy。
使用 FastDeploy 進行預(yù)測也十分簡單:
我們也可以使用 FastDeploy 提供的可視化函數(shù)進行可視化。

接下來判斷鋼筋是否超限,為了便于演示,兼容上面的判斷接口。此處將結(jié)果導(dǎo)出為mask圖片。

結(jié)論
本項目演示了如何在實際工業(yè)場景下,使用 PaddleSeg 開發(fā)套件進行語義分割模型訓(xùn)練,并使用 FastDeploy 進行部署應(yīng)用,解決鋼筋長度超限的自動監(jiān)控問題。結(jié)果證明,本技術(shù)方案切實可行,可實現(xiàn)端到端全自動的鋼筋長度超限監(jiān)控,為企業(yè)生產(chǎn)降本增效。希望本應(yīng)用范例可以給各行業(yè)從業(yè)人員和開發(fā)者帶來有益的啟發(fā)。