工業黨福利:使用PaddleX高效實現指針型表計讀取(一)

 

飛槳開發者說】李康宇,PPDE飛槳開發者技術專家,工做於機械科學研究總院,視覺研發工程師html

最近在作一個工業巡檢的項目,主要涉及的內容是指針型表計的讀取。本系列文章主要介紹實現表計讀取的全流程開發。其中主要使用的工具爲飛槳全流程開發工具PaddleX和Visual Studio 2019。git

下載安裝命令

## CPU版本安裝命令
pip install -f https://paddlepaddle.org.cn/pip/oschina/cpu paddlepaddle

## GPU版本安裝命令
pip install -f https://paddlepaddle.org.cn/pip/oschina/gpu paddlepaddle-gpu

工業質檢和工業巡檢是深度學習技術在工業領域應用比較普遍的兩個場景,而其實現流程是相似的,能夠由圖1大體展現:github

圖1 工業質檢及巡檢實現流程json

本系列文章的內容包含了上述流程的所有內容,主要內容以下:服務器

  • 高效語義分割:基於PaddleX圖形化開發界面(Demo),零代碼快速實現表計分割ide

  • 工業場景適配:Windows下PaddleX的C++編譯並生成dll函數

  • 表計讀取實戰:基於C#的識別界面開發和dll文件調用工具

正文開始前再說一句,各位兄弟姐妹快去GitHub給PaddleX點star啊。點star,不白嫖!連接以下:性能

https://github.com/PaddlePaddle/PaddleX學習

 

高效語義分割:基於PaddleX零代碼快速實現表計分割

 

PaddleX是什麼?

PaddleX的官網上有其詳細的介紹,我這裏把它們摘錄出來:

PaddleX是基於飛槳開發的一款全流程開發套件,以低代碼、甚至零代碼的形式支持開發者快速實現產業實際項目落地。

PaddleX中集成了飛槳智能視覺領域圖像分類、目標檢測、語義分割、實例分割任務能力,將深度學習開發全流程從數據準備、模型訓練與優化到多端部署端到端打通,並提供統一任務API接口及圖形化開發界面(Demo)。開發者無需分別安裝不一樣套件,以低代碼的形式便可快速完成飛槳全流程開發。

PaddleX 通過質檢、安防、巡檢、遙感、零售、醫療等十多個行業實際應用場景驗證,沉澱產業實際經驗,並提供豐富的案例實踐教程,全程助力開發者產業實踐落地。

一句話歸納優點:極大下降開發成本、縮短開發週期、下降開發難度。

工業黨們最在乎的效率和成本,PaddleX都解決了。PaddleX提供了兩種開發模型:Python函數庫開發模式和 PaddleX圖形化開發模式。

(1)Python函數庫模式:這種模式與咱們平時比較熟悉的深度學習開發模式差很少,不過PaddleX提供了衆多簡潔、全面、集成度較高的API,這使得咱們僅僅須要很是少許的的代碼量,就能夠實現圖像分類、檢測、分割等任務,並快速進行模型部署。

(2)「喪心病狂」的圖形化開發模式:當我第一次看到PaddleX圖形化開發界面的時候,我就知道,調參黨的日子要很差過了,以及工業黨的福利來了。之因此這麼說,是由於使用PaddleX圖形化開發界面,零代碼就能夠實現數據準備、模型訓練、模型調優、模型部署全流程的開發。而且,這款工具居然是免費的。如圖2所示,它將深度學習開發中的調參轉化爲點選式的選擇,無需代碼就能夠便捷、高效地調整模型類型、backbone、模型參數和訓練參數。相信通過作項目驗證、作方案的工業黨們都明白這意味着什麼。從個人經驗來看,使用PaddleX 圖形化開發界面,可以改進低效流程,將項目驗證的效率提高10倍以上,極大縮短開發週期。

若是你們但願本身開發一個企業或者行業專用版本的圖形化開發界面,PaddleX也是個很好的參照。

圖2 PaddleX 圖形化開發界面

 

如何使用PaddleX實現壓力錶的語義分割

 

廢話很少說,下面將以壓力錶的語義分割爲例,邊介紹邊實戰。飛槳提供了官方使用教程文檔,連接爲:

https://paddlex.readthedocs.io/zh_CN/develop/gui/how_to_use.html

與命令行模式的深度學習開發相似,使用PaddleX圖形化開發界面完成壓力錶的語義分割也須要按照如圖3所示的流程進行。

圖3 使用PaddleX 圖形化開發界面實現語義分割流程示意圖

