位置: IT常识 - 正文

MMDetection系列 | 5. MMDetection运行配置介绍(mmdetection optimizer)

编辑:rootadmin
MMDetection系列 | 5. MMDetection运行配置介绍

推荐整理分享MMDetection系列 | 5. MMDetection运行配置介绍(mmdetection optimizer),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:mmdetection中文手册,mmdetection中文手册,mmdetection optimizer,mmdetection resume,mmdetection介绍,mmdetection介绍,mmdetection详解,mmdetection介绍,内容如对您有帮助,希望把文章链接给更多的朋友!

如有错误,恳请指出。

开门见山,基于mmdet的官方文档直接介绍如何进行我们的运行配置。个人觉得,继承于default_runtime.py这个文件之后,主要需要自己稍微更改下的配置主要有7个,分别是:优化器配置、学习率配置、工作流程配置、检查点配置、日志配置、评估配置、训练设置。具体的配置流程如下所示。

如果需要其他钩子函数的实现与配置,具体可以查看参考资料1.

文章目录1. 优化器配置2. 学习率配置3. 工作流程配置4. 检查点配置5. 日志配置6. 评估配置7. 训练设置1. 优化器配置optimizer = dict(type='SGD', lr=0.02, momentum=0.9, weight_decay=0.0001)optimizer_config = dict(grad_clip=None)使用梯度剪辑来稳定训练optimizer_config = dict( _delete_=True, grad_clip=dict(max_norm=35, norm_type=2))

其中,_delete_=True将用新键替换backbone字段中的所有旧键

2. 学习率配置lr_config = dict( policy='step', warmup='linear', warmup_iters=500, warmup_ratio=0.001, step=[8, 11]) # 表示初始学习率在第8和11个epoch衰减10倍

还有其他的配置方案:

Poly schedulelr_config = dict(policy='poly', power=0.9, min_lr=1e-4, by_epoch=False)ConsineAnnealing schedulelr_config = dict( policy='CosineAnnealing', warmup='linear', warmup_iters=1000, warmup_ratio=1.0 / 10, min_lr_ratio=1e-5)使用动量调度加速模型收敛

支持动量调度器根据学习率修改模型的动量,这可以使模型以更快的方式收敛。Momentum 调度器通常与 LR 调度器一起使用

lr_config = dict( policy='cyclic', target_ratio=(10, 1e-4), cyclic_times=1, step_ratio_up=0.4,)momentum_config = dict( policy='cyclic', target_ratio=(0.85 / 0.95, 1), cyclic_times=1, step_ratio_up=0.4,)3. 工作流程配置

工作流是 (phase, epochs) 的列表,用于指定运行顺序和时期。默认情况下,它设置为:

workflow = [('train', 1)]

这意味着运行 1 个 epoch 进行训练。有时用户可能想要检查验证集上模型的一些指标(例如损失、准确性)。在这种情况下,我们可以将工作流设置为

[('train', 1), ('val', 1)]

这样 1 个 epoch 的训练和 1 个 epoch 的验证将被迭代运行。而验证集的损失同样会被计算出来。如果想先进行验证,再进行训练,还可以设置如下:

[('val', 1), ('train', n)]

这样设置表示先对验证集进行验证与损失计算,再进行n个epoch的计算。

4. 检查点配置checkpoint_config = dict(interval=20) # 20个epoch保存一次权重

参数说明见:https://mmcv.readthedocs.io/en/latest/api.html#mmcv.runner.CheckpointHook

CLASSmmcv.runner.CheckpointHook(interval: int = - 1, by_epoch: bool = True, save_optimizer: bool = True, out_dir: Optional[str] = None, max_keep_ckpts: int = - 1, save_last: bool = True, sync_buffer: bool = False, file_client_args: Optional[dict] = None, **kwargs)

