在深度学习计算机视觉领域的实践中,几乎很少人从头开始训练整个卷积神经网络(随机初始化网络权重),因为拥有足够大小的数据集相对较少。
比较实际的做法是:在非常大的数据集(例如, ImageNet,其中包含 120 万张具有 1000 个类别的图像)上预训练卷积神经网络,然后将预训练权重用作目标任务的初始化权重或者固定特征提取器(feature extractor)。
这种在新任务上使用预训练模型(Pre-trained model)解决问题的方法,叫做迁移学习。
其好处有:
- 训练速度快(节约百倍以上时间,相比从头开始训练一个随机初始化的网络)
- 需要的训练数据少(100张/类)
迁移学习的主要应用场景有:
- 微调卷积网络:预训练权重而不是随机参数初始化网络,然后开始训练网络。
- 使用预训练卷积神经网络作为固定特征提取器:冻结除最终全连接层之外的所有网络的权重,然后将最后一个全连接层替换为具有随机权重的新层,并且只训练这一层。
torchvision.models 子包包含用于解决不同任务的模型定义,包括:图像分类、语义分割、目标检测、实例分割、人物关键点检测、视频分类和光流。
更多更丰富的模型在Pytorch Hub中, PyTorch Hub是一个供所有贡献者发布并重用预训练模型的存储库。
PyTorch Hub
网友评论