从零开始的RVOS: Referring Video Object Segmentation
最近新接触到一个与VOS相关的任务,叫做Referring VOS,该任务基于文本描述对视频中特定目标进行分割,是一个新兴的跨模态CV任务。
数据集
1.静态推断图像分割数据集
虽然RVOS是视频任务,但根据以往的经验和相关文章的方法,可以使用静态推断图像分割数据集进行模型的预训练。可用数据集包括:RefCOCO、RefCOCO+、A2D。
2.视频推断数据集
现有的视频推断数据集都是直接从向已有的VOS数据集中加入文本描述标签得到的。
包括:Refer-DAVIS17和Refer-Youtube-VOS数据集
Refer-Youtube-VOS有3471个视频,每个视频有一个或多个目标,每个目标每帧有两个文本描述。
现有方法
- [1] 中提出了最早的RVOS方法LRE。该方法分为两阶段: 第一阶段基于文本描述进行目标bbox定位,第二阶段将原RGB图像+bbox预测图+光流图连接成5通道输入,然后用分割网络进行分割。
- [2] 中构造并开开源了大规模的Refer-Youtube-VOS数据集,并提出了URVOS方法,该方法以STMN方法为基本框架,将文本描述特征作为额外的注意力引入解码过程辅助封。在Refer-DAVIS17和Refer-Youtube-VOS上都达到了很高的精度。是一个很强的baseline。
- [3] 使用Deplabv3作为图像视觉编码器,用BERT作为文本编码器,通过简单粗暴的相乘得到跨模态特征,然后解码得到分割结果。在不使用Refer-Youtube-VOS训练的前提下在Refer-DAVIS17上精度超过了URVOS
RefVOS方法复现
根据github上的说明尝试跑一跑RefVOS(https://github.com/miriambellver/refvos)。
准备工作:
(1)下载预训练的BERT模型和配置文件,refcoco、refcoco+、refcocog数据集(主要是包含文本信息的.p文件和.json文件,图像文件与原始COCO相同)
(2)
基于已有镜像开一个虚拟环境Env1
virtualenv --system-site-packages Env1
然后进入虚拟环境,安装任务需要的包
cd your_path
source Env1/bin/activate
pip install transformer
pip install tensorflow
执行程序
python train.py --dataset refcoco --model_id model_pretrained_bert --ck_bert /gdata1/linfc/Ref-COCO/pretrained_wights/checkpoints_bert/bert_pretrained_refcoco --refer_data_root=/gdata1/linfc/Ref-COCO
(1)由于集群受暂时写缓存权限,出现报错1
File "/ghome/linfc/my_RVOS/RefVOS/data/dataset_refer_bert.py", line 52, in __init__self.tokenizer = transformers.BertTokenizer.from_pretrained(args.bert_tokenizer)File "/ghome/linfc/Env1/lib/python3.6/site-packages/transformers/tokenization_utils_base.py", line 1670, in from_pretraineduser_agent=user_agent,File "/ghome/linfc/Env1/lib/python3.6/site-packages/transformers/file_utils.py", line 1173, in cached_pathlocal_files_only=local_files_only,File "/ghome/linfc/Env1/lib/python3.6/site-packages/transformers/file_utils.py", line 1320, in get_from_cacheos.makedirs(cache_dir, exist_ok=True)File "/usr/lib/python3.6/os.py", line 210, in makedirsmakedirs(head, mode, exist_ok)File "/usr/lib/python3.6/os.py", line 210, in makedirsmakedirs(head, mode, exist_ok)File "/usr/lib/python3.6/os.py", line 220, in makedirsmkdir(name, mode)
PermissionError: [Errno 13] Permission denied: '/.cache'
解决方法:
在file_utils.py文件第1320行修改默认缓存地址:
cache_dir = r’/gdata1/linfc/Ref-COCO/cache’
(2)报错2
Traceback (most recent call last):File "train.py", line 467, in <module>main(args)File "train.py", line 315, in mainbert_model = model_class.from_pretrained(args.ck_bert)File "/ghome/linfc/Env1/lib/python3.6/site-packages/transformers/modeling_utils.py", line 988, in from_pretrained**kwargs,File "/ghome/linfc/Env1/lib/python3.6/site-packages/transformers/configuration_utils.py", line 401, in from_pretrainedconfig_dict, kwargs = cls.get_config_dict(pretrained_model_name_or_path, **kwargs)File "/ghome/linfc/Env1/lib/python3.6/site-packages/transformers/configuration_utils.py", line 478, in get_config_dictraise EnvironmentError(msg)
OSError: Can't load config for '/gdata1/linfc/Ref-COCO/pretrained_wights/checkpoints_bert/bert_pretrained_refcoco'.
检查代码,发现是缺少config文件。检查数据集,发现在/gdata1/linfc/Ref-COCO/pretrained_wights/checkpoints_bert中对下载的预训练模型bert_pretrained_refcoco.zip没有解压。解压后得到文件夹bert_pretrained_refcoco,内含pytorch_model.bin和config.json两个文件。
(3)报错3
Traceback (most recent call last):File "train.py", line 467, in <module>main(args)File "train.py", line 395, in mainlogger_train = Logger(os.path.join(model_dir, 'train'))File "/ghome/linfc/my_RVOS/RefVOS/logger.py", line 17, in __init__self.writer = tf.summary.FileWriter(log_dir)
AttributeError: module 'tensorboard.summary._tf.summary' has no attribute 'FileWriter'
临时装的tensorflow版本不对,根据https://blog.csdn.net/u010556156/article/details/103320010的做法,将tf.summary.FileWriter(log_dir)换成tf.summary.create_file_writer(log_dir),解决问题。
(4)报错4
File "/ghome/linfc/my_RVOS/RefVOS/data/dataset_refer_bert.py", line 95, in __getitem__img = Image.open(os.path.join(self.refer.IMAGE_DIR, this_img['file_name'])).convert("RGB")File "/usr/local/lib/python3.6/dist-packages/PIL/Image.py", line 2878, in openfp = builtins.open(filename, "rb")
FileNotFoundError: [Errno 2] No such file or directory: '/gdata1/linfc/Ref-COCO/images/mscoco/images/train2014/COCO_train2014_000000289583.jpg'
(1)由于coco实际路径与默认设置不同,在refer.py中,将第51行的
self.IMAGE_DIR = osp.join(data_root, ‘images/mscoco/images/train2014’)
改为实际路径
self.IMAGE_DIR = r’/gpub/coco/train2017’
(2)由于集群只提供了COCO的2017版数据集,这里将默认文件名中‘COCO_train2014_’去掉。
在dataset_refer_bert.py中,在将95行
this_img[‘file_name’]
改为
this_img[‘file_name’].replace(‘COCO_train2014_’, ‘’)
(5)报错5
RuntimeError: CUDA out of memory. Tried to allocate 170.00 MiB (GPU 0; 10.92 GiB total capacity; 9.86 GiB already allocated; 71.00 MiB free; 407.70 MiB cached)
在11G显存的1080Ti上,即使batchsize设为1也仍然显存不够。查看原github说明:
看来是需要V100显卡才能有足够显存运行,不知道这里的V100是16G显存还是32G显存的版本
目前没有可用的V100显卡。。
So, 从零开始的RVOS: 从开始到放弃?
References:
[1] 2018_ACCV_Video Object Segmentation with Language Referring Expressions
[2] 2020_ECCV_URVOS_Unified Referring Video Object Segmentation Network with a Large-Scale Benchmark
[3] 2020_arxiv_RefVOS: A Closer Look at Referring Expressions for Video Object Segmentation
从零开始的RVOS: Referring Video Object Segmentation相关推荐
- 论文阅读CVPR2022 《Language As Queries for Referring Video Object Segmentation》
前言: 自从读完DETR之后,一直对set prediction相关的工作比较感兴趣.所以又找了一篇关于transformer的query机制的工作,不过这次升级到video处理的更复杂的任务了(其实 ...
- 视频物体分割--One-Shot Video Object Segmentation
One-Shot Video Object Segmentation CVPR2017 http://www.vision.ee.ethz.ch/~cvlsegmentation/osvos/ One ...
- VideoMatch: Matching based Video Object Segmentation
Abstract: 1.视频目标分割是一个很重要的挑战,对于各种各样的视频分析任务.最近视频目标分割任务基于深度网络取得了state-of-the-art的结果. 2.由于作为预测任务的表述,这些方法 ...
- MaskRNN Instance Level Video Object Segmentation 论文翻译
摘要 实例级视频对象分割是视频编辑和压缩的一项重要技术.为了捕获时间的一致性,本文中,我们开发了MaskRNN,一个递归的神经网络方法,它在每个框架中融合了两个深网的输出,每个对象实例--一个提供一个 ...
- Learning What to Learn for Video Object Segmentation
Learning What to Learn for Video Object Segmentation 摘要 引言 现有方法 特征匹配技术 我们的方法 网络结构 网络创新点 相关工作 VOS中的目标 ...
- Video Object Segmentation with Adaptive Feature Bank and Uncertain-Region Refinement
论文信息 Paper: [NeurIPS 2020] Video Object Segmentation with Adaptive Feature Bank and Uncertain-Region ...
- Recurrent Dynamic Embedding for Video Object Segmentation
周末大概看了一下最近的vos领域的发展,简单地介绍一下发表于cvpr2022 的这篇工作. BackGround VOT和VOS其实是非常相像的,只是target一个是bbox,一个是mask:这篇文 ...
- Motion-Attentive Transition for Zero-Shot Video Object Segmentation论文浅读
cccMotion-Attentive Transition for Zero-Shot Video Object Segmentation(2020 AAAI)_行走江湖要用艺名的博客-CSDN博客 ...
- 【论文阅读】Rethinking S-T Networks with Improved Memory Coverage for Efficient Video Object Segmentation
一篇NeurIPS 2021的关于VOS (video object segmentation) 的文章,文章的思想很有借鉴价值. 论文链接 Rethinking Space-Time Network ...
- 《SAT:State-Aware Tracker for Real-Time Video Object Segmentation》论文笔记
参考代码:video_analyst 1. 概述 导读:文章针对半监督(给定首帧标注数据)的VOS(video objet segmentation)任务提出了一种新的处理pipline(segmen ...
最新文章
- ML之Validation:机器学习中模型验证方法的简介、代码实现、案例应用之详细攻略
- lwip1.4.1需要的文件
- windows update失败还原更改,无法开机
- Python基础知识细节点总结,零基础一分钟也能掌握
- MongoDb进阶实践之一 如何在Linux系统上安装和配置MongoDB
- linux保存编辑信息,linux系统编辑神器 -vim用法大全
- quartus仿真28:JK触发器实现的脉冲分配器(分析)
- webservice 视频教程 Spring+xfire 整合
- java socket 局域网_javase基础socket编程之局域网聊天,局域网文件共享
- 【原创】无锁编程技术及实现
- 视频编解码器讲解-H.264、VP9、HEVC、AV1
- 维基百科公式不显示怎么办 找不到latex公式怎么办?
- java将Word转换成PDF两种方法
- matlab 图像上加边框,matlab代码-图像上画框 | 学步园
- 计算机硬件找不到网络适配器,图文学习网络适配器不见了
【操作教程】
的恢复方法_...
- 工欲善其事必先利其器
- pythonQQ机器人系列:使用requests实现QQ机器人聊天(1-0)
- 吴军《数学之美》部分概念笔记(1-11章)
- IHERB上待产包准备指南-宝宝篇
- Unity3D动态修改RectTransform
热门文章
- 给C语言程序设置密码
- 红米Note3全网通开发版(MIUI10 8.11.22 安卓6)获取完整root权限
- dxdiag使用小结
- 面试:你印象最深的BUG,举个例子
- 笔记本计算机无法启动怎么解决,笔记本开机进不了系统,教您笔记本开机无法进入系统怎么办...
- GraphQL Go,graphql基本知识,go-graphql使用
- python:如何删除一数组中包含7和7的倍数的数
- android开发中即时聊天软件中时间的获得
- 前端八股文,https、跨域、闭包、原型链,布局、防抖节流等
- 电脑横机服务器维修,电脑横机常见问题的处理方法