主要内容

开始迁移学习

这个例子展示了如何使用迁移学习来重新训练SqueezeNet,一个预先训练的卷积神经网络,对一组新的图像进行分类。尝试这个例子,看看在MATLAB®中开始深度学习是多么简单。

迁移学习通常用于深度学习应用。你可以用一个预先训练好的网络作为学习新任务的起点。用迁移学习对网络进行微调通常比用随机初始化权值从头开始训练网络更快、更容易。您可以使用少量的训练图像快速地将学习到的特征转移到新的任务中。

提取数据

在工作空间中,提取MathWorks Merch数据集。这是一个包含75张MathWorks商品图像的小数据集,属于五个不同的类(多维数据集打牌螺丝刀,火炬).

解压缩(“MerchData.zip”);

负载Pretrained网络

开放深度网络设计器。

deepNetworkDesigner

选择SqueezeNet从预先训练的网络列表中单击开放

深度网络设计器显示整个网络的缩小视图。

探索网络情节。要用鼠标放大,请使用Ctrl+滚轮。要平移,请使用方向键,或按住滚轮并拖动鼠标。选择一个图层查看它的属性。取消选择所有层,查看网络摘要属性窗格。

导入数据

将数据加载到深度网络设计器中,在数据选项卡上,单击导入数据>导入图像数据.打开“导入图像数据”对话框。

数据源列表中,选择文件夹.点击浏览并选择提取的MerchData文件夹。

将数据分成70%的训练数据和30%的验证数据。

指定要在训练图像上执行的增强操作。数据增强有助于防止网络过度拟合和记忆训练图像的确切细节。对于本例,在x轴上应用随机反射,从[-90,90]度范围随机旋转,从[1,2]范围随机缩放。

点击进口将数据导入深度网络设计器。

编辑迁移学习网络

为了重新训练SqueezeNet对新图像进行分类,将最后一个二维卷积层替换为网络的最终分类层。在SqueezeNet中,这些图层都有名称“conv10”“ClassificationLayer_predictions”,分别。

设计师窗格,拖动一个新的convolution2dLayer到画布上。为了匹配原始卷积层,设置FilterSize1,1.编辑NumFilters为新数据中的类数,在本例中,5

通过设置改变学习速率,使新层的学习速度比转移层的学习速度快WeightLearnRateFactorBiasLearnRateFactor10

删除最后一个2d卷积层,并连接你的新层代替。

替换输出层。滚动到末尾层的图书馆然后拖动一个新的classificationLayer到画布上。删除原来的输出层,并在其位置连接你的新层。

列车网络的

要选择培训选项,请选择培训选项卡并单击培训方案.将初始学习率设置为较小的值,以降低传输层的学习速度。在前面的步骤中,您增加了2d卷积层的学习率因子,以加速新的最终层中的学习。这种学习率设置的组合只会导致在新层中学习快,而在其他层中学习慢。

对于本例,setInitialLearnRate0.0001ValidationFrequency5MaxEpochs8.因为有55个观察结果,设定MiniBatchSize11均匀划分训练数据,保证每个epoch使用整个训练集。

要使用指定的培训选项对网络进行培训,请单击关闭然后点击火车

深度网络设计器允许您可视化和监控培训进度。如果需要,您可以编辑培训选项并对网络进行再培训。

导出结果并生成MATLAB代码

要从培训中导出结果,就上培训选项卡上,选择出口>输出训练有素的网络和结果.深度网络设计器输出训练有素的网络作为变量trainedNetwork_1训练信息作为变量trainInfoStruct_1

您还可以生成MATLAB代码,它可以重新创建网络和使用的培训选项。在培训选项卡上,选择出口>生成培训代码.检查MATLAB代码,学习如何以编程方式准备训练数据,创建网络架构,并训练网络。

分类新形象

加载一个新的图像,使用训练的网络进行分类。

我= imread (“MerchDataTest.jpg”);

调整测试图像的大小以匹配网络输入的大小。

I = imresize(I, [227 227]);

使用训练好的网络对测试图像进行分类。

(YPred,聚合氯化铝)= (trainedNetwork_1, I)进行分类;imshow(I) label = YPred;标题(string(标签)+”、“+ num2str(100 *马克斯(聚合氯化铝),3)+“%”);

参考文献

[1]ImageNet.http://www.image-net.org

Iandola, Forrest N., Song Han, Matthew W. Moskewicz, Khalid Ashraf, William J. Dally, Kurt Keutzer。“SqueezeNet: alexnet级精度,参数少50倍,模型尺寸小于0.5 MB。”预印本,2016年11月4日提交。https://arxiv.org/abs/1602.07360。

福雷斯特·伊安多拉“SqueezeNet。”https://github.com/forresti/SqueezeNet。

另请参阅

|||

相关的话题