利用深度学习的方法进行图像分类及目标检测时,由于自己数据集可能相对较小,直接利用自己的数据集进行网络的训练,非常容易过拟合。在迁移学习中,我们首先在一个基础数据集和基础任务上训练一个基础网络,然后我们再微调一下学到的特征,或者说将它们迁移到第二个目标网络中,用目标数据集和目标任务训练网络。
对于计算机视觉领域的图像特征提取的基础卷积网络backbone往往采用在ImageNet数据集上训练得到的预训练模型,在torchvision中存储了基础常用的基础网络的网络结构及预训练参数,例如VGG,inception,resnet,densenet,shufflenet,squeezenet等,可以直接调用,但是在目标检测中,我们往往仅仅使用这些网络的一些底部的层,上边的一些卷积层需要根据自己依据实际问题设计;或者在图像分类中,结果输出的类别往往不会正好与给定的相同,因而都需要对原始网络及参数进行修改
torchvision的预训练模型地址github.com1、pytorch中的预训练模型
在上边的连接地址中有各个基础网络模型的程序源码,还有预训练模型参数文件的下载地址,使用时主要采用下边代码块中的文件直接引用
import torchvision.models as models
#resnet
model = models.resnet50(pretrained=True)
#vgg
model = models.vgg16(pretrained=True)
2、预训练模型的修改
在实际的应用中,往往不能直接应用导出的网络模型,