interval (int) – The saving period. If by_epoch=True, interval indicates epochs, otherwise it indicates iterations. Default: -1, which means “never”.by_epoch (bool) – Saving checkpoints by epoch or by iteration. Default: True.save_optimizer (bool) – Whether to save optimizer state_dict in the checkpoint. It is usually used for resuming experiments. Default: True.out_dir (str, optional) – The root directory to save checkpoints. If not specified, runner.work_dir will be used by default. If specified, the out_dir will be the concatenation of out_dir and the last level directory of runner.work_dir. Changed in version 1.3.16.max_keep_ckpts (int, optional) – The maximum checkpoints to keep. In some cases we want only the latest few checkpoints and would like to delete old ones to save the disk space. Default: -1, which means unlimited.save_last (bool, optional) – Whether to force the last checkpoint to be saved regardless of interval. Default: True.sync_buffer (bool, optional) – Whether to synchronize buffers in different gpus. Default: False.file_client_args (dict, optional) – Arguments to instantiate a FileClient. See mmcv.fileio.FileClient for details. Default: None. New in version 1.3.16.5. 日志配置MMDetection系列 | 5. MMDetection运行配置介绍(mmdetection optimizer)

包装多个记录器log_config挂钩并允许设置间隔。现在 MMCV 支持WandbLoggerHook、MlflowLoggerHook和TensorboardLoggerHook.

