经过多次尝试后发现,VMware虚拟机的显卡是虚拟显卡,不支持GPU加速,我们采用CPU的方式进行detectron2的学习安装。
查看官网的安装说明:
https://detectron2.readthedocs.io/en/latest/tutorials/install.html
Linux or macOS with Python ≥ 3.6
PyTorch ≥ 1.7 and torchvision that matches the PyTorch installation. Install them together at pytorch.org to make sure of this
OpenCV is optional but needed by demo and visualization
这里我们创建一个python3.6的虚拟环境
在终端输入命令,创建虚拟环境
conda create -n detectron2 python=3.6
这一阶段会耗费较长时间
如果安装时间过长,一直停留在solving environment,或者出现下列错误时
CondaValueError: Malformed version string '~': invalid character(s).
conda upgrade -n base -c defaults --override-channels conda
可以参考
https://stackoverflow.com/questions/56084960/condavalueerror-malformed-version-string-invalid-characters
pytorch官网:
https://pytorch.org/
这里我选择安装pytorch1.7
首先进入虚拟环境:
conda activate detectron2
输入命令:
conda install pytorch==1.7.0 torchvision==0.8.0 torchaudio==0.7.0 cpuonly -c pytorch
安装库numpy,matplotlib
conda install numpy matplotlib
安装opencv-python,在 Python 3.6 环境下使用下面的命令并就可以了:
conda install opencv-python
但是在 Python 3.7 环境下上面的命令是无效的。可以使用 pypi 进行安装:
pip install opencv-python
如果你的网络不好也很容易失败,我们可以临时使用清华的 pypi 镜像来安装:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple opencv-python
pip install pillow cython
pip install 'git+https://github.com/cocodataset/cocoapi.git#subdirectory=PythonAPI'
如果下载过慢,也可以直接下载到本地进行安装
首先进入虚拟环境
conda activate detectron2
cd到下载目录,注意下载的zip需要解压:
cd Downloads/cocoapi-master/PythonAPI
输入指令进行编译
pip install -e.
fvcore 是 FAIR 开源的 一个轻量级的核心库,它提供了在各种计算机视觉框架(如 Detectron2)中共享的最常见和最基本的功能。该库需要 >=Python 3.6 的 Python 环境。
conda安装
conda install -c fvcore fvcore
pip安装
pip install fvcore
detectron2安装地址
https://github.com/facebookresearch/detectron2
可以直接执行下列命令:
pip install 'git+https://github.com/facebookresearch/detectron2.git'
也可以直接下载后进行安装:
首先进入虚拟环境,再cd至下载的文件夹
cd /home/detectron2/Downloads/detectron2-master
pip install -e.
conda list
在detectron2文件夹中新建images文件夹,放入网上找到的图片:
进入guthub的detectron2官网,打开MODEL_ZOO.md,下载预训练权重:
其中,name是该网络的一些基本信息,model是需要下载的预训练权重,metrics是训练的一些参数。这里下载R101-FPN的model。
在detectron文件夹下自行新建预训练权重的文件夹,我设置的是
pre_train_model/COCO-PanopticSegmentation/panoptic_fpn_R_101_3x/139514519/model_final_cafdb1.pkl
打开终端,进入虚拟环境,输入命令:
python demo/demo.py --config-file configs/COCO-PanopticSegmentation/panoptic_fpn_R_101_3x.yaml --input images/1.jpg --output results --opts MODEL.WEIGHTS pre_train_model/COCO-PanopticSegmentation/panoptic_fpn_R_101_3x/139514519/model_final_cafdb1.pkl MODEL.DEVICE cpu
其中
--config-file configs/COCO-PanopticSegmentation/panoptic_fpn_R_101_3x.yaml
这个是配置信息,detectron2那个文件夹里面已经有了
--input images/1.jpg
是要测试的路径,估计实际情况设置
--output results
是输出的路径
--opts MODEL.WEIGHTS pre_train_model/COCO-PanopticSegmentation/panoptic_fpn_R_101_3x/139514519/model_final_cafdb1.pkl
是训练好的模型,存放model zoom下载的预训练权重
MODEL.DEVICE cpu
UserWarning: This overload of nonzero is deprecated:
nonzero()
Consider using one of the following signatures instead:
nonzero(*, bool as_tuple) (Triggered internally at /opt/conda/conda-bld/pytorch_1603729004493/work/torch/csrc/utils/python_arg_parser.cpp:882.)
filter_inds = filter_mask.nonzero()
这是由于detectron2与torch的一些接版本口冲突导致的,后续我会在后面的博客中进行解决
完成后,可以看到文件夹中出现了运行的结果
可以看出,效果还是相当不错的。