SOLO & SOLOv2环境配置
如果说实例分割绕不开Mask R-CNN,那么SOLOv2作者提到的 Fast
,High-quality
和 SOTA
等特性都让人忍不住想试试🧐
开源代码地址:
https://github.com/WXinlong/SOLO
本文基本参照原作者开源代码中的流程配置,主要工作是对步骤进行了本土化处理🤣
昏天黑地配置了一天,各种错误和失败基本总结为两个原因
- 依赖库版本不对应
- 网络不好 (
懂的都懂😶)
配置环境
ubuntu20.04 + miniconda
Ubuntu20.04安装Miniconda + Pycharm
新建Python环境
conda create -n solo2 python=3.8
进入虚拟环境
conda activate solo2
如果环境崩了,删除指定环境🙃删除过不下8次,人生要是有重启键可太好了
conda remove -n solo2 --all
安装pytorch,torchvision
第一个大坑!
哈哈,如果使用作者的代码 conda
安装 pytorch
和 torchvision
🤡,你就会体会到什么是痛苦!
conda install pytorch torchvision -c pytorch
两个原因
1 会自动安装最新 pytorch 2.0.0
版本,不适配
2 conda
安装时不会配置对应的 CUDA
虚拟环境
开始还不信邪,就要用高版本怎么了🤨!有问题解决问题,看了些大佬贴就膨胀了,遇到报错就查,查完就跑通了😎,查完就有新的报错😇,看到有人说 pytorch
降到 1.4.0
就行,放弃幻想,准备斗争,准备妥协!
第二个坑!
官方pytorch历史版本下载网站
https://pytorch.org/get-started/previous-versions/
这里的安装指令只有 1.11.0
版本往后的才能用,之前的版本都会报错找不到,想要安装 pytorch 1.4.0
版本还需要另寻他路,大部分文章都是用官方的地址让在里面找,确实能找到,安装不了是真的😐。
山重水复疑无路,柳暗花明又一村
偶然找到离线版本下载地址,只需要下载对应的whl文件就可以本地安装了!
离线版本下载网站
https://download.pytorch.org/whl/torch_stable.html
在网站里下载需要的对应版本pytorch和torchvision,本文下载的文件分别是 cu101/torch-1.4.0-cp38-cp38-linux_x86_64.whl
和 cu101/torchvision-0.5.0-cp38-cp38-win_amd64.whl
在文件所在目录打开终端,确认在对应的虚拟环境中,如果不在就再进一次虚拟环境
conda activate solo2
在虚拟环境中按顺序安装离线文件
使用阿里云镜像源解决部分依赖项下载慢的问题!
pip install torch-1.4.0-cp38-cp38-linux_x86_64.whl
pip install torchvision-0.5.0-cp38-cp38-linux_x86_64.whl -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
下载SOLO源代码
# git clone或者直接下载压缩包,后续会更改的话推荐下载压缩包
git clone https://github.com/WXinlong/SOLO.git
# 进入目录
cd SOLO
安装依赖
通过github repo而不是pypi来安装pycocotools,因为pypi的版本很旧,与最新的numpy不兼容
2023 04 27更新
安装依赖之前可以先规定 requirements/runtime.txt
文件中 numpy
的版本,防止后续报错
‘numpy’ has no attribute ‘bool’
修改后文件如下
matplotlib
mmcv==0.2.16
numpy==1.23
scipy
# need older pillow until torchvision is fixed
Pillow<=6.2.2
six
terminaltables
torch>=1.1
torchvision
继续安装依赖
pip install -r requirements/build.txt -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
# 安装pycocotools
# 官方 pip install "git+https://github.com/cocodataset/cocoapi.git#subdirectory=PythonAPI" 出错,代替方案如下
pip install "git+https://gitee.com/wsyin/cocoapi.git#subdirectory=PythonAPI" -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
安装SOLO
pip install -v -e . -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
# or "python setup.py develop -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com"
测试demo
作者提供了 inference_demo.py
文件运行简单的demo
在SOLO目录下创建 checkpoints
文件夹
mkdir checkpoints
下载对应模型的权重放入 checkpoints
文件夹
更改权重路径 checkpoint_file
和对应的模型路径 config_file
以及图像读取路径
如果是终端运行最好将所有路径改为绝对路径防止出错
运行demo
在SOLO目录打开终端运行
python demo/inference_demo.py
第一次运行时报错
AttributeError: module ‘numpy’ has no attribute ‘bool’
问题原因
numpy的1.24版本弃用了np.bool这个名称,使用np.bool_
解决方案
2023 04 27更新
方法一:降低numpy版本到1.23
卸载当前虚拟环境中的numpy
pip uninstall numpy
安装1.23版本的numpy
pip install numpy==1.23 -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
方法二:更改报错位置
建议降低版本,因为后续还有很多类似的冲突,越改越多 🤣
将np.bool更改为np.bool_
具体地,更改 SOLO/mmdet/apis/inference.py
文件的 276
行
“~/SOLO/mmdet/apis/inference.py”, line 276
# 更改前
cur_mask_bool = cur_mask.astype(np.bool)
# 更改后
cur_mask_bool = cur_mask.astype(np.bool_)
再次运行可以输出结果图片,配置成功✅
增加时间检测函数测试不同模型和权重的处理效率
import time
import torch
def time_synchronized():torch.cuda.synchronize() if torch.cuda.is_available() else Nonereturn time.time()
t_start = time_synchronized()
# ...运行程序...
t_end = time_synchronized()
print("Timecosts: {}".format(t_end - t_start))
接下一篇实例分割SOLO & SOLOv2训练自建数据集(ubuntu20.04 + miniconda)