背景

学习深度学习的框架,积累调参经验

数据集

5类花卉图像数据,分别是向日葵、郁金香、玫瑰、蒲公英、雏菊,每类花卉在700到1000张左右,图像尺寸大小不统一,常见尺寸是320x240,数据并不干净,有些混杂的图片。
任务是利用CNN方法对其进行分类识别。

模型记录

1.基本CNN模型进行分类

  • 卷积层1:32个卷积核、大小5x5、步数1,激活函数ReLU,最大池化、步数2,输入150x150x3
  • 卷积层2:64个卷积核、大小3x3、步数1,激活函数ReLU,最大池化、步数2
  • 卷积层3:96个卷积核、大小3x3、步数1,激活函数ReLU,最大池化、步数2
  • 卷积层4:96个卷积核、大小3x3、步数1,激活函数ReLU,最大池化、步数2
  • 全连接层1:512个神经元,激活函数ReLU
  • 全连接层2:256个神经元,激活函数ReLU
  • 分类层:5个神经元,激活函数softmax

batch_size=16,epoch=50。
效果如下,并不理想,出现了过拟合,识别率在65%左右,val_loss不减反增,令人畏惧。



2.数据增强

在上面的基础上,加上了图像增强处理,具体方式是,随机旋转范围10度,随机缩放0.9~1.1范围,水平和竖直偏移为范围0.2。
epoch还是50,效果如下,识别率在77%左右,loss_val下降后反弹,波动较大,训练loss持续下降,似乎可以继续下降:



3.模型改进

在上面的基础上,对cnn模型进行改进,添加了权重衰减、Dropout层、批正则化层(BN)

  • 卷积层1:32个卷积核、大小5x5、步数1,激活函数ReLU,最大池化、步数2,输入150x150x3
  • 加入BN层,介于卷积层和池化层之间
  • 卷积层2:64个卷积核、大小3x3、步数1,激活函数ReLU,最大池化、步数2
  • 加入BN层,介于卷积层和池化层之间
  • 卷积层3:96个卷积核、大小3x3、步数1,激活函数ReLU,最大池化、步数2
  • 加入BN层,介于卷积层和池化层之间
  • 卷积层4:96个卷积核、大小3x3、步数1,激活函数ReLU,最大池化、步数2
  • 加入BN层,介于卷积层和池化层之间
  • 全连接层1:512个神经元,激活函数ReLU,加入权重衰减
  • 加入Dropout层,0.3
  • 全连接层2:256个神经元,激活函数ReLU,加入权重衰减
  • 加入Dropout层,0.3
  • 分类层:5个神经元,激活函数softmax

epoch150,效果如下,发现最后的识别率在83%左右。



4.自调整学习率

规则是,如果在5个epoch内,val识别率还是不增加,就让lr变为原来的0.1倍

epoch50,batch_size增加,效果如下,loss趋于平坦,识别率在85%左右,说明合适的学习率很重要,但是最后lr变成了1e-10甚至以下,loss平坦,说明lr越小,收敛越没有效果。



5.增加cnn网络深度

方法是在每个卷积层后面repeat同样数量的2个卷积层。效果就不上传了,只提升了0.5%~1%左右的识别率。

总结

1.卷积核尺寸不能超过图像尺寸,否则训练下来没什么效果
2.过拟合时候,采用合适的数据增强十分有效,而且对于训练效果也很有帮助,数据增强中,水平翻转比竖直翻转更有效,因为没有倒立的花朵,其他方法也可以多尝试下。
3.在预处理阶段,让X_train归一化会具有一定效果
4.在网络改进中,BN层(批正则化,让数据分布均匀)的加入和dropout层(随机失效,避免过拟合)的效果尤为明显
5.深度网络似乎并没有什么很明显的提升,甚至可能会导致梯度问题,但是深度网络的理解能力肯定要比非深度网络要好。
6.学习率的选择非常重要,越大,收敛越快,但达不到最优的点,越小,收敛越慢,可能会导致局部最优。在训练中自适应调整是一种很好的方法。
7.基本cnn:65%,数据增强:77%左右,模型改进83%左右,自适应调整学习率,85%左右,深度cnn网络,没有很明显的提升。

附个图




参考链接:
https://www.kaggle.com/alxmamaev/flowers-recognition(数据集来源)
https://zhuanlan.zhihu.com/p/29534841(受启发的文章)

要代码的人比较多,所以公开数据集+代码的百度网盘链接:
链接:https://pan.baidu.com/s/1-0u55gO38V0PckMZ0IyYSA
提取码:wkhi

