论文复现CVPR2022:End-to-End Referring Video Object Segmentation with Multimodal Transformers端到端多模态视频对象分割

论文地址:https://arxiv.org/pdf/2111.14821v2

代码地址:https://github.com/mttr2021/MTTR

论文提出了一种基于transformer的简单RVOS方法,作者的框架称为多模态跟踪变换器(MTTR),将RVOS任务建模为一个序列预测问题。基于计算机视觉和自然语言处理的最新进展(当然对于现在来说不够新了),MTTR的核心理念是视频和文字可以通过单一的多模态变换器模型有效且优雅地一起处理。
在这里插入图片描述

本文只涉及项目代码实现,基于AutoDL服务器复现论文模型效果,不涉及论文原理!

AutoDL环境配置

进入autodl官网注册账号,学生党可以先进行学生认证,有一定优惠
点击左上角算力市场,然后选择按量计费,然后直接选择3090专区,其他地区的3090不好抢
在这里插入图片描述
点进去后,数据盘一般不需要扩容

开始配置镜像

项目环境需要python3.9.7,pytorch1.10.0,直接想配置pytorch环境不行,所以只能先配Miniconda,然后自己手动安装pytorch,注意Ubuntu要安装18.04版本,cuda版本选择11.1
在这里插入图片描述
在这里插入图片描述

SSH登录

配置环境我们选择无卡开机,这样可以节省点钱
在这里插入图片描述
pycharm(截图自AutoDl帮助文档)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这里建议先不着急!!等我们conda创建好虚拟环境后再选择虚拟环境里面的解释器!

Filezilla(截图自AutoDl帮助文档)
下载地址:https://filezilla-project.org
在这里插入图片描述
在这里插入图片描述

/root/autodl-tmp是数据盘,我们将所有代码和数据集放在数据盘,因为他比较大,miniconda安装在系统盘,那么我们的虚拟环境和包也就安装在系统盘上,不用担心,系统盘的大小是够的
接下来就可以通过拖拽传输文档文件了

项目环境配置

pytorch和torchvision安装

直接点击https://download.pytorch.org/whl/torch_stable.html下载到本地再通过filezilla传到服务器安装,想直接在服务器通过conda安装比较困难
在这里插入图片描述
注意这里要是linux系统!cp39!
同理查找torchvision
在这里插入图片描述
我这里默认你已经通过Filezilla传到服务器了,记住保存的位置
在这里插入图片描述
点击这里的JupyterLab,进入后在其他中打开终端
在这里插入图片描述

conda create -n mttr python=3.9.7 pip -y
# 更新bashrc中的环境变量
conda init bash && source /root/.bashrc
conda activate mttr

这时候虚拟环境已经建好了,直接git clone https://github.com/mttr2021/MTTR.git到本地,打开pycharm
在这里插入图片描述
还记得上面让你先不要选择tmp目录吗?这里配置远程python解释器地址为/root/miniconda/3/env/mttr/bin/python
在这里插入图片描述
配置好后pycharm将自动上传项目文件到/root/autodl-tmp,如果你发现还是没有上传,你可以手动上传一下

然后安装pytorch和torchvision(确保你已进入了mttr这个虚拟环境中),cd进入你存放torch-1.10.0+cu111-cp39-cp39-linux_x86_64.whl和torchvision-0.11.1+cu111-cp39-cp39-linux_x86_64.whl的目录

pip install torch-1.10.0+cu111-cp39-cp39-linux_x86_64.whl
pip install torchvision-0.11.1+cu111-cp39-cp39-linux_x86_64.whl

然后安装transformer

pip install transformers==4.11.3

COCO API

pip install -U 'git+https://github.com/cocodataset/cocoapi.git#subdirectory=PythonAPI'

其他需要的包

pip install h5py wandb opencv-python protobuf av einops ruamel.yaml timm joblib
conda install -c conda-forge pandas matplotlib cython scipy cupy

根据上述代码我安装的h5py版本为3.12.1,后续h5py报错,卸载h5py,使用conda install h5py安装版本为3.11.0后,报错消失

数据集下载

所有文件、文件夹名称请按照规则命名!
论文中使用了三个数据集:A2D-Sentences、JHMDB-Sentences、Refer-YouTube-VOS。我发现只有前两个数据集能够下载,Refer-YouTube-VOS网站就是进不去,索性不做这个数据集了

我们都先下载到本地,再上传到服务器!

A2D-Sentences

下载链接
在这里插入图片描述
在这里插入图片描述
将下载的文件上传到服务器后,.zip .tar.bz后缀的文件需要解压,在服务器终端中cd到文件位置,使用如下所示方法解压文件
.tar.bz后缀等
在这里插入图片描述

