目录
介绍	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网络结构作为基准网络,即本课程设计所有的网络性能都是基于它作比较。











