一、使用环境
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安装环境,例如笔者的
执行这条语句即可安装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的类别。不过这个不改倒是不会报错。
还没完。
找到你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的开源目标检测系统