(1)數據準備

如圖4所示,在安裝完PaddleX圖形化開發界面以後,打開軟件。首先選擇數據集管理;而後點擊新建數據集,建立語義分割數據集。

圖4 建立數據集

點擊建立數據集後,如圖5所示,首先按照數據集導入規則,將原始圖像和標註圖像分別放在JPEGImages和Annotations文件夾中;而後選擇數據集路徑,確認導入。這裏須要注意一下,labelme標註出的分割標註格式爲json文件,須要首先轉換爲label.png文件(要注意本身的標註是一個標籤仍是多標籤)。正如圖6中展現的那樣,導入後,將數據集切分爲訓練集、驗證集和測試集。通常按照默認比例便可。

圖5 數據導入

圖6 數據切分

( 2)建立項目

進行模型訓練點擊個人項目,新建語義分割項目後,進入到項目開發界面。

數據選擇:如圖7所示,選擇數據準備中建立的壓力錶數據集。

圖7 數據選擇

參數配置:如圖8所示,在參數配置中,你們能夠根據本身的需求來配置。我所使用的模型爲DeepLabv3+該模型在語義分割有更好的效果。backbone選擇MobileNetV2_x0.5。迭代輪數爲200,學習率0.005,batch size爲1(爲控制訓練中的振盪幅度,學習率和batch size要相匹配的調整,減少batch size通常需等倍數減少學習率)。

圖8 模型及訓練參數配置

訓練過程當中的模型可視化:如圖9及圖10所示,經過PaddleX界面查看看到當前的訓練輪數,訓練集損失值和驗證集的各項參數。除此以外,PaddleX中集成了Visual DL,能夠查看模型訓練過程參數變化、日誌詳情,及當前最優的訓練集和驗證集訓練指標。

圖9 模型訓練可視化

圖10 VisualDL訓練可視化

模型裁剪:訓練結束後,可選擇進入模型裁剪,也可直接進行模型評估。

(3)模型評估

參數評估:如圖11所示,在模型評估頁面,可查看訓練後的模型效果。評估方法包括混淆矩陣、精度、召回率等。

圖11 模型評估

分割測試:如圖12所示,能夠更加直觀地進行測試集圖片測試,或者單張圖片測試,來評估模型的性能。並可將訓練後的模型保存爲預訓練模型。

圖12 模型測試

咱們來看一下使用PaddleX訓練後,壓力錶分割的效果如圖13所示:

圖13 壓力錶分割效果

放大以後:

圖14 壓力錶分割放大

本次訓練僅使用了60多張壓力錶的圖像數據,數據量比較小。可是能夠看出,最終實現的分割效果仍是至關不錯的。

(4)模型發佈

在獲得一個性能較好的模型後,咱們最終的目的是將模型部署至服務器端或者移動端。在作工業質檢或巡檢時,咱們通常都部署在服務器端。PaddleX的模型發佈界面如圖15所示:

圖15 模型發佈

發佈的文件主要有兩部分:推理代碼和模型。如圖16所示,模型保存在inference_model文件夾內,在使用時,咱們只須要加載該模型便可。

圖16 推理代碼和模型

發佈的文件以下圖所示:

圖17模型文件

項目小結及下節預告

在本文中,我介紹了一款很是好用的深度學習開發工具PaddleX,特別以壓力錶分割爲例,闡述了PaddleX 圖形化開發界面的使用方法。這一部分的內容比較簡單,歡迎你們下載親自動手試一試。下載連接:

https://www.paddlepaddle.org.cn/paddlex/userinfo

下節預告:在工業應用中,生成一個性能不錯的模型只是第一步。因爲工業場景須要使用C#開發界面,所以須要將該模型轉換成C#可調用的dll,下節將介紹如何將飛槳的C++預測代碼生成爲Visual Studio下的解決方案,以及最關鍵的,如何將C++預測代碼生成爲可調用的動態連接庫dll,打通真正能夠工業實戰的開發流程。都看到這裏了,還不點個贊,關注一下,謝謝你們!最後,再一次歡迎你們給這款好用的工具點個star!PaddleX Github連接:

https://github.com/PaddlePaddle/PaddleX

 

下載安裝命令

## CPU版本安裝命令
pip install -f https://paddlepaddle.org.cn/pip/oschina/cpu paddlepaddle

## GPU版本安裝命令
pip install -f https://paddlepaddle.org.cn/pip/oschina/gpu paddlepaddle-gpu
相關文章
相關標籤/搜索