mmdetection训练、测试自己的模型

   mmdetection是商汤科技和香港中文大学联合打造的一个开源的基于pytorch实现的深度学习目标检测工具箱。支持Faster-RCNN、Mask_RCNN、Fast-RCNN等多种主流框架。本教程主要关于如何在自己的机器上安装mmdetection并训练自己的数据集

注:本人安装环境为Linux,环境中已安装Anaconda

一、mmdetection安装

项目仓库地址:https://github.com/open-mmlab/mmdetection
安装要求:
python 3.6+
pytorch 1.2(目前mmdetection主分支工作在pytorch1.3~1.5,j旧版本的分支是1.1 ~ 1.4,可以根据需要自己选择安装的版本)
CUDA 9.2+ (如果从源码安装,9.0也能兼容)
gcc 5+
mmcv
注:安装前请检查自己的系统环境,避免因为前期准备不足导致后期出现奇奇怪怪的错误,同时避免重复安装,节约时间。

准备

有时候在官网下,载网速过慢会导致下载中断(失败),所以配置一个清华镜像源,下载快速又稳定,贼香~

#!/bin/bash
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
conda config --set show_channel_urls yes

安装pytorch1.2+torchvision 0.4.0 cuda9.2

conda install pytorch==1.2.0 torchvision==0.4.0 cudatoolkit=9.2

安装mmcv

下面两种方法选一种就好啦 
1.从源码安装
git clone https://github.com/open-mmlab/mmcv.git
cd mmcv
pip install -e .#注意有个点!!!!
2.直接安装
pip install mmcv

安装Cython

pip install Cython

安装mmdection

git clone https://github.com/open-mmlab/mmdetection.git
cd mmdetection
python setup.py develop#或者   pip install -v -e .**(有个点!!!!**)

测试安装是否成功

测试文件:test.py 关于checkpoint文件官方给出的是一个链接,下载速度极慢,所以提前下载好了再测试,下载链接:

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,show=False,out_file='result_{}..jpg')#默认show=True,Linux下会报cannot connect to X server的错误,所以干脆输出图片了
 
# 测试一系列图片
# 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))

pth文件的下载链接: https://pan.baidu.com/s/1IA9fGHQYSdjje3N1POGFKQ 提取码: nbq6

我遇到的错误

错误1: undefined symbol: _ZN3c105ErrorC1ENS_14SourceLocationERKSs
原因:torchvision安装出错或指责cuda版本不适配,尝试重新安装,也可能是粗大版本不适配,总之多尝试几种方法就可以了,如果还是不行的话,把mmdetection卸载重装
总之是文件遭到损坏/版本不匹配,导致部分信息丢失,目前最快速解决方法是卸载重装。

错误2:cannot import name ‘get_dist_info’ from ‘mmcv.runner.utils’ (/opt/conda/envs/env_name/lib/python3.7/site-packages/mmcv/runner/utils.py)
解决方法:注释sampler.py中的导入get_dist_info语句,这个包在文件中并没有被使用到,但是检测到这一步会报错,可能是版本更新导致的问题。

二、训练自己的数据(coco数据集)

coco数据集的结构建议按照官方给的格式布局.
链接数据集地址:例如: ln -s $COCO_ROOT data/coco(data/coco是 我的数据集所在的根目录)
在mmdetection/mmdet/datasets 目录下设置相关数据集,例如设置coco数据集在coco.py中,修改所需要的CLASSES

修改configs下你所使用的配置文件:
主要修改dataset_type、训练集、验证集、测试集的地址

# dataset settings
dataset_type = 'CocoDataset'
data_root = './data/coco/'

此外在optimizer中修改优化方法、学习率。

#optimizer
optimizer = dict(type='SGD', lr=0.02, momentum=0.9, weight_decay=0.0001)
optimizer_config = dict(grad_clip=dict(max_norm=35, norm_type=2))

调整num_classes为自己数据集类别数目+1,该数据不调整的话,训练时会提示错误
调整imgs_per_gpu可以修改batch大小,batch过大时可能出现shm不足,如果改为1之后依然出现内存不足,那么需要修改 num_workers=0 。(mmdet/datasets/loader/builder_loader.py)

runtime settings中可以设置在运行过程中的各项默认参数
开始训练
python tools/train.py configs/xxxxx.py(你选择的 配置文件) --gups 1
–gpus 可以设置训练的GPU数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值