按照製作支持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