【视频分割】【深度学习】Windows10下MiVOS官方代码Pytorch实现与源码解析
提示:最近开始在【视频分割】方面进行研究,记录相关知识点,分享学习中遇到的问题已经解决的方法。
文章目录
前言
MiVOS是由伊利诺伊大学的Cheng, Ho Kei等人在《Modular Interactive Video Object Segmentation: Interaction-to-Mask, Propagation and Difference-Aware Fusion [CVPR-2021]》【论文地址】一文中提出的模型,模块化交互式VOS(MiVOS)框架将交互到掩码和掩码传播分离,从而实现更高的泛化性和更好的性能。
在详细解析MiVOS网络之前,首要任务是搭建MiVOS【Pytorch-demo地址】所需的运行环境,并完成模型训练和测试工作,展开后续工作才有意义。
【MiVOS官方Pytorch代码解析–GUI主界面】
【MiVOS官方Pytorch代码解析–S2M功能模块】
【MiVOS官方Pytorch代码解析–S2M(DeepLavV3Plus)网络解析】
【MiVOS官方Pytorch代码解析–Propagation功能模块】
【MiVOS官方Pytorch代码解析–Propagation(PropagationNet)网络解析】
【MiVOS官方Pytorch代码解析–Propagation(FusionNet)网络解析】
MiVOS模型运行
1.下载源码并安装环境
在Windows10环境下装anaconda环境,方便搭建专用于MiVOS模型的虚拟环境,所有依赖包都安装在这个虚拟环境下。
# 创建虚拟环境
conda create -n mivos python=3.7.7
# 查看新环境是否安装成功
conda env list
# 激活mivos虚拟环境
activate mivos
【安装合适的pytorch和torchvision(GPU版)】
# 安装合适的pytorch和torchvision
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117
【MiVOS源码地址】,包含官方安装教程
# githup下载MiVOS源代码到适合目录内,解压文件
# 通过清华源安装MiVOS所需的第三方包
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple PyQt5 progressbar2 opencv-python networkx gitpython gdown Cython matplotlib
【davis-interactive源码地址】,davis-interactive包是通过执行setup.py代码安装
# githup下载davis-interactive源代码到适合目录内,解压文件
# 在xxxxxxx/davis-interactive-master/目录下执行setup.py代码
python setup.py install
# setup.py执行过程也是安装了其他包
# 要是超时,可以提前下载以下davis-interactive的依赖包
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple scipy scikit-learn==0.20.3 scikit-image pandas
安装过程可能出现的问题"cl: 命令行 error D8021 :无效的数值参数“/Wno-cpp"
解决方法: 打开setup.py文件
extra_compile_args=['-Wno-cpp', '-Wno-unused-function', '-std=c99'],
# 上述修改为
extra_compile_args=['-std=c99'],
执行成功
# 查看所有安装的包
pip list
conda list
最终的安装的所有包。
2.下载数据集和模型权重
作者已经把需要手动下载的数据封装到代码中自动执行
# 下载模型权重
python download_model.py
# 可以通过执行py代码来下载DAVIS数据集
python download_datasets.py
# 可以通过执行py代码来下载BL30K数据集(800G顶不住,我暂时没下)
python download_bl30k.py
假如下载太慢或者老挂,可以查看代码获得数据的下载地址手动下载,按照代码里的处理方式重命名文件和更改数据的文件目录结构。
3.运行MiVOS代码
# 运行分割视频
python interactive_gui.py --video <视频地址> --num_objects <目标个数>
# 运行分割图片集
python interactive_gui.py --images <图片集地址> --num_objects <目标个数>
# eg: python interactive_gui.py --images testimages --num_objects 2
可能出现" pickle.UnpicklingError: unpickling stack underflow"的错误: 由于临时文件夹中没有完整缓存整个模型,导致载入失败。
解决方法: 删除原来临时文件夹中的模型,在C:\Users\xxxx\内其他文件或者自文件中存在.cache文件,进入.cache\torch\hub\checkpoints的目录下:
我的地址则是
C:\Users\XXXXX\.cache\torch\hub\checkpoints
4.代码效果演示
【演示视频】
总结
尽可能简单、详细的介绍MiVOS的安装流程以及解决了安装过程中可能存在的问题。后续会根据自己学到的知识结合个人理解讲解MiVOS的原理和代码。