mmdetection常见问题总结

mmdetection运行以及问题总结

最近因为工作需要,跑了下mmdetection,复现了论文的精度,总结下其中遇到的问题,希望对大家有帮助哦~

1.环境设置

  • 操作系统:ubuntu16.04
  • python3.7
  • pytorch1.6.0+torchvision0.7.0
  • mmdetection2.10.0+mmcv1.2.4

关于环境这里要重点说明一下:

  • mmdetection的版本的选择:强烈建议先看下后面连接中各个release版本的代码,选择自己需要的版本。最新的应该是2.15.1,也是直接执行git命令git到本地的版本,每一个版本相比之前做了哪些update,修复了哪些bug,链接里面说的很清楚:mmdetection版本代码连接 (当初就是啥也没看随便下了一版,复现的时候,缺少各种文件qaq)

  • torch和torchvision版本匹配问题,就不再说了哦,一定要按照相应的教程来

  • mmdetection版本适合的pytorch版本
    对于pytorch1.3+的版本,最新版即v2.15.1都是work的,v1.x的旧版mmdetection适合pytorch1.1-1.4,但是作者推荐v2.0及以上的mmdetection,所以最好是选择新版的mmdetection,反正功能更全面,bug还少

  • mmcv版本的选择: mmcv的版本取决于你的torch版本+mmdetection的版本+cuda的版本,官网上给出了不同环境下的安装命令:在这里插入图片描述
    但是注意下载了相应版本的mmcv不意味着后面不会报错,因为你无法确保下载的mmcv版本适合相应的mmdetection,so这个问题怎么解决呢,其实我这边一般都是下载一版mmcv,运行mmdetection看看有无报错,报错信息会提示你安装什么版本的mmdetection,这时再去执行命令安装就好了,嘿嘿

pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/{cu_version}/{torch_version}/index.html

for example:

pip install mmcv-full==1.3.9 -f https://download.openmmlab.com/mmcv/dist/cu111/torch1.9.0/index.html

2.运行过程

经过上述步骤,相信你已经配好环境啦,网上有很多测试的方法,可以去测试ing~~~,小编在这里先给大家说下train和test的方法:
首先我们来看下train文件来明确下我们必须给出哪些参数的设置:

  • config:运行的配置文件,里面包含了你想运行的网络,训练参数设置,数据集设置等文件的路径,这是必须要给出的
  • work-dir:模型以及log文件保存路径,也是必须要初始化的参数
  • resume-from:这个参数取决于你是刚开始训练还是在已有模型的基础上训练,若是后者需要给出模型文件的路径
  • gpus:需要使用的gpu的数量

上面的是必须要给出的参数,其他的大家可以去了解下,这里小编以运行maskrcnn做coco数据集的instance segmentation为例:
分布式训练命令:

./tools/dist_train.sh ./configs/mask_rcnn/mask_rcnn_r50_fpn_1x_coco.py --work-dir ./checkpoint --gpus 4

非分布式训练命令:

python ./tools/train.py ./configs/mask_rcnn/mask_rcnn_r50_fpn_1x_coco.py --work-dir ./checkpoint --gpus 4

这边只是给出了最简单的运行方法,不是绝对的哦,要根据自己需要去了解不同参数意义再去使用
test方法就比较简单了,同样需要大家去自己了解参数的含义:

python ./tools/test.py ./configs/mask_rcnn/mask_rcnn_r50_fpn_1x_coco.py ./checkpoint/latest.pth --out ./result.pkl --eval bbox segm

plus:如果需要可视化某些参数的变化:
这边可视化的是loss的变化,可以根据自己需要可视化不同的变量值,只需要改变key的值就可以了,好像有loss/AP/acc等选项。

python tools/analysis_tools/analyze_logs.py plot_curve ../checkpoint/20210815_093915.log.json --keys loss --out ./plot_result/1.png

在这里插入图片描述
在这里插入图片描述

问题总结

这里只总结下我遇到的问题,大家可以参考下:

  1. 在服务器上运行会出现错误,类似于“ no directory or file exists:./temp/xxxx",这种错误的原因一般是你当前使用的config文件出了问题,应该比较少出现,可以用本地的文件替换服务器上文件试一下。
  2. 学习率以及batchsize设置:在这里插入图片描述
    位于图片上的位置,有几种schedule方法可以选择,我们可以打开schedule文件看一下:
    在这里插入图片描述
    这边的lr_config指的是学习率变化策略,图片中给出的是线性增加策略,准确来说,初始学习率为warmup_ratio的值0.001,在前500个iters线性增加学习率,之后的iter保持optimizer设置的0.02不变,直到第8个epoch开始学习率降低。

学习率怎么设置呢??
我们举个例子,代码中是以每块卡默认跑两个batch为例的,可以在代码(如下图)找到batchsize的设置:
在这里插入图片描述

打个比方,论文的作者使用了8块卡,每块卡上跑两个batch,学习率设置为0.02,那么如果你只有4块卡,每块卡跑1个samle,那么你的学习率应该设置为0.005,是比较简单的线性关系。

3.如果遇到了缺少各种文件的问题,那就是你的版本不匹配的问题了qaq,建议好好看下前面提到的版本对应的解释。
4.另外自己在训练的时候一定要记得加载预训练模型呐,如果不加载的话,精度相差非常大嘞~~

  • 7
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值