mmdetection 学习小结

笔者最近由于项目学习了一下 mmdetection 工具箱,这里记录一下心得体会!笔者的 mmdetection 版本为 v1.0rc0 (27/07/2019)

 

目录

参考网址

安装教程

1.打开终端,使用conda创建一个虚拟环境

2.安装Pytorch(2019.09.24安装的是 Pytorch1.2)

3.安装Cython

4.安装mmcv

5.安装mmdetection

6. 测试demo

训练自己的COCO数据

1. 准备coco数据

2. 训练前修改文件

3. 训练

Tips


 

参考网址

 

安装教程

笔者最开始尝试将mmdetection安装在windows系统中,试了一天也没有成功,果断放弃。然后在linux系统中,半小时就配置完了!所以还是建议参考官方安装配置方法,装在linux系统中较方便!

环境支持:

  • cuda 9.0 + cudnn 9.1
  • python 3.7
  • Anaconda 3

依赖库:

  • Pytorch 1.2+ (2019.09.24时,python3.7需要搭配pytorch 1.2 ,笔者最开始安装1.1时报错)
  • cython
  • mmcv

步骤:

1.打开终端,使用conda创建一个虚拟环境

conda create -n open-mmlab python=3.7
conda activate open-mmlab

这两句官方配置代码,conda activate open-mmlab 在笔者的linux系统中并不好用,换成 source activate open-mmlab 才激活虚拟环境。

2.安装Pytorch(2019.09.24安装的是 Pytorch1.2)

conda install pytorch=1.2 -c pytorch

安装好以后,进入Python环境,输入 import torch 测试是否安装成功,不报错则说明安装成功

3.安装Cython

conda install cython

4.安装mmcv

mmcv也是mmdetection团队开发的一个CV库,提供了很多基本功能,所以需要先安装这个。后续你也可以根据自己的需要对这个库进行修改,但是每次修改好你都需要使用如下命令重新安装mmcv,否则你的修改是起不了作用的。

git clone https://github.com/open-mmlab/mmcv.git
cd mmcv
pip install .

注意最后一句 pip install . 后面有个点!!!

笔者在这里遇到过一些问题,安装mmcv之前需要预先安装 pycocotools、terminaltables、Pillow、scikit-image、scipy、matplotlib等依赖库,需要先用 conda install xxx 或者 pip install xxx 等命令安装,再安装mmcv。

5.安装mmdetection

最新的(2019.09.24)官方安装代码如下:

git clone https://github.com/open-mmlab/mmdetection.git
cd mmdetection
python setup.py develop

笔者注意到,一些之前的安装教程需要先编译  ./compile.sh 再进行安装,但是最新的库已经取消 ./compile.sh 编译过程!

所以在安装mmdetection时,最主要的还是参考最新的官方安装教程!

6. 测试demo

将下方的代码写入py文件,并存放到mmdetection文件夹目录下,然后运行。该代码的功能是检测图片中的目标,测试模型是官方给出的Faster-RCNN-fpn-resnet50的模型,运行代码会自动下载模型。由于模型是存储在亚马逊云服务器上,速度可能会稍慢,如果下载失败可以通过网盘链接mmdetection(密码:dpyl)进行下载,存放到mmdetection文件夹目录下,然后修改下方代码的相关部分
注:感谢CSDN博主「藏云阁主」的网盘分享,原文链接:https://blog.csdn.net/hajlyx/article/details/83542167

from mmdet.apis import init_detector, inference_detector, show_result
 
# 首先下载模型文件https://s3.ap-northeast-2.amazonaws.com/open-mmlab/mmdetection/models/faster_rcnn_r50_fpn_1x_20181010-3d1b3351.pth
config_file = 'configs/faster_rcnn_r50_fpn_1x.py'
checkpoint_file = 'checkpoints/faster_rcnn_r50_fpn_1x_20181010-3d1b3351.pth'
 
# 初始化模型
model = init_detector(config_file, checkpoint_file)
 
# 测试一张图片
img = 'test.jpg'
result = inference_detector(model, img)
show_result(img, result, model.CLASSES)
 
