MindSpore21天实战营丨基于MindSpore的ResNet-50蘑菇“君”的识别应用体验

借助全新的设计理念,华为云推出了 MindSpore深度学习实战营,帮助小白更快的上手高性能深度学习框架,快速训练ResNet-50,实现你的第一个手机App开发,学会智能新闻分类、篮球检测和「猜你喜欢」模型!

MindSpore深度学习实战营,通过 21天的合理课程安排,不仅提供目前大热的移动端部署介绍,还有紧跟时事的趣味实践,更有深度的底层开发讲解,让你从框架到算法到开发,都能一网打尽。

在MindSpore21天实战第三堂课,由王辉老师分享了基于MindSpore的ResNet-50的识别推理模型,如何应用在“蘑菇’君’是否有毒?”的检测场景。

https://bbs-img.huaweicloud.com/blogs/img/1604487327238044846.jpeg

ResNet之前的状况是:

CNN能够提取low/mid/high-level的特征,网络的层数越多,意味着能够提取到不同level的特征越丰富。并且,越深的网络提取的特征越抽象,越具有语义信息。而实际随着神经网络层数的增加,梯度消失或者爆炸导致深层网络很难训练。

对于该问题的解决方法是正则化初始化和中间的正则化层(Batch Normalization),这样的话可以训练几十层的网络。虽然通过上述方法能够训练了,但是又会出现另一个问题,就是退化问题,网络层数增加,但是在训练集上的准确率却饱和甚至下降了。

ResNet提出了残差结构,就是为了解决梯度消失、爆炸或者训练退化的问题。其经典结构如下图所示:

https://bbs-img.huaweicloud.com/blogs/img/1604487447179023256.jpeg

如下图所示,左侧是普通层,而右侧是ResNet;

https://bbs-img.huaweicloud.com/blogs/img/1604487531081034778.jpeg

如下图所示,左侧是普通层,而右侧是ResNet;

随着网络层数的大量增加,普通层的输出H(X)越来越难以学习。而ResNet跨过卷积层将输入X作为最终输出。FX)被称为残差。

深度残差网络有着相对低的复杂度和更深的网络层数。曾获多项比赛的第一名。

ResNet-50中的50,指的是该网络的层数为50层。

本堂课的体验作业是基于华为MindSpore框架的ResNet-50网络模型,实现6714张共10类蘑菇图片的识别分类训练。算力是基于华为云ModelArts,网络存储使用华为OBS对象存储服务。大量图片上传OBS桶过程中,使用了OBS-browser-plus套件工具,设置好OBS登录权限和存储目录后,可以本地拖放目录操作,大量的数据文件可以进入队列自动上传。

基于1*Ascend910 CPU的算力,整个训练过程用时10.04minutes,数据集训练精度平均损失0.569,输出日志如下图所示。

https://bbs-img.huaweicloud.com/blogs/img/1604487702979000877.png

  对训练生成的模型,通过Eval测试“蘑菇超人”https://bbs-img.huaweicloud.com/blogs/img/1604487779565012854.jpg图片,其分类结果为“霍氏粉褶伞,伞菌目,粉褶菌科……”,测试日志见下图。也是查了一下霍氏粉褶伞的图片,其他且不说,颜色相似度还是挺高的。

https://bbs-img.huaweicloud.com/blogs/img/1604487826740009746.png

整个体验过程简单流畅,结合实例加深了对ResNet-50深度神经网络的了解。

本文分享自华为云社区《基于MindSpore的ResNet-50蘑菇“君”的识别应用体验》,原文作者:Dasming。 

点击关注,第一时间了解华为云新鲜技术~