最近新接触到一个与VOS相关的任务,叫做Referring VOS,该任务基于文本描述对视频中特定目标进行分割,是一个新兴的跨模态CV任务。

数据集

1.静态推断图像分割数据集
虽然RVOS是视频任务,但根据以往的经验和相关文章的方法,可以使用静态推断图像分割数据集进行模型的预训练。可用数据集包括:RefCOCO、RefCOCO+、A2D。
2.视频推断数据集
现有的视频推断数据集都是直接从向已有的VOS数据集中加入文本描述标签得到的。
包括:Refer-DAVIS17和Refer-Youtube-VOS数据集
Refer-Youtube-VOS有3471个视频,每个视频有一个或多个目标,每个目标每帧有两个文本描述。

现有方法

  1. [1] 中提出了最早的RVOS方法LRE。该方法分为两阶段: 第一阶段基于文本描述进行目标bbox定位,第二阶段将原RGB图像+bbox预测图+光流图连接成5通道输入,然后用分割网络进行分割。
  2. [2] 中构造并开开源了大规模的Refer-Youtube-VOS数据集,并提出了URVOS方法,该方法以STMN方法为基本框架,将文本描述特征作为额外的注意力引入解码过程辅助封。在Refer-DAVIS17和Refer-Youtube-VOS上都达到了很高的精度。是一个很强的baseline。
  3. [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相关推荐

  1. 论文阅读CVPR2022 《Language As Queries for Referring Video Object Segmentation》

    前言: 自从读完DETR之后,一直对set prediction相关的工作比较感兴趣.所以又找了一篇关于transformer的query机制的工作,不过这次升级到video处理的更复杂的任务了(其实 ...

  2. 视频物体分割--One-Shot Video Object Segmentation

    One-Shot Video Object Segmentation CVPR2017 http://www.vision.ee.ethz.ch/~cvlsegmentation/osvos/ One ...

  3. VideoMatch: Matching based Video Object Segmentation

    Abstract: 1.视频目标分割是一个很重要的挑战,对于各种各样的视频分析任务.最近视频目标分割任务基于深度网络取得了state-of-the-art的结果. 2.由于作为预测任务的表述,这些方法 ...

  4. MaskRNN Instance Level Video Object Segmentation 论文翻译

    摘要 实例级视频对象分割是视频编辑和压缩的一项重要技术.为了捕获时间的一致性,本文中,我们开发了MaskRNN,一个递归的神经网络方法,它在每个框架中融合了两个深网的输出,每个对象实例--一个提供一个 ...

  5. Learning What to Learn for Video Object Segmentation

    Learning What to Learn for Video Object Segmentation 摘要 引言 现有方法 特征匹配技术 我们的方法 网络结构 网络创新点 相关工作 VOS中的目标 ...

  6. Video Object Segmentation with Adaptive Feature Bank and Uncertain-Region Refinement

    论文信息 Paper: [NeurIPS 2020] Video Object Segmentation with Adaptive Feature Bank and Uncertain-Region ...

  7. Recurrent Dynamic Embedding for Video Object Segmentation

    周末大概看了一下最近的vos领域的发展,简单地介绍一下发表于cvpr2022 的这篇工作. BackGround VOT和VOS其实是非常相像的,只是target一个是bbox,一个是mask:这篇文 ...

  8. Motion-Attentive Transition for Zero-Shot Video Object Segmentation论文浅读

    cccMotion-Attentive Transition for Zero-Shot Video Object Segmentation(2020 AAAI)_行走江湖要用艺名的博客-CSDN博客 ...

  9. 【论文阅读】Rethinking S-T Networks with Improved Memory Coverage for Efficient Video Object Segmentation

    一篇NeurIPS 2021的关于VOS (video object segmentation) 的文章,文章的思想很有借鉴价值. 论文链接 Rethinking Space-Time Network ...

  10. 《SAT:State-Aware Tracker for Real-Time Video Object Segmentation》论文笔记

    参考代码:video_analyst 1. 概述 导读:文章针对半监督(给定首帧标注数据)的VOS(video objet segmentation)任务提出了一种新的处理pipline(segmen ...

最新文章

  1. ML之Validation:机器学习中模型验证方法的简介、代码实现、案例应用之详细攻略
  2. lwip1.4.1需要的文件
  3. windows update失败还原更改,无法开机
  4. Python基础知识细节点总结,零基础一分钟也能掌握
  5. MongoDb进阶实践之一 如何在Linux系统上安装和配置MongoDB
  6. linux保存编辑信息,linux系统编辑神器 -vim用法大全
  7. quartus仿真28:JK触发器实现的脉冲分配器(分析)
  8. webservice 视频教程 Spring+xfire 整合
  9. java socket 局域网_javase基础socket编程之局域网聊天,局域网文件共享
  10. 【原创】无锁编程技术及实现
  11. 视频编解码器讲解-H.264、VP9、HEVC、AV1
  12. 维基百科公式不显示怎么办 找不到latex公式怎么办?
  13. java将Word转换成PDF两种方法
  14. matlab 图像上加边框,matlab代码-图像上画框 | 学步园
  15. 计算机硬件找不到网络适配器,图文学习网络适配器不见了 【操作教程】 的恢复方法_...
  16. 工欲善其事必先利其器
  17. pythonQQ机器人系列:使用requests实现QQ机器人聊天(1-0)
  18. 吴军《数学之美》部分概念笔记(1-11章)
  19. IHERB上待产包准备指南-宝宝篇
  20. Unity3D动态修改RectTransform

热门文章

  1. 给C语言程序设置密码
  2. 红米Note3全网通开发版(MIUI10 8.11.22 安卓6)获取完整root权限
  3. dxdiag使用小结
  4. 面试:你印象最深的BUG,举个例子
  5. 笔记本计算机无法启动怎么解决,笔记本开机进不了系统,教您笔记本开机无法进入系统怎么办...
  6. GraphQL Go,graphql基本知识,go-graphql使用
  7. python:如何删除一数组中包含7和7的倍数的数
  8. android开发中即时聊天软件中时间的获得
  9. 前端八股文,https、跨域、闭包、原型链,布局、防抖节流等
  10. 电脑横机服务器维修,电脑横机常见问题的处理方法