mmdetection安装&训练VOC格式数据

一、使用环境

Ubuntu16.04

Cuda9.0 + cudnn7.0

Python3.7

Anaconda3

商汤科技和香港中文大学联合开源的深度学习目标检测工具箱mmdetection

二、安装

1.使用Anaconda创建虚拟环境:mmdetection

conda create -n mmdetection python=3.7 -y

source activate mmdetection

此时,虚拟环境已经被创建并且激活。由于最近Anaconda清华大学镜像服务又被重新授权,所以大家可以继续使用清华源。

2.安装Pytorch1.1

打开pytorch官网,选择对应的pytorch安装环境,例如笔者的

mmdetection安装&训练VOC格式数据_第1张图片

执行这条语句即可安装pytorch1.1,mmdetection是支持这个版本的。

安装完成后,可执行下面的语句来测试是否安装成功。

python

>>import torch

>>import torchvision

3.安装Cython

conda install cython

4.安装mmcv

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

 注意pip install后面的点

5.安装mmdetection

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

参考博客:https://blog.csdn.net/hajlyx/article/details/83542167#4_mmcv_53

至此,已经完成了安装mmdetection的步骤。如果想要用demo测试一下的话,参考我上面给出的博客链接。

三、准备数据——pascal_voc格式

这里不介绍数据集的制作,网上教程备矣。本节主要介绍已经有现成数据集的情况下,应该如何和mmdetection项目结合起来。网上介绍coco数据集的很多,这里来介绍一下与voc标注方法一致的情况。

1.首先,应该把数据放在哪?参考下面的路径划分:

mmdetection
├── mmdet
├── tools
├── configs
├── data
│   ├── VOCdevkit
│   │   ├── VOC2007
│   │   │   ├── Annotations
│   │   │   ├── JPEGImages
│   │   │   ├── ImageSets
│   │   │   │   ├── Main
│   │   │   │   │   ├── test.txt
│   │   │   │   │   ├── trainval.txt

 如果你有很多个项目,那么每个项目都拷贝一份数据既浪费时间又占用空间,所以推荐软连接的形式:

cd mmdetection
mkdir data
ln -s 你数据的存储路径 data/VOCdevkit

 2.数据集放进来了,代码中哪些地方需要修改

首先是这里:mmdet/dataset/voc.py,把里面的类别改成你自己数据集的类别。

接着,mmdet/core/evaluation/class_name.py,把里面的voc_classes()改成你自己数据集的类别。这个关系到后面test的时候结果图中显示的类别名称。下图就是我没改的后果......显示的依旧是pascal voc的类别。不过这个不改倒是不会报错。

mmdetection安装&训练VOC格式数据_第2张图片

还没完。

找到你anaconda的文件夹,anaconda3/envs/mmdetection/lib/python3.6/site-packages/mmdet-0.6.0+68589d3-py3.6.egg/mmdet,这个文件夹里有和上述文件位置相同的两个文件,其中的内容也要对应做修改,否则跑的时候依然会报错/显示错误。

参考博客:https://blog.csdn.net/jy1023408440/article/details/89474759,感谢此处debug

最后,在config文件里,num_classes是不是等于类别数加1、dataset_type = 'VOCDataset'、data_root = 'data/VOCdevkit/',这些都要注意

3.修改config文件

其实上面已经提及了修改config文件的一些操作。

首先是选择你需要的模型的文件,这个在config文件夹中有。然后就是调整里面的参数,这个因人而异,调整自己需要的参数即可。有两点需要说明的是,work_dir是log文件和模型文件存储路径,需建一个文件夹mmdetection/work_dirs(或者自己建别的,那你代码里就要对应好路径);load_from是加载模型的路径,None表示从预训练模型加载(pretrained参数会下载一个预训练模型),但如果直接load他们已经训练好的模型,因为是在coco上训练的,直接load进来会有问题,所以load一般的vgg或者resnet的pth文件就可以了。

四、训练

python tools/train.py configs/pascal_voc/faster_rcnn_r50_fpn_1x_voc0712.py --gpus 1 --work_dir work_dirs

五、测试

 首先产生pkl文件,pkl文件需要建立一个文件夹eval

python tools/test.py configs/pascal_voc/faster_rcnn_r50_fpn_1x_voc0712.py work_dirs/latest.pth --out=eval/result.pkl

 计算mAP

python tools/voc_eval.py eval/result.pkl configs/pascal_voc/faster_rcnn_r50_fpn_1x_voc0712.py

推荐阅读:

mmdetection使用自定义的coco格式数据集进行训练及测试

深度学习目标检测工具箱mmdetection,训练自己的数据

mmdetection的configs中的各项参数具体解释

mmdetection - 基于PyTorch的开源目标检测系统

你可能感兴趣的:(mmdetection安装&训练VOC格式数据)