TechDay公開課實錄:PaddlePaddle車牌識別實戰和心得

車牌識別做爲一種常見的圖像識別的應用場景,已是一個很是成熟的業務了,在傳統的車牌識別中,可使用字符分割+字符識別的方式來進行車牌識別,而深度學習興起後,出現了不少端到端的車牌識別模型,不用分割字符,直接輸入車牌圖片便可識別出車牌字符。2019年1月5日百度深度學習線下技術公開課PaddlePaddle TechDay第一期演講則邀請了百度認證佈道師胡曉曼老師分享基於PaddlePaddle最新版本Fluid做用於車牌識別模型訓練的實踐。python

如下爲胡曉曼講師的演講實錄:git

PaddlePaddle Fluid和TensorFlow的設計理念有何不一樣?github

執行流程不是「先定義再執行」,而是「先編譯再運行」,經過寫一個 Transpiler把Protobuf Message翻譯成C++程序,而後用NCVV、ICC、GCC編譯成二進制代碼,能夠直接運行在服務器和手機上。性能優化

拋棄靜態圖思想,採用Program設計思想,原始的Program在平臺內部轉換成ProgramDesc,python的Executor接收ProgramDesc後,傳遞給Transpiler,輸出一段C++可執行的Program。服務器

基於此,Fluid解釋器極大的加快了執行Program的速度,PaddlePaddle Fluid運行速度也會更快。網絡

按步驟來,你也能創造本身的車牌識別數據集函數

1.數據準備性能

數據準備是作訓練的第一步,每每你們第一印象都是去網上下載車牌數據集,可是會有不少問題,如數據集不方便下載,大部分須要花錢等等。但其實除了收集真實場景的車牌數據,咱們也能夠本身用程序的方式生成車牌數據:學習

1.1生成車牌數據測試

1.1.1定義車牌所需字符

1.1.2生成中英文字符

一個車牌第一個字母都是中文,後面是英文和數據集合。

1.1.3數據加強:添加畸變、噪音和模糊處理

字符生成後,須要對車牌數據進行一些數據加強,由於直接生成的數據是很是乾淨和清晰的車牌數據,跟真實場景的數據有必定差距,直接拿來用的訓練結果會很是好,可是天然場景裏,噪音、畸變、模糊等問題會影響真實圖片的效果,最後實際應用依然達不到預期。所以,咱們須要對這些數據進行畸變、噪音、模糊處理,儘可能貼近現實場景的圖片。

1.1.4生成車牌背景——加入背景圖片,生成車牌字符串list和label,並存爲圖片格式。

車牌目前有藍牌、綠牌、白牌、黑牌,常見的是藍牌和綠牌,車牌數字搞定後須要加入背景圖片,使其跟真實車牌更相近。

1.1.5批量生成

生成字符後加入背景圖片,用函數的使其能夠批量生成,作測試最好生成數量越多越好,起碼幾十萬張起。

1.2.6車牌生成效果

2.Fluid數據讀取

支持兩種傳入數據的方式:

以PythonReader同步讀取方式爲例(注:batch_size:Fluid中Tensor的第0維度固定爲batch_size,在上面代碼段中,圖像輸入x的形狀爲[3,32,32],分別表明:channel數目,圖像的高度和寬度。若是不指定batch_size,那麼data算子會根據實際數據來推斷batch_size的大小,若是須要自定義batch_size,就須要在第0維指定維度便可):

3.Fluid網絡模型

採用PaddlePaddle Fluid提供的vgg19模型來進行訓練,完整代碼請見:

https://github.com/huxiaoman7...

這個模型的好處是把vgg9全部的網絡模型都寫進去了。

4.啓動訓練-參數初始化

啓動訓練的時候如何進行參數初始化,能夠選擇是否使用GPU。初始化完成後,須要把數據灌進來,啓動數據模型並輸入數據。

5.模型測試並輸出日誌

打印日誌

打印的日誌,pass表示第一次迭代,batch表示第一次batch,Loss是第一次迭代,第一次迭代裏面是98,acc是0.08,一直迭代到後面,loss值在不斷的降低。Loss值不斷降低能夠畫成一張圖,根據它降低的幅度,能夠幫助咱們偵查這個模型訓練是否有問題。

保存模型

建立一個保存模型的路徑,經過調用Fluidio這個模塊,將這個模型保存下來。

6.預測模型

保存好的模型不必定要在這臺機器上使用,在其餘機器和容器裏面,也是能夠進行使用的。提早將這個網絡和模型加載進來,放入測試數據,就能夠進行測試,預測模型。

預測結果(測試圖片)

這張圖片是預測的新能源的車牌圖片,豫GD17926,預測以後把模型加載進來,測試圖片,結果是豫GD17826,9變成8,沒有想象中的效果好,緣由是隻迭代了2000次,沒有迭代太多的時間,若是模型並無徹底收斂,你們能夠在自主構建過程中,增長迭代次數,看是否可以達到收斂的狀態。固然,實際應用落地中,仍是要看具體的業務場景。

最後,曉曼老師也根據自身經驗,給初學者提出幾點關於深度學習的建議:

1.不要過於追求高大上的模型和數學名詞,作工業應用實踐,要作好最基本的工做,不要深究理論;

2.不要隨便調參,理論有助於咱們懂得如何更快速、更高效調參,使其以最快的方式達到最優的狀態;

3.不要只依賴機器,機器的資源是有限的,咱們更應該考慮如何把模型進行性能優化,這樣能夠加速模型進行訓練;

4.提升工程能力,多看代碼,多寫代碼,論文多復現,以此提升本身的工程能力。

相關文章
相關標籤/搜索