【目标检测-框架测试】mmdetection的安装与使用

 

1、安装anaconda

2、更新gcc4.9以上

gcc -std=c++11 test.cpp

测试代码test.cpp

#include<iostream>
#include<memory>
using namespace std;
int main(){
    shared_ptr<int> p = make_shared<int>(42);
    cout<<"p = "<<*p<<endl;
    return 0;
}

3、安装mmdetection

1)创建conda虚拟环境并激活,然后安装cpython

conda create -n open-mmlab python=3.7 -y
conda activate open-mmlab
conda install cython

2)查看本机是否支持GPU

lspci | grep -i nvidia

安装pytorch(>=1.0)  # 可以直接通过pytorch的官网查看安装命令

3)克隆mmdetection仓库

git clone https://github.com/open-mmlab/mmdetection.git
cd mmdetection

 # 2019727更新后的mmdetection,将compileinstall放在一个脚本中

# 编译cuda

# ./compile.sh

4)安装mmdetection

# 之前使用的是

python setup.py install
# 或 pip install .

 出现问题,不能将.c文件成功转译成py文件,导致引用的很多由.c文件定义的convpool无法使用。出现ImportError的相关错误:

 

python setup.py develop
# or “pip install -e .”

# 在使用过程中遇到的问题可以在mmdetectiongithub中的issues中询问或查找

4、mmdetection的使用

对于mmdetection框架的使用,可以直接参考github上给出的样例,提取出需要使用的代码即可,我是用的是demo文件夹下的图片,同时

Test.py

 

测试结果

 

 

训练:

python tools/train.py <config_filepath> [--gpus num]

在进行数据集的训练时,可以看tools文件夹下的train.py代码,一般需要自己配置的只有work_dirs,以及gpus:

--work_dirs:结果保存路径。也可以在config文件中进行配置
--gpus:训练时使用的gpu的数量。

使用config文件中包含使用的框架、数据集信息,以及训练中的一些参数配置。

使用config文件中包含使用的框架、数据集信息,以及训练中的一些参数配置。可以直接使用mmdetectionconfigs文件夹下的配置文件,需要针对性修改一些信息,如数据库的类型dataset_type以及数据库的路径data_root,其次traintest数据信息中的标注文件的路径ann_file,图片路径img_prefix

 

训练完成后,在work_dirs定义的文件夹下会出现每次迭代输出的信息,以及每次epoch完成后的参数结果:

 

 

此时在测试时,就可以直接使用自己训练好的checkpoints(就是.pth文件)了。

 

我使用的是faster_rcnn_r50_fpn_1x的相应配置,使用coco2017的数据集,此次只使用了4epoch得到结果,下图使用tools/analyze_logs.py文件对一些数据plot,其中包括loss_rpn_clsloss_rpn_bboxloss_clsloss_bbox以及loss

使用参考mmdetectiongithub中给出的方法:

python tools/analyze_logs.py plot_curve <json文件> --keys <parameters list> --legend <legends>

其中:

<json文件>:就是训练过程中生成的json文件的路径
<parameters list>:需要plot的数据名称,需要时json文件中存在的
<legends>:对应parameters list的标签

 

测试:

使用官方提供的测试命令:

python tools/test.py <config_filepath> <checkpoint> [...]

在测试过程中,使用tools/test.py文件,test.py文件必须要参数包括configcheckpoint,以及(--out, --show, --json_out)三个中的一个,其中:

--config:配置文件,使用训练使用的配置文件
--checkpoint:参数数据,使用work_dirs下的任一.pth文件
--out:输出路径,使用.pkl结尾的文件名
--json_out:输出为json类型的数据

 

使用show结果会被一张张的显示出来,因为此次结果我仅使用了4epochs,所以对于小的区域的检测结果可能不太准确。

 

最后使用当前训练结果重新进行demo.jpg的测试

补充说明:

 

  我直接使用tools文件夹下的train.pytest.py文件,会出现之前的ImportError,无法找到deform_conv_cuda等一系列的文件,所以我直接将train.pytest.py文件复制到mmdetection项目文件夹下,之后运行就没有问题了。

 

 

如果想要在本地上直接跑mmdetection的测试代码,使用软件为Pycharm,可以参见另一篇博客:Pycharm配置服务器中conda创建的虚拟python环境

完成Python环境的配置后,不过此时直接测试test.py仍然会出现问题,”cannot connect to X server.” 这是由于Linux的图形显示通过X server实现,在客户端进行访问时,需要server对其赋予权限。我将图形结果不显示,直接保存下来:

 

 

原文地址:https://www.cnblogs.com/fanzhongjie/p/11430201.html