ubuntu使用pytorch训练出现killed_目标检测之pytorch预训练模型的使用(削减削减网络层,修改参数)fine-tune技巧...

在深度学习的图像分类和目标检测任务中,使用预训练模型能有效避免过拟合。本文聚焦于在Ubuntu上使用PyTorch训练时遇到的"killed"问题,并探讨了如何对预训练模型进行调整,如修改参数、增减卷积层以适应不同的任务需求。重点介绍了如何在ResNet152基础上进行fine-tune,包括加载state_dict初始化网络和利用kaiming_normal_初始化新增层。

利用深度学习的方法进行图像分类及目标检测时,由于自己数据集可能相对较小,直接利用自己的数据集进行网络的训练,非常容易过拟合。在迁移学习中,我们首先在一个基础数据集和基础任务上训练一个基础网络,然后我们再微调一下学到的特征,或者说将它们迁移到第二个目标网络中,用目标数据集和目标任务训练网络。

对于计算机视觉领域的图像特征提取的基础卷积网络backbone往往采用在ImageNet数据集上训练得到的预训练模型,在torchvision中存储了基础常用的基础网络的网络结构及预训练参数,例如VGG,inception,resnet,densenet,shufflenet,squeezenet等,可以直接调用,但是在目标检测中,我们往往仅仅使用这些网络的一些底部的层,上边的一些卷积层需要根据自己依据实际问题设计;或者在图像分类中,结果输出的类别往往不会正好与给定的相同,因而都需要对原始网络及参数进行修改

torchvision的预训练模型地址​github.com

1、pytorch中的预训练模型

在上边的连接地址中有各个基础网络模型的程序源码,还有预训练模型参数文件的下载地址,使用时主要采用下边代码块中的文件直接引用

import torchvision.models as models

#resnet
model = models.resnet50(pretrained=True)
 
#vgg
model = models.vgg16(pretrained=True)

2、预训练模型的修改

在实际的应用中,往往不能直接应用导出的网络模型,均需要对网络的模型进行一定的修改才能使用,例如在图像分类任务中,我们任务的分类数目不一定刚好与imagenet数据集模型类别一致(1000类),在使用时就需要自己对模型参数进行修改(或者直接修改最后一层,然后自己建立合适的层进行自己算法的分类操作)。

在目标检测中往往自己需要建立特征提取的基础网络,需要有选择的建立适合自己特定需求的网络,然后利用与预训练模型结构相同的部分进行初始化,加快

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值