我的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

      

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章