MMDetection是什么?
MMDetection是一个基于Pytorch的目标检测开源工具箱,简直是懒狗福音啊~
放一下官方的GitHub链接:GitHub - open-mmlab/mmdetection: OpenMMLab Detection Toolbox and Benchmark
MMDetection的主要特征:
- 模块化设计
将检测框架解耦成不同的模块组件,通过组合不同的模块组件,用户可以便捷地构建自定义的检测模型
- 丰富的即插即用的算法和模型
支持众多主流的最新的检测算法,例如 Faster R-CNN, Mask R-CNN, RetinaNet等
- 速度快
基本的框和mask操作都实现了GPU版本,训练速度快
- 性能高
牛逼的开发团队
安装全过程及问题解决
1. 相关环境配置要求
话不多说,直接开干,首先按照官方要求的安装环境:
- Linux or macOS (Windows is in experimental support)
- Python 3.6+
- PyTorch 1.3+
- CUDA 9.2+ (If you build PyTorch from source, CUDA 9.0 is also compatible)
- GCC 5+
- MMCV
这里我个人的安装环境是这样的:
- Linux(Ubuntu16.04)
- Python 3.7.7
- PyTorch 1.6.0
- CUDA 10.1
- GCC 5.4.0
- MMCV
可以通过以下命令来查看各种包的版本;
- 查看pytorch版本:
- 查看cuda版本:nvcc --version
- 查看gcc版本:gcc --version
---------------------------------------------------------------------------------------------------------------------------------
建议:
- pytorch, python....默认不要安装最新版的
- 为了避免安装包版本冲突问题,建议创建一个conda虚拟环境专门来存放相关包,这一步应该在安装pytorch等包之前执行,具体命令如下:
conda create -n openmmlab python=3.7 -y conda activate openmmlab
openmmlab可以设置成自己喜欢的环境名称
-
建议在linux系统上安装,windows虽然目前已支持,但是版本比较旧
---------------------------------------------------------------------------------------------------------------------------------
2. 安装MMDetection
首先我们先把相关文件下载下来
通过进入目标目录git clone...或者直接下载压缩包的形式
这是文件的大概组成,其中demo主要存放demo图片和视频,demo脚本;configs主要存放各种算法框架的脚本,docs文件里面的install.md是用来讲解安装过程和环境配置;checkpoints是存放训练权重文件的,这个目录需要自己创建,里面的.pth文件需要对应要使用的不同的算法框架进行自行下载,具体后面会讲
然后我们开始安装MMDetection,官方建议的方法是用MIM来安装,这里就只展示这种方法,手动安装的方法可以在GitHub上查看
pip install openmim
mim install mmdet
我们可以看到上面目录图片里有一个requirements.txt的文件,这用来导向整体项目的一些python的依赖,在根目录下打开命令行窗口(要激活刚刚创建的虚拟环境),执行命令:
pip install -r requirements.txt
执行上面的命令之后就会自动安装一些依赖
3.安装COCO数据集
安装好MMDetection后,我们需要安装coco数据集
安装后的文件结构如下,我主要会用到Python的接口
进入到PythonAPI, 里面会有一个setup.py, 我们在PythonAPI目录下打开命令行窗口(虚拟环境下),输入以下命令以完成配置:
python setup.py build_ext install
注意:重新编译setup.py的话要先把build, pycocotools.egg-info删除干净
通过pip list查看是否成功安装pycocotools
再回到mmdetection根目录,打开命令行窗口,输入:
python setup.py develop
上面这行命令是用来安装包的,类似于"python setup.py install", 此处develpo不同于install,该方法不会真正的安装包,而是在系统环境中创建一个软链接指向包实际所在目录,这边在修改包之后不用再安装就能生效,便于调试。适用于项目处于开发阶段。
运行demo
到此我们已把所有基本的包和环境都安装好了,接下来就开始运行我们的demo了。首先打开mmdetection/config选一个算法框架,例如,假如我选择faster r-cnn,打开目录后,可以看到里面的文件是这样的:
打开README.md,可以看到文件名称的含义
这里我选择了mask_rcnn_fpn_1x_coco的框架,对应README.md中找到对应的权重文件下载链接,[model]对应的链接就是权重文件的下载链接
打开链接之后,自动下载权重文件,我们在mmdetection目录下新建一个checkpoints目录,这个目录用来存放权重文件
下载好权重文件之后我们就可以开始测试了,输入下面的命令
发现这里出现了一个错误,ImportError: /opt/ros/kinetic/lib/python2.7/dist-packages/cv2.so: undefined symbol: PyCObject_Type
仔细看,发现是与之前安装的ROS有关,这里我们安装的opencv-python包是存放在anaconda下的,而在使用import cv2的时候会出现此错误,原因是ROS安装之后的~/.bashrc文件多出一句:
source /opt/ros/kinetic/setup.bash
因为是受ROS安装的影响,ROS安装之后会在python中加入:'/opt/ros/kinetic/lib/python2.7/dist-packages',为了解决此问题,可以在需要运行的python文件(即使用 import cv2的python文件)中,添加以下代码:
import sys
sys.path.remove('/opt/ros/kinetic/lib/python2.7/dist-packages')
如下图:
通过这两行代码,我们可以把ROS写入path中的路径清除
解决这个问题之后我们再尝试重新输入测试的命令,这里我又选用了其他算法框架哈哈哈:
得到结果: