迁移学习(Transfer learning)是指将已训练好的模型(通常是一个大规模的神经网络)的部分或全部权重作为另一个模型的初始权重,以加快新模型的训练速度、提高模型的性能,或者让新模型在相对较小的数据集上获得良好的泛化能力。在实践中,迁移学习被广泛应用于计算机视觉、自然语言处理、语音识别等领域。
具体来说,迁移学习通常分为以下几个步骤: 1.选择一个已训练好的模型作为源模型(通常是一个大型的神经网络,例如在ImageNet上训练过的ResNet、VGG等),并在其基础上定义一个新的模型,通常用于新任务的解决或者原任务的改进; 2.根据新模型的需求,冻结源模型的一部分或全部层,并将其权重作为新模型的初始权重; 3.在新的数据集上对新模型进行微调,通常只需要训练几个 epoch 即可得到较好的效果; 4.根据新任务的需要,对模型进行进一步调整,例如调整超参数、设计合适的损失函数等。
在实现迁移学习时,通常使用Keras等高阶深度学习框架,可以很方便地调用已训练好的模型,并且快速构建和训练新模型。
MindCV迁移学习流程:
1 下载案例所用的数据集
2 载入数据集 mindcv.data中的create_dataset函数
(注意: 自定义数据集的目录结构应与ImageNet一样,即root -> split -> class -> image 的层次结构)
3 数据增强 (扩充数据集 减轻过拟合)
4 模型微调
预训练模型加载
模型训练
模型评估
详细代码参考mindcv/finetune_CN.md at main · mindspore-lab/mindcv · GitHub