Transfer learning迁移学习小结

为什么要用到迁移学习:模型参数过多,数据量过小,直接训练容易导致过拟合。
如何使用迁移学习:1:在大数据集上进行训练,在小数据集上进行finetune。2:根据情况选择是否冻结其中的layer。
背景:在CItyscape上进行训练,cityscape有2975张图片用于训练,然后为了在KITTI semantic segmentation上得到一个结果:
在这里插入图片描述
看了其他论文有两个方案,1:直接训练使用十折交叉验证。2:使用在Cityscape数据集上训练的权重微调KITTI。
对于方案一:直接训练,结果还是过拟合,在KITTI的测试集可以达到70的mIoU,但是递交到网站上去测试没见过的图,结果只有45.
对于方案二:微调也分冻结encoder参数微调decoder,和加载预训练权重作为初始化参数,重新训练。
首先第一种:

checkpoint = torch.load(args.finetune)
model.load_state_dict(checkpoint['state_dict'])	
print(f'Loaded weights for finetuning: {args.finetune}')
for name, param in model.named_parameters():
    f 'encoder_rgb' in name or 'encoder_depth' in name :
    	param.requires_grad = False

第二种:直接加载将上面的param.requires_grad = False注释掉,也就是重新训练。微调的讲解在最后五分钟
需要注意的是:对Cityscape数据集的预处理要和KITTI的统一,如果不统一的话,收敛的速度特别慢,且结果比较差。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值