使用 Fast ai 进行图像分类-600学习网
600学习网终身会员188,所有资源无秘无压缩-购买会员
介绍
从头开始训练深度学习模型可能是一项乏味的任务。您必须找到正确的训练权重,获得最佳的学习速率,找到最适合您的数据和模型的最佳超级参数和架构。此外,没有足够的高质量数据来训练,它所需的计算能力将给我们的资源造成严重损失。这些因素会在第一轮比赛中将你击倒。但不要害怕,因为深度学习库,比如Fast。ai将充当我们强大的助手,让您立即回到比赛中。
目录
1.速度快。ai概述
2.我们为什么使用Fast.ai?
·图像数据包
·LR查找
·适合一个循环
3.案例研究:应急和非应急车辆分类
快速的ai概述
快速的ai是一个基于PyTorch的流行深度学习框架。它旨在通过几行代码快速轻松地构建最先进的模型。它大大简化了深度学习模型的训练过程,而不影响训练模型的速度.灵活姓和性能。快速的ai还支持计算机视觉和NLP中最先进的技术和模型。
我们为什么使用Fast.ai?
除了高生产率和易于使用的快速。ai模型,它还确保我们可以定制高级API,而不会干扰低级API。快速的ai还包含一些很酷的功能,使其成为初学者最喜欢的深度学习库之一。
图像数据包
图像数据包有助于组装我们的培训.验证和测试数据,并通过执行所有必要的转换和标准化图像数据进行处理。
LR查找
学习速度将影响我们模型学习和适应问题的速度。低学习率会减缓训练过程的收敛速度,而高学习率会导致令人不快的性能差异。
因此,良好的学习率对于模型的令人满意的性能至关重要,而找到最佳的学习率就像大海捞针一样。快速的ai的”lr_find()”是我们的骑士,它使我们免于寻找合适的学习速率的痛苦。
记录器.plot()
lr_find()的工作原理是,它最初使用非常低的学习率来训练小批量数据并计算损失。然后,它以比前一批稍高的学习速度训练下一批。这个过程一直持续到我们达到合适的学习率。我们可以用录音机。plot()以获得学习率和损失的图表,这简化了选择良好学习率的任务。选择学习速率的基础是哪个学习速率为我们的损失提供了最陡的斜率,而不是哪个学习速率的损失最小。
适合一个循环
Fit_one_cycle方法实现了循环学习速率的概念。在这种方法中,我们使用在最小和最大阈值之间波动的学习速率,而不是固定的或指数递减的学习速率。
循环学习率。训练神经网络的循环学习率-https://arxiv。org/pdf/1506.01186.pdf
CLR中的每个循环由两个步骤组成,其中学习率从最小值增加到最大值,下一步反之亦然。假设最佳学习速率在所选的最小值和最大值之间。这里,步长表示用于增加或减少每个步骤的学习速率的迭代次数。
我们使用循环学习率来通过循环数来拟合我们的模型。学习速率在训练期间的每个周期中在所选择的最小学习速率和最大学习速率之间振荡。CLR的使用消除了我们的训练模型陷入鞍点的可能姓。
fit_one_cycle方法还实现了学习速率Annexing的概念。我们在最后几次迭代中使用了简化的LR。最后一次迭代的学习率通常取所选最小学习率的1%。这可以防止我们在接近最优值时超出最优值。
案例研究:应急和非应急车辆的分类
让我们尝试使用Fast。ai使用Imagenets数据集中预先训练的Resnet50模型来解决紧急和非紧急车辆分类问题
让我们解冻训练前模型的各个层。这样做是为了让我们的模型了解数据集的特定特征。让我们再次拟合我们的模型,看看它现在是如何工作的。
t_ cnn1.解冻()
t_cnn1.拟合_一个_循环(8)
解冻层并训练模型
学习率查找器
使用lr_find和recorder。我们将能够清楚地了解哪种学习速率最适合我们的模型。使用学习率和损失图选择学习率。
t_cnn1。lr_find()
t_cnn1.recorder.plot()
损失图的学习率
可以看出,1e-4后的损失逐渐增加。因此,将初始层的学习速率选择为1e-5,将后一层的学习率选择为1e-4是一个明智的想法。
我们再次调整我们的方法,并使用选定的学习率来训练它。模型稍后将被冻结并导出以供以后使用。
t_cnn1.拟合_一个循环(10,最大值_lr=切片(1e-5,1e-4))
t_ cnn1.冻结()
t_cnn1.export(‘/content/drive/MyDrive/CV_Vehicle_classification/model/Bmodel_fastai_resnet50.h5’)
培训和冻结模型
fit_one_cycle()中的切片用于实现判别学习。它基本上告诉模型以1e-5的学习率训练初始层,以1e-4的学习率来训练最终层,以及它们之间的层。其值介于两个学习率之间。
预测
在完成所有模型训练之后,我们只需要预测测试数据集。现在让我们加载之前导出的测试数据和Resnet50模型,并使用它来预测测试数据。
test_data=ImageList.from_df(test,cols=〔’image_name’〕,path=’/content/drive/MyDrive/CV_Vehicle_classification/train_data/images’)
t_rn50=负载_学习者(‘/内容/驾驶/MyDrive/CV_车辆分类/型号/’,’B模型_快速ai_resnet50.h5’,测试=测试_数据)
y _ trn50=t _ rn50.TTA(ds _ type=DatasetType.Test)preds=y _ trn 50〔0〕.argmax(-1)
尾注
看现在我们已经预测了测试数据,我们不需要花费大量时间构建更大的训练数据集,设计和训练我们的深度学习模型,也不会完全耗尽我们的计算资源。
600学习网 » 使用 Fast ai 进行图像分类-600学习网