目录
介绍 2
一 问题定性 2
(1)输入数据是什么? 3
(2)预测什么? 3
(3)是什么类型的问题? 3
(4)衡量成功的定义? 3
(5)简单的留出验证集还是K折验证? 3
二 准备数据 3
三 分析数据集 5
训练数据集每种花图片数量情况 6
每类花朵图像数量占比 6
四 基准模型 7
五 使用VGG训练 8
(1) 选择优化器 9
(2) 用什么损失函数 10
(3) 各层用什么激活 10
(4) 冻结VGG模型 11
(5) 设计分类层 11
(6) 学习率,Dropout[1]率初始化 12
(7) 数据集增强 12
(8) 开始训练 12
(9) 消除数据集不平衡带来的影响 13
(10) 寻找最优学习率(网格搜索) 15
(11) 基于最优学习率,设计学习率下调函数 18
(12) 最终训练结果 18
六 使用ResNet101v2训练 20
(1) 寻找最优冻结点 21
(2) 寻找最优学习率 21
1e-3~1e-2 21
1e-4~1e-3 22
1e-6~1e-4 24
(3) 设计学习率回调函数 25
(4) 最终结果 25
七 使用Efficient net训练 27
单个维度的缩放存在的问题 27
EfficientNet-B0 ~ EfficientNet-B7性能对比 28
(1) 还是寻找最优冻结位置 30
(2) 设计学习率下调函数 30
(3) 最终结果 31
八 最终试验结果 35
九 心得体会 37
十 特别鸣谢 41
十一 参考文献 42
介绍
本次题目选自Kaggle平台的一个playground竞赛。
Playground竞赛难度比Get started竞赛稍难,可以说是后者的进阶竞赛。旨在娱乐,顾名思义。
那么,我们的题目是:用TPU进行分类104种花朵。
在这项比赛中,我们将根据从五个不同的公共数据集中提取的图像对104种花朵进行分类。一些类别非常狭窄,仅包含特定的花朵类型(例如粉红色的樱草花),而其他类别则包含许多花朵的类型(例如野玫瑰)。
我们使用基于预训练的卷积神经网络来进行花朵识别,其根本是一种获取花朵图片特征并进行相对应的数据处理的问题,为了寻找使得识别的精确度达到最佳值,我们需要一种适配的算法,来高效稳定的求解。而深度学习中经典的VGG算法可以高效稳定的地识别每种不同花朵的图片。因此本课程设计使用VGG网络结构作为基准网络,即本课程设计所有的网络性能都是基于它作比较。