【调参记录】基于CNN对5类花卉植物数据一步步提升分类准确率相关推荐

  1. 【哈工大版】Dynamic ReLU:Adaptively Parametric ReLU及Keras代码(调参记录26)Cifar10~95.92%

    本文介绍哈工大团队提出的一种动态ReLU(Dynamic ReLU)激活函数,即自适应参数化ReLU激活函数,原本是应用在基于一维振动信号的故障诊断,能够让每个样本有自己独特的ReLU参数,在2019 ...

  2. 【哈工大版】动态ReLU:自适应参数化ReLU及Keras代码(调参记录11)

    本文介绍哈工大团队提出的一种动态ReLU(Dynamic ReLU)激活函数,即自适应参数化ReLU激活函数,原本是应用在基于一维振动信号的故障诊断,能够让每个样本有自己独特的ReLU参数,在2019 ...

  3. input自适应_一种Dynamic ReLU:自适应参数化ReLU(调参记录26)Cifar10~95.92%

    自适应参数化ReLU,是一种动态的ReLU(Dynamic ReLU),在2019年5月投稿至IEEE Trans. on Industrial Electronics,2020年1月录用,2020年 ...

  4. input自适应_深度残差网络+自适应参数化ReLU(调参记录18)Cifar10~94.28%

    本文在调参记录17的基础上,将残差模块的数量增加到27个.其实之前也这样做过,现在的区别在于,自适应参数化ReLU激活函数中第一个全连接层中的神经元个数设置成了特征通道数量的1/16.同样是在Cifa ...

  5. input自适应_一种Dynamic ReLU:自适应参数化ReLU激活函数(调参记录13)

    自适应参数化ReLU,本身就是一种动态的ReLU(Dynamic ReLU,Dy-ReLU).该论文在2019年5月的时候,投稿到IEEE Transactions on Industrial Ele ...

  6. 深度残差网络+自适应参数化ReLU激活函数(调参记录3)

    续上一篇: 深度残差网络+自适应参数化ReLU激活函数(调参记录2) https://blog.csdn.net/dangqing1988/article/details/105595917 本文继续 ...

  7. 深度残差网络+自适应参数化ReLU激活函数(调参记录26)Cifar10~95.92%

    本文在调参记录25的基础上,将自适应参数化ReLU中间层的神经元个数,从2个增加到4个,同时添加了一个Dropout层,继续测试其在Cifar10数据集上的效果. 自适应参数化ReLU的基本原理: K ...

  8. 深度残差网络+自适应参数化ReLU激活函数:调参记录26(Cifar10~95.92%)

    本文在调参记录25的基础上,将自适应参数化ReLU中间层的神经元个数,从2个增加到4个,同时添加了一个Dropout层,继续测试其在Cifar10数据集上的效果. 自适应参数化ReLU的基本原理: K ...

  9. 深度残差网络+自适应参数化ReLU激活函数(调参记录8)

    续上一篇: 深度残差网络+自适应参数化ReLU激活函数(调参记录7) https://blog.csdn.net/dangqing1988/article/details/105670981 本文将层 ...

最新文章

  1. luogu P1231 教辅的组成(建图、拆点、最大流)
  2. Python django实现简单的邮件系统发送邮件功能
  3. Android 可视化界面编辑器无法显示界面问题的终极解决方案
  4. mysql按加号没反应_请各位大哥给小老弟解疑答惑一下 为什么点击加号没有反应?感谢...
  5. Python_全局变量的定义
  6. 解析得了数学,写得了诗书,这是个有趣的灵魂
  7. Tomcat - Springboot启动的时候初始化的线程池默认配置
  8. Tomcat logs 目录下各日志文件的含义
  9. c/c++教程 - 1.4 数据类型 sizeof
  10. 洛谷2486 【SDOI2011】染色(线段树+树链剖分)
  11. VS 和 Eclipse 的一些快捷键记录
  12. Windows8.1硬盘安装Ubuntu14.04双系统参考教程及多硬盘注意事项[图]
  13. Hex Editor Neo Ultimate系统要求
  14. 原来证件照还可以这样拍?美炸了!再也不怕证件照丑到家了!
  15. Linux系统的定时任务
  16. android判断字符串是否包含下划线,android 富文本SpannableString去掉下划线
  17. 计算机启动bios设置程序,电脑怎样进入BIOS设置
  18. 汉澳sinox不受openssl心血漏洞影响并分析修复其漏洞代码
  19. CouchDB查询文档
  20. python画时间序列图折线图_python画时间序列散点图

热门文章

  1. awd的批量脚本 pwn_北极星杯AWD-Writeup
  2. BOM(浏览器对象模型)和DOM(文档对象模型)
  3. shopex木马 shopex快照木马清除
  4. 微型真空水泵WAJ280降低工作电压测试报告
  5. 数据库巡检相关内容---1
  6. 【C++】《Breaking Dependencies - C++ Type Erasure - The Implementation Details - Klaus Iglberger》- 知识点
  7. (上)史上最全 Flink SQL 成神之路(全文 18 万字、138 个案例、42 张图)
  8. python学习笔记(一)——hello world、变量、字符串、数字、禅
  9. 测试PLESK虚拟主机管理面板
  10. 分析功率型MOS管在锂电池保护电路中的详细应用