关注微信公众号:数学建模BOOM,回复“迁移学习”,获取本文的matlab代码文件(本文只展示思路与结果)。
此示例说明如何微调预训练的 GoogLeNet 卷积神经网络以对新的图像集合执行分类。
GoogLeNet 已经对超过一百万个图像进行了训练,该网络已基于大量图像学习了丰富的特征表示。
您可以采用预训练的网络,基于它学习新任务。与使用随机初始化的权重从头训练网络相比,通过迁移学习微调网络要更快更简单。
加载数据
解压缩新图像并加载这些图像作为图像数据存储,这个非常小的数据集现在包含 55 个训练图像和 20 个验证图像。显示一些示例图像。
加载预训练网络
加载预训练的 GoogLeNet 神经网络。使用 deepNetworkDesigner 可以交互可视方式呈现网络架构以及有关网络层的详细信息。
第一层是图像输入层,需要大小为 224×224×3 的输入图像,其中 3 是颜色通道数。
替换最终层
预训练网络 net 的全连接层和分类层针对 1000 个类进行配置,从经过训练的网络中提取层次图。将全连接层替换为新的全连接层,其中输出的数量等于类的数量。
训练网络
网络要求输入图像的大小为 224×224×3,但图像数据存储中的图像具有不同大小。使用增强的图像数据存储可自动调整训练图像的大小。
指定要对训练图像额外执行的增强操作:沿垂直轴随机翻转训练图像,以及在水平和垂直方向上随机平移训练图像最多 30 个像素。数据增强有助于防止网络过拟合和记忆训练图像的具体细节。
指定训练选项。对于迁移学习,请保留预训练网络的较浅层中的特征(迁移的层权重)。要减慢迁移的层中的学习速度,请将初始学习速率设置为较小的值。
训练由迁移的层和新层组成的网络。默认情况下,trainNetwork 使用 GPU(如果有)。这需要 Parallel Computing Toolbox™ 和支持的 GPU 设备。
对验证图像进行分类
使用经过微调的网络对验证图像进行分类,并显示四个示例验证图像及预测的标签。