.zip .rar后缀
在这里插入图片描述
接下来安装下面的路径组织好文件,注意这里的CLIPS320需要改成clips320H
在这里插入图片描述

JHMDB-Sentences

下载链接
在这里插入图片描述
按照如下所示组织好文件
在这里插入图片描述

roberta-base预训练模型下载

代码中有直接加载该模型的代码,但是试了几次都说网络不行,于是只有自己将模型下载到本地
下载链接
像我一样直接在项目文件下创建个roberta-base文件夹,在上面的下载链接中下载这4个文件放在该文件夹中
在这里插入图片描述

pretrained_swin_transformer预训练模型下载

下载链接
同样的将下载的文件放在新创建的pretrain_swin_transformer中
在这里插入图片描述

check_points下载(用于复现论文效果)

A2D-Sentences

windows sizeCheckpoints filemAP Result
10link46.1
8link44.7

JHMDB-Sentences

windows sizeCheckpoints filemAP Result
10link39.2
8link36.6

下载后的文件按照我的方式放置
在这里插入图片描述
在这里插入图片描述
注意!这里下载后的文件后缀是.pth.tar,需要你手动重命名删除掉.tar,不需要解压!!

运行程序

复现论文效果

进入jupyter lab终端,先随便运行一个,放心肯定会报错

conda activate mttr
python main.py -rm eval -c configs/a2d_sentences.yaml -ws 10 -bs 3 -ckpt a2d_check_points/a2d-sentences_window-10.pth -ng 1

报错修改

  • ImportError: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.29‘ not found
    根据提示是 /usr/lib/x86_64-linux-gnu/ 路径下的 libstdc++.so.6 缺少版本 GLIBCXX_3.4.29

输入以下指令查看当前路径下有哪些版本

strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX

使用管理员权限,查看当前系统下同类型文件

sudo find / -name "libstdc++.so.6*"

在这里插入图片描述
选择一个包含6.0.29的目录,在终端中输入(请将LD_LIBRARY_PATH后面改成所选的路径,只需要到lib就行,后面每次进入终端都需要这么输入

export LD_LIBRARY_PATH=/root/miniconda3/envs/mttr/lib
  • AttributeError:“safe_load()”has been removed, use yaml = YAML(typ=‘safe‘, pure=True) yaml.load(…)
    这应该是ruamel版本问题,如果你也有这个问题,直接按照我下面修改MTTR/main.py
    在这里插入图片描述

  • ValueError: Connection error, and we cannot find the requested files in the cached path. Please try again or make sure your Internet connection is on.
    这说明你的模型roberta-base没有下载好,或者路径可能有问题,好好检测一下!

  • h5py报错TypeError: Unsupported integer size (0)
    h5py版本有问题

pip uninstall h5py
conda install h5py

h5py版本:3.12.1 --> 3.11.0

修改好后后面进行论文效果复现
A2D-Sentences

windows sizeCommandmAP Result
10python main.py -rm eval -c configs/a2d_sentences.yaml -ws 10 -bs 3 -ckpt a2d_check_points/a2d-sentences_window-10.pth -ng 146.1
8python main.py -rm eval -c configs/a2d_sentences.yaml -ws 8 -bs 3 -ckpt a2d_check_points/a2d-sentences_window-8.pth -ng 144.7

这里的-ckpt接的就是下载的check_points的路径,然后-ng后面是显卡数量,我是用的一张3090,所有填的1

evaluate_w=10_A2D-Sentences
请添加图片描述

evaluate_w=8_ A2D-Sentences
请添加图片描述
效果和论文中一样一样滴!
在这里插入图片描述

JHMDB-Sentences

windows sizeCheckpoints filemAP Result
10python main.py -rm eval -c configs/jhmdb_sentences.yaml -ws 10 -bs 3 -ckpt jmdb_check_points/a2d-sentences_window-10.pth -ng 139.2
8python main.py -rm eval -c configs/jhmdb_sentences.yaml -ws 8 -bs 3 -ckpt jmdb_check_points/a2d-sentences_window-8.pth -ng 136.6

evaluate_w=10_JHMDB
请添加图片描述

evaluate_w=8_JHMDB请添加图片描述
效果和论文中一样一样滴!
在这里插入图片描述

自行训练模型

python main.py -rm train -c configs/a2d_sentences.yaml -ws 8 -bs 2 -ng 1

请添加图片描述
注意这里只是1个epoch,我使用一张3090大概花费1个小时,程序中设定epochs为70,想自己训练出论文结果请量力而行!

这篇论文复现到这里就结束了,关注我!有问题我们在评论区讨论!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值