在 OpenBayes 平台跑了「使用迁移学习进行花卉分类」的教程,环境已经是搭建好的,一键即可启动,省时省力,使用我的邀请链接,可以获得 4 小时免费 4090 哦~
迁移学习是什么:迁移学习(Transfer Learning)是一种机器学习技术,即让训练于一个任务上的模型重新用于第二个相关的任务的训练。在深度学习的背景下,迁移学习使用预训练的神经网络模型作为新任务的起点,而不是从头开始训练模型。当数据或计算资源都有限时,这种方法特别有用。
操作步骤
首先打开「公共教程」,找到「使用迁移学习进行花卉分类」的教程。
点击进入后,点击教程右上角的「克隆」。
在「绑定数据」一栏中的第二排选择我们的 home 工作目录,选择数据集时输入 Desnet,搜索我们的模型仓库。
之后我们选择 4090 的算力和 TensorFlow 的镜像。
分配好资源后,我们点击「打开工作空间」。
进入到工作空间后,双击打开左侧的 notebook 文件进入教程。
首先我们需要导入库,避免有些依赖没有被安装。运行这行命令,它可以自动安装我们需要的依赖。
安装好之后,导入我们需要的库。
导入好之后,我们开始处理数据。我们首先定义数据集的目录,并根据它的结构将它分割拼接。
点击运行,可以看见它把每一张图像都读取出来并匹配好了标签。
之后我们将数据分割为训练集、测试集和验证集,可以看到训练集有 4000 个数据,验证集和测试集各有 500 个数据。
我们为每个数据集都创建一个 ImageDateGenerator 的实例,并从数据集中流出图像及应用数据增强。
然后我们可以可视化每个花卉类别的计数,我们运行这行代码将会生成两幅图。
饼图可显示每种花卉所占的比例,柱状图可显示每种花卉所对应的数量。
之后我们定义一个函数,它会显示对应目录下的花卉图像。
运行这个函数,它就会显示对应的图像。例如我们使用百合花的目录,它就会显示五张百合花图像。
我们开始构建我们的模型:首先从 tensorflow 中导入 DenseNet121 作为我们的基础模型,并冻结基础模型中的层;之后构建我们自己的模型,加入基础模型并添加相应的层;运行这段代码,我们的模型就构建好了。
之后开始模型的训练,我们需要配置一个早停参数,早停可以在训练出现性能下降时提前停止训练,这样可以避免我们的模型出现过拟合现象。运行这段代码,配置相应的参数就可以开始训练。
可以看到我们的模型并没有训练到 100 Epoch 而是停在了 99Epoch,这就是早停发挥了作用。
然后我们在验证集上评估我们的模型,运行代码,可以看见在验证集上我们的损失为 0.27,准确率为 0.95。
之后在测试集上进行同样的验证,可以看见在测试集上我们的损失为 0.31,准确率在 0.948 左右。
我们可以可视化我们的准确率,运行代码,它将会画出我们准确率和损失的变化图象。
之后我们可以使用我们的模型进行预测,我们可以在数据集中取出一些花朵的图像并投给模型,让模型生成对应的预测并将预测结果显示出来。运行代码,可以看到它读取了一些图像并给出了相应预测。
觉得文字教程难以理解的朋友们,可以观看 B 站的视频哦