百度CV疫情实战技术分享
这是第二次参加深度学习七天打卡训练营之后的技术心得分享,对于刚刚入门的我有很多感触,也有了水平的提升,还获得了深度学习图书。这七天的学习内容相较于上一次难度是大了不少,另外,新的PaddlePaddle 1.7.0版本,对于整个代码的封装更加清晰,定义网络结构的流程也更加清晰,便于理解。整体流程分为:
一、数据准备
(1)解压原始数据集
(2)按照比例划分训练集与验证集
(3)乱序,生成数据列表
(4)构造训练数据集提供器和验证数据集提供器
二、网络模型配置
在本次课程中,我学会了DNN,CNN,VGG,LeNet5,Resnet等多种网络结构的配置,对于基础的卷积,池化等操作的计算方式才有了了解,还学习到了封装网络层的方法,这次课程我获益匪浅。
三、模型训练
调用定义好的网络和准备好的训练数据来训练模型,计算模型的损失,分类识别等等操作的准确率,可以通过多种优化器了优化模型损失,比如fluid.optimizer.Adam Optimizer和SGD Optimizer,这两个优化方式在实战中常用,Adam优化收敛效果更好。在优化模型过程中,设置合适的学习率learning_rate对模型优化很有帮助。从卷积神经网络学习到:修改卷积核的个数,卷积核的大小,修改网络层数,改模型的学习率等等都会让网络达到更好的效果。
四、模型评估
通过训练模型的loss值和accuracy值来判断模型的好坏,可以通过曲线图来直观看出training loss和training accuracy的收敛情况,loss值越小趋于0,accuracy值越大趋于1,模型越好。在很多情况下,出现了训练模型准确率高,而测试模型的准确率却很低,这种情况下的模型优化尤为重要。搞清楚哪种网络对于解决哪种问题效果最好尤为重要。这次实战中的手势识别就遇到了这个问题,虽然训练模型准确率为100%,但是测试准确率只有86%,优化好久结果微乎其微,还希望后续开放每日先锋优胜者的代码,来供我们学习讨论,调参的过程是深度学习很重要的一个步骤。
五、模型预测
调用定义好的网络和准备好的测试数据来预测结果,这次课程主要是分类和识别。
七天的课程包括了:新冠疫情可视化,手势识别,车牌识别,口罩分类识别以及一个人流密度检测的比赛——检测图片中的人数,以及PaddleSlim的应用模型压缩。整个学习过程采用先实战在直播的方式,直播课程内容包括理论知识和实战,相比于简单的完成打卡作业,理论的学习更是重要,课程快要结束了,但是后面还有一些视频内容需要反复观看。我很欣慰自己这几天的努力,很充实,每天为了模型能进一步完善,跑出更好的效果奋战到深夜。
下面是我七天的打卡记录:
Day1:新冠疫情可视化
爬取了3月31日当天丁香园公开的统计数据,根据累计确诊数,使用pyecharts绘制疫情分布图。100分,老师评价这个图大气!哈哈,加油!
Day2:手势识别及优化
模型的训练准确率很高近100%,识别结果基本正确,但是测试准确率第一次只有80%,经过多次优化也只有86%。对于优化过程是我认为最难的,我尝试了CNN和LeNet5两种网络结构,优化效果不佳。听说有优化到100%的大神,所有希望后续能开放每日先锋优胜者的代码,来供我们学习讨论,毕竟共同学习效率也高,调参的过程是深度学习很重要的一个步骤。
Day3:车牌识别及优化
采用的是Lenet5网络结构,识别效果还不错,但是对于图像的需要预处理,准确切割出车牌的区域,所以数据的准备过程比较重要。最终的准确率约97%,后续还可以继续优化。
Day4:口罩分类、识别
分类的效果非常好,测试准确率达到了100%,使用的VGG16网络,在分类网络中是经典的网络,这里的实战学会了封装卷积池化网络层。
Day5:人流密度检测比赛
这个比赛还有两天结束,已经经过了六次调优,但是损失还是徘徊在e-6很难达到e-7,希望后面两天能有突破,现在用了CNN和VGG_16_net得分都不太高,后面准备在网络结构上修改一下,选择前几天表现好的网络。向前三的大佬学习!
Day6:PaddleSlim模型压缩
PaddleSlim是一个模型压缩工具库,包含模型剪裁、定点量化、知识蒸馏、超参搜索和模型结构搜索等一系列模型压缩策略。PaddleSlim提供各种压缩策略的底层辅助接口。
在直播上讲的模型裁剪的相关内容,在后续实践中是对量化的学习。
整体来说,通过七天进阶训练,有点难度,后续要花时间巩固消化,对于模型优化的方法,在后天直播后,如果有了了解会再去总结分享的。