mmdetection冻结网络参数训练

MMdetection针对模型backbone进行冻结参数训练问题



问题

原以为MMdetection针对模型backbone处进行参数冻结训练网上会有大量的教程,刚刚网上查了一下没找到,于是自己动手去发现

解决

以YOLOX模型为例,调用CSPDarknet时,定义了_freeze_stage方法,并在train方法中调用。self.frozen_stages默认为-1,即不会对模型进行参数冻结,
在这里插入图片描述

1、可以在定义CspDarknet类时,构造函数__init__中frozen_stages=如0,1,2,3(注意不要超过stages数量)
2、也可以在配置文件中backbone的字典里添加frozen_stages,如:ackbone=dict(type=‘CSPDarknet’, deepen_factor=0.33, widen_factor=0.5,frozen_stages=2)
在这里插入图片描述

可能存在问题

假使定义的runner属于epoch_based_runner,在下图的epoch_based_runner中可以查看到,epoch_based_runner中定义的train函数中调用了model的train方法,但是model的train方法一直是冻结网络参数,因此可以再定义一个train_unfrozen方法,设置结构的required_grad=True。
在这里插入图片描述
在这里插入图片描述
并且在epoch_based_runner中的train方法中根据self.epoch传入epoch_runner中,选择调用model.train()还是model.train_unfrozen()。
在这里插入图片描述

总结

如果有疑问或者意见可以评论留言,谢谢

mmdetection是一个基于PyTorch的开源目标检测框架,支持多种经典的目标检测算法,其中包括SSD算法。下面是训练SSD网络的步骤: 1. 准备数据集:首先需要准备训练数据集,包括图像和对应的标注文件。标注文件可以是Pascal VOC、COCO等格式。 2. 配置训练参数:在mmdetection的配置文件中,可以设置SSD算法的网络结构、训练数据集、优化器、学习率等参数。可以根据自己的需求进行修改。 3. 启动训练:使用命令行工具在终端中输入训练命令,启动训练。例如: ``` python tools/train.py configs/ssd/ssd300_coco.py ``` 这个命令将使用配置文件`ssd300_coco.py`来训练SSD网络。 4. 观察训练过程:训练过程中可以观察训练日志,了解当前的训练状态和训练效果。可以使用tensorboard来可视化训练过程。 5. 评估模型:训练完成后,可以使用命令行工具来评估模型的性能。例如: ``` python tools/test.py configs/ssd/ssd300_coco.py work_dirs/ssd300_coco/latest.pth --eval bbox ``` 这个命令将使用配置文件`ssd300_coco.py`和最新的模型权重文件`latest.pth`来评估模型在检测边界框方面的性能。 6. 导出模型:如果需要将训练好的模型导出到其他平台或设备上使用,可以使用命令行工具来导出模型。例如: ``` python tools/export.py configs/ssd/ssd300_coco.py work_dirs/ssd300_coco/latest.pth --output-dir=outputs ``` 这个命令将使用配置文件`ssd300_coco.py`和最新的模型权重文件`latest.pth`来导出模型,并将输出文件保存在`outputs`文件夹中。
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值