> 文档中心 > 我的AI之路(46)--在Xavier上的自制dock镜像内安装支持部署EfficientDet和CenterNet模型以及mmdetection序列模型的环境

我的AI之路(46)--在Xavier上的自制dock镜像内安装支持部署EfficientDet和CenterNet模型以及mmdetection序列模型的环境

      按照制作支持GPU的用于部署AI模型的ARM64版docker镜像一文中的步骤制作出基础镜像并创建容器后,连到这个容器,执行下列步骤,进行支持部署EfficientDet和CenterNet模型以及mmdetection序列模型的环境的安装:

1) EfficientDet

    apt-get update
    sudo apt-get install apt-file 
    apt-file update
    apt-file search libgthread-2.0.so.0

    apt-get install libglib2.0-dev
    apt-get install libsm6
    apt-get install libxrender1
    apt-get install libxext6
    pip3 install -i  http://mirrors.aliyun.com/pypi/simple/  tensorboardX  --trusted-host  mirrors.aliyun.com

下载efficientdet源码并根据自己的数据集的分类情况对代码做出相应的修改,具体办法会在后续文章中给出,并将标注好了的验证测试数据在data/coco/val2017下面,将训练出的模型放到test_dataset.py/mAP_evaluation.py脚本里指定的地方,然后即可执行下面的测试以检查GPU是否使用正常,并可在test_dataset.py中增加时间的打印检查识别每张图片所花费的时间:

     cd efficientdet

     python test_dataset.py
     python mAP_evaluation.py

对于为单张图片调用模型进行识别的情况,efficientdet的项目里没有这样的代码,需要自己写。

2) CenterNet

    pip install -i  http://mirrors.aliyun.com/pypi/simple/  llvmlite==0.25 --trusted-host  mirrors.aliyun.com
    pip install -i  http://mirrors.aliyun.com/pypi/simple/  numba==0.39 --trusted-host  mirrors.aliyun.com
    pip install -i http://mirrors.aliyun.com/pypi/simple/  progress progress matplotlib easydict scipy --trusted-host  mirrors.aliyun.com

下载CenterNet的源码到本地,并按照 使用自己的数据集训练CenterNet 一文中所述的步骤对代码进行修改。

然后针对CUDA10.0,使用不同版本的DCN代码进行编译(Xingyi Zhou的项目里的DCN代码只能用于CUDA9或以下版本)
    cd CenterNet
    cd src/lib/models/networks
    rm -rf DCNv2
    git clone https://github.com/CharlesShang/DCNv2
    cd DCNv2
    vi src/cuda/dcn_v2_cuda.cu

检查下面这句话确保没有被注释掉:
      THCState *state = at::globalContext().lazyInitCUDA();

然后执行
      python setup.py build develop

然后

      cd src/lib/external
      vi setup.py

把extra_compile_args=["-Wno-cpp", "-Wno-unused-function"] 注释掉:
      #extra_compile_args=["-Wno-cpp", "-Wno-unused-function"]

再执行:
     python setup.py build_ext --inplace
     python setup.py install

OK,可以使用了,将测试数据和训练出的模型放到指定的相应的地方,然后执行下面的命令测试:
     python -u test.py ctdet --exp_id coco_hg --arch hourglass --keep_res --debug 3 --load_model ../exp/ctdet/fire_coco_hg/model_best.pth --gpus 0
     python -u demo.py ctdet --arch hourglass --demo ../data/coco/test/ --load_model ../exp/ctdet/fire_coco_hg/model_best.pth

3)   mmdetection tool env

安装支持包:

      pip install -i  http://mirrors.aliyun.com/pypi/simple/  asynctest codecov flake8 isort kwarray pytest pytest-cov pytest-runner ubelt  yapf --trusted-host  mirrors.aliyun.com
      pip install -i  http://mirrors.aliyun.com/pypi/simple/  addict terminaltables cityscapesscripts --trusted-host  mirrors.aliyun.com

xdoctest没有现成的arm64版本的包,所需要从源码安装:

      git clone https://github.com/Erotemic/xdoctest.git
      cd xdoctest
      python setup.py install

安装下面两个依赖于opencv-python的包,如果找不到opencv-python,下面这两个包会报错(对于执行从源码编译安装opencv或者执行apt-get install python-opencv和apt-get install python3-opencv从Ubuntu的repository安装opencv后opencv可以在python中使用,但是安装一些包时仍然报错说找不到opencv-python这个问题极其解决,我会另外写一篇文章,因为这个问题有点复杂),另外这两个包的顺序不能颠倒,否则安装albumentations时会报找不到opencv-python-headless的错误,注意opencv-python-headless是和opencv-python冲突的版本,不能同时安装,如果先安装imagecorruptions可以成功,再安装albumentations>=0.3.2时就不报错了:

       pip install -i  http://mirrors.aliyun.com/pypi/simple/ imagecorruptions --trusted-host  mirrors.aliyun.com
       pip install -i  http://mirrors.aliyun.com/pypi/simple/ albumentations>=0.3.2  --trusted-host  mirrors.aliyun.com 

安装依赖于opencv-python的mmcv:

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

下载mmdetection工具的源码:     

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

把测试数据和训练出的模型放到对应的位置,对要测试的模型对应的config文件做相应的修改,然后对模型进行测试,例如:    

      python -u tools/test.py /home/mmdetection/fire-mmdetection/configs-us/cascade_rcnn_hrnetv2p_w32_20e.py \
    /home/mmdetection/fire-mmdetection/mm_model/cascade_rcnn_hrnetv2p_w32/epoch_50.pth \
    --show

      python -u tools/test.py /home/mmdetection/fire-mmdetection/configs-us/cascade_rcnn_hrnetv2p_w32_20e.py \
     /home/mmdetection/fire-mmdetection/mm_model/cascade_rcnn_hrnetv2p_w32/epoch_50.pth \
    --eval mAP