实例分割SOLO & SOLOv2环境配置(ubuntu20.04 + miniconda)

SOLO & SOLOv2环境配置

如果说实例分割绕不开Mask R-CNN,那么SOLOv2作者提到的 FastHigh-qualitySOTA 等特性都让人忍不住想试试🧐
开源代码地址:
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 安装 pytorchtorchvision 🤡,你就会体会到什么是痛苦!

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 None
    return time.time()
t_start = time_synchronized()
# ...运行程序...
t_end = time_synchronized()
print("Timecosts: {}".format(t_end - t_start))

接下一篇实例分割SOLO & SOLOv2训练自建数据集(ubuntu20.04 + miniconda)

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 12
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值