log_config = dict( interval=50, # 每500个迭代就打印一次训练信息 hooks=[ dict(type='TextLoggerHook'), # dict(type='TensorboardLoggerHook') ])

参数说明见:https://mmcv.readthedocs.io/en/latest/api.html#mmcv.runner.EvalHook

CLASSmmcv.runner.LoggerHook(interval: int = 10, ignore_last: bool = True, reset_flag: bool = False, by_epoch: bool = True)[SOURCE]

interval (int) – Logging interval (every k iterations). Default 10.ignore_last (bool) – Ignore the log of last iterations in each epoch if less than interval. Default True.reset_flag (bool) – Whether to clear the output buffer after logging. Default False.by_epoch (bool) – Whether EpochBasedRunner is used. Default True.6. 评估配置

配置的evaluation将用于初始化EvalHook. 除了 key interval,其他参数如metric将传递给dataset.evaluate() evaluation = dict(interval=1, metric=‘bbox’)

参数说明:https://mmcv.readthedocs.io/en/latest/api.html?highlight=EpochBasedRunner#mmcv.runner.EpochBasedRunner

mmcv.runner.EvalHook(dataloader: torch.utils.data.dataloader.DataLoader, start: Optional[int] = None, interval: int = 1, by_epoch: bool = True, save_best: Optional[str] = None, rule: Optional[str] = None, test_fn: Optional[Callable] = None, greater_keys: Optional[List[str]] = None, less_keys: Optional[List[str]] = None, out_dir: Optional[str] = None, file_client_args: Optional[dict] = None, **eval_kwargs)

dataloader (DataLoader) – A PyTorch dataloader, whose dataset has implemented evaluate function.start (int | None, optional) – Evaluation starting epoch. It enables evaluation before the training starts if start <= the resuming epoch. If None, whether to evaluate is merely decided by interval. Default: None.interval (int) – Evaluation interval. Default: 1.by_epoch (bool) – Determine perform evaluation by epoch or by iteration. If set to True, it will perform by epoch. Otherwise, by iteration. Default: True.save_best (str, optional) – If a metric is specified, it would measure the best checkpoint during evaluation. The information about best checkpoint would be saved in runner.meta[‘hook_msgs’] to keep best score value and best checkpoint path, which will be also loaded when resume checkpoint. Options are the evaluation metrics on the test dataset. e.g., bbox_mAP, segm_mAP for bbox detection and instance segmentation. AR@100 for proposal recall. If save_best is auto, the first key of the returned OrderedDict result will be used. Default: None.rule (str | None, optional) – Comparison rule for best score. If set to None, it will infer a reasonable rule. Keys such as ‘acc’, ‘top’ .etc will be inferred by ‘greater’ rule. Keys contain ‘loss’ will be inferred by ‘less’ rule. Options are ‘greater’, ‘less’, None. Default: None.test_fn (callable, optional) – test a model with samples from a dataloader, and return the test results. If None, the default test function mmcv.engine.single_gpu_test will be used. (default: None)greater_keys (List[str] | None, optional) – Metric keys that will be inferred by ‘greater’ comparison rule. If None, _default_greater_keys will be used. (default: None)less_keys (List[str] | None, optional) – Metric keys that will be inferred by ‘less’ comparison rule. If None, _default_less_keys will be used. (default: None)out_dir (str, optional) – The root directory to save checkpoints. If not specified, runner.work_dir will be used by default. If specified, the out_dir will be the concatenation of out_dir and the last level directory of runner.work_dir. New in version 1.3.16.file_client_args (dict) – Arguments to instantiate a FileClient. See mmcv.fileio.FileClient for details. Default: None. New in version 1.3.16.**eval_kwargs – Evaluation arguments fed into the evaluate function of the dataset.7. 训练设置runner = dict(type='EpochBasedRunner', max_epochs=150) # 设置模型训练多少次

参数说明:https://mmcv.readthedocs.io/en/latest/api.html#mmcv.runner.EpochBasedRunner

mmcv.runner.EpochBasedRunner(model: torch.nn.modules.module.Module, batch_processor: Optional[Callable] = None, optimizer: Optional[Union[Dict, torch.optim.optimizer.Optimizer]] = None, work_dir: Optional[str] = None, logger: Optional[logging.Logger] = None, meta: Optional[Dict] = None, max_iters: Optional[int] = None, max_epochs: Optional[int] = None)

总结:

一般来说,我们写配置文件都会继承default_runtime.py这个文件

_base_ = [ '../_base_/default_runtime.py']

这个文件的内容如下所示:

checkpoint_config = dict(interval=5) # 每5个epoch保存一次权重# yapf:disablelog_config = dict( interval=50, # 每500个迭代就打印一次训练信息 hooks=[ dict(type='TextLoggerHook'), # dict(type='TensorboardLoggerHook') ])# yapf:enablecustom_hooks = [dict(type='NumClassCheckHook')]dist_params = dict(backend='nccl')log_level = 'INFO'load_from = None # 加载权重文件resume_from = Noneworkflow = [('train', 1)]# disable opencv multithreading to avoid system being overloadedopencv_num_threads = 0# set multi-process start method as `fork` to speed up the trainingmp_start_method = 'fork'# Default setting for scaling LR automatically# - `enable` means enable scaling LR automatically# or not by default.# - `base_batch_size` = (8 GPUs) x (2 samples per GPU).auto_scale_lr = dict(enable=False, base_batch_size=16)

一般不需要更改太多的内容,可以时代的更改log_config进行合理的打印训练信息,还有设置checkpoint_config进行合理的保存权重文件,其他的设置按默认即可。

下面展示我继承了default_runtime.py后更改的内容,其实就是更改了以上我所介绍的七点内容:

_base_ = [ '../_base_/default_runtime.py']......# optimizeroptimizer = dict( # 设置使用AdamW优化器(默认使用的是SGD) type='AdamW', lr=0.0001, weight_decay=0.0001, paramwise_cfg=dict(custom_keys={'backbone': dict(lr_mult=0.1, decay_mult=1.0)}))evaluation = dict(interval=5, metric='bbox') # 5个epoch验证一次optimizer_config = dict(grad_clip=dict(max_norm=0.1, norm_type=2)) # 设置梯度裁剪(default_runtime.py中默认为None)checkpoint_config = dict(interval=20) # 20个epoch保存一次权重log_config = dict(interval=50, # 每50次迭代训练就打印一次信息(注意是迭代而不是epoch) hooks=[dict(type='TextLoggerHook')])# learning policylr_config = dict(policy='step', step=[100]) # 学习率在100个epoch进行衰减runner = dict(type='EpochBasedRunner', max_epochs=150) # 训练150个epoch

参考资料:

1. Customize Runtime Settings

2. mmcv官方文档

本文链接地址:https://www.jiuchutong.com/zhishi/292341.html 转载请保留说明!

上一篇:【uniapp】页面下拉刷新(uniapp按钮)

下一篇:卡格拉格帝边境公园中一对正在求偶的鸵鸟,南非 (© Tina Malfilatre/Minden Pictures)(卡格拉河)

  • 小米11pro安兔兔跑分(小米11pro安兔兔跑多少分)

    小米11pro安兔兔跑分(小米11pro安兔兔跑多少分)

  • oppo手机照片怎么重命名发给别人(oppo手机照片怎么转换成pdf)

    oppo手机照片怎么重命名发给别人(oppo手机照片怎么转换成pdf)

  • 苹果手机电池黄颜色(苹果手机电池黄色显示)

    苹果手机电池黄颜色(苹果手机电池黄色显示)

  • 微信聊天记录怎么导出(微信聊天记录怎么恢复)

    微信聊天记录怎么导出(微信聊天记录怎么恢复)

  • 红米note8指纹解锁在哪里(红米note8指纹解锁怎么不见了)

    红米note8指纹解锁在哪里(红米note8指纹解锁怎么不见了)

  • 拼多多拼小圈如何取消好友申请(拼多多拼小圈如何关闭不让别人看)

    拼多多拼小圈如何取消好友申请(拼多多拼小圈如何关闭不让别人看)

  • 头条关注的人为何都不显示了(头条关注的人为什么突然不见了)

    头条关注的人为何都不显示了(头条关注的人为什么突然不见了)

  • 宽带连接忘记用户名和密码怎么办(宽带连接忘记用户名)

    宽带连接忘记用户名和密码怎么办(宽带连接忘记用户名)

  • 苹果腾讯会议怎么共享屏幕(苹果腾讯会议怎么开小窗)

    苹果腾讯会议怎么共享屏幕(苹果腾讯会议怎么开小窗)

  • 微信解封人脸识别一直无法通过怎么办

    微信解封人脸识别一直无法通过怎么办

  • 苹果系统更新必须要wifi吗(苹果系统更新必须要求连电脑怎么办)

    苹果系统更新必须要wifi吗(苹果系统更新必须要求连电脑怎么办)

  • 电脑上的文件夹怎么发送到QQ上(电脑上的文件夹如何加密码)

    电脑上的文件夹怎么发送到QQ上(电脑上的文件夹如何加密码)

  • qq垃圾箱在哪里找(qq的垃圾箱在哪)

    qq垃圾箱在哪里找(qq的垃圾箱在哪)

  • 微信朋友圈声音提醒怎么关闭(微信朋友圈声音听不到声音)

    微信朋友圈声音提醒怎么关闭(微信朋友圈声音听不到声音)

  • 淘宝怎么切换卖家模式(淘宝怎么切换卖家中心)

    淘宝怎么切换卖家模式(淘宝怎么切换卖家中心)

  • 小米手机微信语音播放失败怎么回事 (小米手机微信语音来电不响怎么办)

    小米手机微信语音播放失败怎么回事 (小米手机微信语音来电不响怎么办)

  • 步步高x30什么时候上市(步步高x30官网报价)

    步步高x30什么时候上市(步步高x30官网报价)

  • 英特尔显卡驱动程序可以卸载吗(英特尔显卡驱动下载官网)

    英特尔显卡驱动程序可以卸载吗(英特尔显卡驱动下载官网)

  • 苹果6s plus和6plus有什么区别(苹果6s plus和6plus屏幕一样吗)

    苹果6s plus和6plus有什么区别(苹果6s plus和6plus屏幕一样吗)

  • ai如何消除边缘锯齿(ai怎么处理边缘毛糙)

    ai如何消除边缘锯齿(ai怎么处理边缘毛糙)

  • 手机hdb什么意思(手机上hdb是什么意思)

    手机hdb什么意思(手机上hdb是什么意思)

  • 全民k歌中如何修音(全民K歌中如何删掉自己发布的动态)

    全民k歌中如何修音(全民K歌中如何删掉自己发布的动态)

  • mac自带画图工具在哪里(macbookpro画图工具)

    mac自带画图工具在哪里(macbookpro画图工具)

  • 华为p30通话背景怎么设置(华为p30通话背景图怎么换)

    华为p30通话背景怎么设置(华为p30通话背景图怎么换)

  • vue视频像素怎么变清晰(vue视频分辨率)

    vue视频像素怎么变清晰(vue视频分辨率)

  • python的概率分布有哪些类型?(python 概率分布函数)

    python的概率分布有哪些类型?(python 概率分布函数)

  • DedeCMS栏目二级域名设置教程(二级栏目怎么做)

    DedeCMS栏目二级域名设置教程(二级栏目怎么做)

  • 递延所得税什么时候确认
  • 开票和预缴税款跨月
  • 物流公司主营业务范围
  • 开发票商品类别与商品明细的区别
  • 建筑业工程项目登记是哪方提交
  • 收益法评估的基本思路
  • 企业的主管部门承担什么责任
  • 可转换公司债券属于哪一类金融资产
  • 应交税费怎么做分录
  • 股东溢价转让股份交易市场会计分录
  • 房屋租赁需要交税吗?
  • 绿化支出如何做会计处理?
  • 购买资产佣金应该怎么算
  • 本月无销项只有进项申报表如何填写
  • 投资收益会计处理
  • 企业所得税收入大于增值税收入的原因
  • 佣金增值税
  • 设备安装税率是6%还是9%
  • 定额发票验旧怎么操作
  • 发票请求流水号不能为空
  • 应交税费未交增值税怎么计算
  • 应收账款融资的会计如何核算
  • 补开去年的发票怎么结转成本?
  • 申报个税按计提工资还是实际发放
  • 中小企业结算时间不超60天
  • 工效挂钩企业工资税前扣除有何规定?
  • 如何接收银行承兑
  • 今年利润弥补以后怎么算
  • 怎么修改以前年度的账
  • 期货保证金的计算公式当日盈亏怎么算
  • windows7增加桌面
  • php中file
  • 售后回购怎么做账务处理
  • 资产负债表应付账款怎么填列
  • 单位和个人交付的区别
  • 仓鼠模拟器3d无限金币中文
  • 本月增加的无形资产数量
  • thinkPHP中_initialize方法实例分析
  • 深度学习部署(十九): CUDA RunTime API YOLOV5后处理cpu解码以及gpu解码
  • vue路由跳转携带参数怎么接收
  • python中strftime用法
  • 购买黄金会计分录怎么写
  • 弥补以前年度亏损怎么算
  • 企业自产自用的产品需要缴纳增值税吗
  • 土地增值税间接转让怎么算
  • 无票收入小规模怎么做账,要交税吗?
  • 销售货物提供运输服务分录
  • 用友怎么取消月结
  • 利息收入怎么做红字
  • 外币折算差额怎么计算
  • 押金为什么要一个月才退
  • 工程施工的成本
  • 购置办公大楼,会计处理
  • 银行利息为什么用红字
  • 鉴证咨询公司
  • 旅游业最新增值税政策
  • 购买增值税发票系统金税盘如何入账?
  • 旅游,饮食业会议内容
  • ubuntu安装教程14.04
  • sql语句查询有多少条数据
  • sql server查询
  • os x10.11el capitan公测版beta5更新了什么?os x10.11el capitan公测版beta5发布下载
  • 繁体系统安装简体软件
  • 预览pdf文件
  • windows vista在哪里
  • gzip压缩慢
  • conf文件用什么软件打开
  • centos sh
  • 如何彻底解决win10自动重启
  • win10系统需不需要装杀毒软件
  • linux与windows
  • nodejs 异步io底层原理
  • python单子
  • jquery弹出窗口
  • Unity Batch 对 Vertex Shader 产生影响
  • 用AutoCompleteTextView实现自动提示
  • 青岛税务局局长是什么级别?
  • 组织创新包括哪些类型
  • 电子税务局备案财务会计制度
  • 智能财税代理实务实训过程
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设