本文分享自華為雲社區《基於MindSpore的ResNet-50蘑菇“君”的識別應用體驗》,原文作者:Dasming。
摘要:基於華為MindSpore框架的ResNet-50網絡模型,實現6714張共10類蘑菇圖片的識別分類訓練。
背靠全新的設計理念,華為雲推出了 MindSpore深度學習實戰營,幫助小白更快的上手高性能深度學習框架,快速訓練ResNet-50,實現你的第一個手機App開發,學會智能新聞分類、籃球檢測和「猜你喜歡」模型!
MindSpore深度學習實戰營,通過 21天的合理課程安排,不僅提供目前大熱的移動端部署介紹,還有緊跟時事的趣味實踐,更有深度的底層開發講解,讓你從框架到算法到開發,都能一網打盡。
在MindSpore21天實戰第三堂課,由王輝老師分享了基於MindSpore的ResNet-50的識別推理模型,如何應用在“蘑菇’君’是否有毒?”的檢測場景。
ResNet之前的狀況是:
CNN能夠提取low/mid/high-level的特征,網絡的層數越多,意味着能夠提取到不同level的特征越豐富。並且,越深的網絡提取的特征越抽象,越具有語義信息。而實際隨着神經網絡層數的增加,梯度消失或者爆炸導致深層網絡很難訓練。
對於該問題的解決方法是正則化初始化和中間的正則化層(Batch Normalization),這樣的話可以訓練幾十層的網絡。雖然通過上述方法能夠訓練了,但是又會出現另一個問題,就是退化問題,網絡層數增加,但是在訓練集上的准確率卻飽和甚至下降了。
ResNet提出了殘差結構,就是為了解決梯度消失、爆炸或者訓練退化的問題。其經典結構如下圖所示:
如下圖所示,左側是普通層,而右側是ResNet;
如下圖所示,左側是普通層,而右側是ResNet;
隨着網絡層數的大量增加,普通層的輸出H(X)越來越難以學習。而ResNet跨過卷積層將輸入X作為最終輸出。F(X)被稱為殘差。
深度殘差網絡有着相對低的復雜度和更深的網絡層數。曾獲多項比賽的第一名。
ResNet-50中的50,指的是該網絡的層數為50層。
本堂課的體驗作業是基於華為MindSpore框架的ResNet-50網絡模型,實現6714張共10類蘑菇圖片的識別分類訓練。算力是基於華為雲ModelArts,網絡存儲使用華為OBS對象存儲服務。大量圖片上傳OBS桶過程中,使用了OBS-browser-plus套件工具,設置好OBS登錄權限和存儲目錄后,可以本地拖放目錄操作,大量的數據文件可以進入隊列自動上傳。
基於1*Ascend910 CPU的算力,整個訓練過程用時10.04minutes,數據集訓練精度平均損失0.569,輸出日志如下圖所示。
對訓練生成的模型,通過Eval測試“蘑菇超人”圖片。
其分類結果為“霍氏粉褶傘,傘菌目,粉褶菌科……”,測試日志見下圖。也是查了一下霍氏粉褶傘的圖片,其他且不說,顏色相似度還是挺高的。
整個體驗過程簡單流暢,結合實例加深了對ResNet-50深度神經網絡的了解。