MMdetection3.3使用技巧
·
1.按照指定评价指标保存最优模型
修改配置文件中default_hooks中的checkpoint字段,具体例子如下:
default_hooks = dict(
checkpoint=dict(
interval=1, # 验证间隔
max_keep_ckpts=1, # 最多保存多少个权重文件
save_best='coco/bbox_mAP_50', # 按照该指标保存最优模型
type='CheckpointHook'),
...)
2.使用tensorboard可视化训练过程
vis_backends = [dict(type='LocalVisBackend'),
dict(type='TensorboardVisBackend') # 使用tensorboard
]
3.根据指定指标的变化自适应调整学习率
param_scheduler = [
dict(
begin=0,
by_epoch=True,
end=1000,
monitor='coco/bbox_mAP_50', # 参考的指标
rule='greater', # 指标变化的评估规则
factor=0.8, # 学习率衰减系数
patience=20, # 20 epoch参考指标不再变化则进行衰减学习率
type='ReduceOnPlateauLR'
)
]
4.早停策略
default_hooks = dict(
...
earlystop=dict(
monitor='coco/bbox_mAP_50', # 参考的指标
min_delta=0,
rule='greater', # 指标变化规则
patience=50, # 参考指标50 epoch没有提升则停止训练
type='EarlyStoppingHook')
...
)
最近使用早停策略训练DDQ踩了一个大坑:min_delta参数默认是0.1,源码中每次得到验证集指标之后,之前的最优指标best_score会加上min_delta,然后与当前指标current_socre进行比较,如果best_score + min_delta < current_score,best_score才会更新成current_score,但是0.1对于mAP50而言过大,相当于10个点的提升,也就是说,如果使用min_delta默认值,则在指定的patience个epoch中,mAP50没有提升10个点,就会停止训练,并且最后日志输出记录的最优指标是第一次验证得到的指标。但checkpointhook仍会正常工作,保存该过程中指标最高的模型权重。因此建议指定min_delta=0。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)