zoukankan      html  css  js  c++  java
  • 【目标检测-框架测试】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对其赋予权限。我将图形结果不显示,直接保存下来:

     

     

  • 相关阅读:
    【python】opencv教程CV2模块——翻转图片并保存
    【python】opencv教程CV2模块——简单画图
    【python】opencv教程CV2模块——复制图片、灰度模式并保存
    【python】opencv教程CV2模块——窗口显示图片、按键盘指定s键保存
    【python】opencv教程CV2模块——打开读取图片、窗口显示、保存图片
    【前端】一行代码实现网站网页变黑白灰效果
    【python】彩色图秒变酷炫黑白图,灰度模式,比PS还好用的图像处理,cv2
    【python】批量调整图片亮度和饱和度,比PS还方便的图片处理,cv2
    【python】使用滑动条调整图片亮度和饱和度,比PS还方便的图片处理,cv2
    代码-JS之正则验证手机格式
  • 原文地址:https://www.cnblogs.com/fanzhongjie/p/11430201.html
Copyright © 2011-2022 走看看