# 测试一系列图片
imgs = ['test1.jpg', 'test2.jpg']
for i, result in enumerate(inference_detector(model, imgs, device='cuda:0')):
    show_result(imgs[i], result, model.CLASSES, out_file='result_{}.jpg'.format(i))

上述demo代码笔者亲测可用,附上跑出的第一张图片,虽然fp高的惊人,但还是证明 安装的mmdetection 已经好用了!

也可以在官方给的链接下载预训练模型

https://github.com/open-mmlab/mmdetection/blob/master/MODEL_ZOO.md

 

训练自己的COCO数据

注:这里主要参考CSDN博主「Yee_Ko」的原创文章,原文链接:https://blog.csdn.net/gaoyi135/article/details/90613895

1. 准备coco数据

需要说明的是官方提供的所有代码都默认使用的是coco格式的数据集,所以不想太折腾的话就把自己的数据集转化成coco数据集格式吧。各种类型数据转coco格式脚本见:转换工具箱 。推荐使用其中的labelme2coco.py文件。

制作好数据集之后,官方推荐coco数据集按照以下的目录形式存储:

mmdetection
├── mmdet
├── tools
├── configs
├── data
│   ├── coco
│   │   ├── annotations
│   │   ├── train2017
│   │   ├── val2017
│   │   ├── test2017
 

2. 训练前修改文件

笔者用的模型是 ‘configs/faster_rcnn_r50_fpn_1x.py

1). 修改 configs/faster_rcnn_r50_fpn_1x.py data_root 为自己的COCO数据集绝对路径

2). 修改 configs/faster_rcnn_r50_fpn_1x.py work_dir 为训练后模型存储路径

3. 训练

官方推荐使用分布式的训练方式,这样速度更快,如果是coco训练集,修改CONFIG_FILE中的pretrained参数,改为你的模型路径,然后运行下方代码

./tools/dist_train.sh /home/*****/mmdetection/configs/faster_rcnn_r50_fpn_1x.py <GPU_NUM> [optional arguments]

如果不想采用分布式的训练方式,或者你只有一块显卡,则运行下方的代码

python tools/train.py /home/*****/mmdetection/configs/faster_rcnn_r50_fpn_1x.py --gpus 0

至此,网络已经开始训练了!训练完成后,利用上述测试demo.py的代码测试即可!

 

Tips

笔者在安装mmdetection的过程中,还遇到过显卡驱动不兼容的问题!

参考了 Linux安装NVIDIA显卡驱动的正确姿势 这篇博文后,只用了两行语句完美解决了问题。

ubuntu-drivers devices   # 查询所有ubuntu推荐的驱动
sudo ubuntu-drivers autoinstall

查看显卡信息:

watch -n 0.1 nvidia-smi

 

  • 5
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
mmdetection,有两种设置学习率的方法。第一种方法是在训练命令后面添加参数--auto-scale-lr。这种方法会根据训练的规模自动调整学习率。第二种方法则是根据使用的GPU数量和每个GPU的图像数量来设置学习率。具体地,当使用8个GPU且每个GPU处理2个图像时,学习率为0.02;当使用4个GPU且每个GPU处理2个图像时,学习率为0.01;当使用2个GPU且每个GPU处理2个图像时,学习率为0.005;当使用1个GPU且每个GPU处理2个图像时,学习率为0.0025。 在训练过程,还可以通过train.py的参数来调整学习率。例如,--work-dir参数用于指定训练保存模型和日志的路径,--resume-from参数用于从预训练模型checkpoint恢复训练,--no-validate参数用于在训练期间不评估checkpoint,--gpus参数用于指定训练使用的GPU数量,--gpu-ids参数用于指定使用哪一块GPU,--seed参数用于设置随机种子,--deterministic参数用于是否为CUDNN后端设置确定性选项,--options参数用于指定其他参数的字典,--launcher参数用于指定作业启动器,--local_rank参数用于指定LOCAL_RANK,--autoscale-lr参数用于根据测试数量自动缩放学习率。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [MMDetection实战:MMDetection训练与测试](https://blog.csdn.net/hhhhhhhhhhwwwwwwwwww/article/details/124647370)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* [【mmdetectionmmdetection学习率设置](https://blog.csdn.net/wxd1233/article/details/123128276)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值