macOS CPU环境安装mmsegmentation踩坑记录
依赖
第一步 从官方网站下载并安装 Miniconda
由于电脑此时已经有了conda,所以忽略
第二步 创建并激活一个 conda 环境
conda create --name openmmlab python=3.8 -y
conda activate openmmlab
第三步 按照官方说明安装 PyTorch
cpu平台:
conda install pytorch torchvision cpuonly -c pytorch
安装
第一步 使用 MIM 安装 MMCV
pip install -U openmim
mim install mmcv-full
第二步 安装 MMSegmentation
从源码安装:
git clone https://github.com/open-mmlab/mmsegmentation.git
cd mmsegmentation
pip install -v -e .
# "-v "指详细说明,或更多的输出
# "-e" 表示在可编辑模式下安装项目,因此对代码所做的任何本地修改都会生效,从而无需重新安装。
这里可能会出问题。如果报错:
ERROR: Could not find a version that satisfies the requirement matplotlib (from mmsegmentation) (from versions: none)
ERROR: No matching distribution found for matplotlib
那么直接:
conda install matplotlib
如果报错:
ERROR: Could not find a version that satisfies the requirement mmcls>=0.20.1 (from mmsegmentation) (from versions: none)
ERROR: No matching distribution found for mmcls>=0.20.1
查了一下,发现需要安装mmclassification,参考https://blog.csdn.net/suiyingy/article/details/125452839,在现有环境下直接:
git clone https://github.com/open-mmlab/mmclassification.git
#如果github连接不上,可用gittee替换。
#git clone https://gitee.com/monkeycc/mmclassification.git
cd mmclassification
pip install -v -e .
验证安装
第一步 下载配置文件和模型权重文件
mim download mmsegmentation --config pspnet_r50-d8_512x1024_40k_cityscapes --dest .
然而会报错:
ImportError: Please install mmengine to use the download command!
于是:
mim install mmengine
然而:
OMP: Error #15: Initializing libiomp5.dylib, but found libomp.dylib already initialized.
搜了一下,发现可以在命令行中:
export KMP_DUPLICATE_LIB_OK=TRUE
然后继续安装,理论上就能装上mmengine了。如果报错:
ERROR: Could not install packages due to an OSError: HTTPSConnectionPool(host='files.pythonhosted.org', port=443): Max retries exceeded with url: /packages/92/cf/eae97b60e800db33f00ad45170557b6ccdc48a76cad333bd07ae8d6d6c55/mmengine-0.2.0-py3-none-any.whl (Caused by SSLError(SSLEOFError(8, 'EOF occurred in violation of protocol (_ssl.c:1131)')))
说明是网络不好,可以多试几次。
再次执行前面的下载命令,下载好后可以发现:
把这两个放到mmsegmentation文件夹里。
第二步 验证推理示例
python demo/image_demo.py demo/demo.png pspnet_r50-d8_512x1024_40k_cityscapes.py pspnet_r50-d8_512x1024_40k_cityscapes_20200605_003338-2966598c.pth --device cpu --out-file result.jpg
发现报错:
ModuleNotFoundError: No module named 'mmcv'
只能再:
mim install mmcv-full
运行测试的时候报错:
ValueError: SyncBatchNorm expected input tensor to be on GPU
参考:https://github.com/open-mmlab/mmsegmentation/issues/292
将pspnet_r50-d8_512x1024_40k_cityscapes.py的SyncBN全部换成BN。