自监督|「CoCLR」视频自监督对比学习笔记

🔗

论文地址:https://www.robots.ox.ac.uk/~vgg/research/CoCLR/

Github: https://github.com/TengdaHan/CoCLR

一、背景介绍

  1. 作者背景: VGG (Oxford Visual Geometry Group) 牛津大学视觉几何组发布于 2020 NeurIPS

  2. 在图像和视频处理领域,自监督表征学习近两年的成果来自对比学习:给定数据集,目标是区别样本的“变体”和数据集中的其他样本。“变体”可以来自人造的,比如数据增强、也可以来自天然的,比如同一视频的不同片段出现的物体。常用的方法是实体判别,MoCo, SimCLR 都是这个思路,拉近正样本的距离,推远正样本与负样本的距离。因此对比学习非常灵活,不同的正负样本定义规则就会有不同,比如同一个视频里正负两帧都是正样本,其他视频认为负样本。

  3. 这篇文章提出的问题是:是否实体判别最大化利用数据?没有,原因如下

  • 常见对比学习困难正样本无法辨别:通过实验证明,困难正样本的数据(标签)加入能够提高表现。对比单纯使用无监督 InfoNCE 和使用有监督的 UberNCE 的实验结果。
  • 文章提出的 CoCLR, 效果比上面无监督 InfoNCE 和使用有监督的 UberNCE 的实验结果都好。采用两种 flow 网络和 RGB 网络交替辅助训练,本质是一种新的抽样方法。
  1. UberNCE 是什么?

a. 简单理解是给有类标签数据定义的对比损失函数,本质是 InfoNCE。

b. 2020 NeurlIPS 同时期还有一篇论文是 Supervised Contrastive Loss, 提出扩展对比损失函数,允许每个锚点有多个正对。将对比学习适应于完全监督的 setting。

  1. InfoNCE 与 UberNCE 的区别
  • UberNCE 是 InfoNCE 的上限。如果没差别,说明 InfoNCE 很完美,如果差异很大,说明数据还有信息很多没挖掘。

在这里插入图片描述

二、CoCLR

本文用的是纯视觉数据,没用文本。谷歌有个CVRL 也是讲 CLR 思路用在视频领域。 TODO

文章的贡献有三:

  1. 证明加入类别标签的正样本,即有监督对比学习能够提升表现。

  2. 提出自监督协同训练网络,用一个网络为另一个网络提供正样本标签。

  3. 通过全面的实验和两个下游任务(分别是动作识别和视频抽取)评估了表征学习的能力

本文不是定义一种新的对比损失,而是提出一种新的抽样方法。两个网络同时在训练,互相帮助,bootstrap, 类似 BYOL。一个网络帮助另一个网络找正样本。论文作者的思路来自于视频/照片具有两种特征:RGB 颜色和主体的光流。下图,左右两张分别在室内和室外打高尔夫,颜色RGB完全不一样,但是动作几乎一样。作者正是想利用这两个特征,互相帮助找正样本。
在这里插入图片描述

  • 如何从数据集中生成 flow 和 RGB 网络:
  1. 初始化:两个网络独立,用 InfoNCE,训练 300 epoch

  2. 交换:用一个网络给另一个网络采样,交替进行,比如用 Flow 网络找到样本的 Top-K 近邻,作为 RGB 网络训练时的正样本。
    在这里插入图片描述

  3. 伪代码:介绍 L1 阶段如何更新,即用 optical flow 网络帮 RGB 网络找正样本,包括如何使用类似 MoCo 里的动量更新队列、如何通过(3)式计算 optical flow 网络中的 top K 最近邻。下面是有实现的伪代码,也采用了类似 MoCo 里 momentum-updated history queue,UCF101 queue size = 2048;K400 queue size = 16384
    在这里插入图片描述
    上面伪代码部分的公式 Eq2, Eq3 指代如下在这里插入图片描述在这里插入图片描述
    如果到目前为止还是不太清楚 L1, L2 阶段是很正常的,下面作者在实验部分用图2介绍具体是怎么交替计算的。

三、实验

  1. 训练细节:
  • 数据集:UCF101 training set (13k videos spanning 101 human actions) + Kinetics-400 (K400) training set (240k video clips),输入 32 frames
  • 特征提取:S3D 结构 + 非线性映射层(后面在下游验证任务上删掉)
  • 如何提取主体光流:无监督 TV-L1 算法
  • batch size: 32, 4 GPUs, Adam with 10−3 lr and 10−5 weight decay
  1. 实验结果在这里插入图片描述

表1:

  • 测试集的结果都是基于 RGB 网络的(验证都是两者都有)
  • cross-entropy 做不了 Linear probe,所以是 -
  • CMC: RGB, flow 得到两个 view, 即数据增强的方式换成 RGB 和 Flow 网络, 本质也是 instance discrimination. CMC 是不同物体的正面背面都是同一个正样本。
  • K - Top-k NN的取值
  • 最后三行是消融实验,使用不同超参K、两个网络同时训练

图2:

  • InfoNCE 阶段:两个网络用 InfoNCE 独立训练,初始化
  • L1 阶段:Flow 网络为 RGB 网络找 K 个同类,计算损失函数,更新 RGB 网络
  • L2 阶段:RGB 网络为 Flow 网络找 K 个同类,计算损失函数,更新 Flow 网络
  • L1 + L2 就是一整个 cycle
  • UCF101 训练了两个 cycle, 100 epoch/cycle*network, 一个 cycle 有 200 epoch
  • K400 训练了一个 cycle,50 epoch/cycle*network, 100 个 epoch
  1. 与最佳模型比较
    在这里插入图片描述
  • DataSet (duration) - Pretrain 的数据集; Res. - Resolution; 测试数据集:UCF, HMDB;蓝色是仅使用 visual
  • Frozen 就是 linear probing,前面预训练的层都固定住
  • 2 Stream 是两个网络得到的特征相似度求平均再返回
  • 最后一行是先 supervised pretrain, 再在下游 UCF 做 Finetune
  • CVRL 是仅用 InfoNCE 的 3D ResNet50,表现很好,所以如果加上 CoCLR 效果可能会更好;分析原因一方面是 CVRL 有更深的结构和更多的参数量,另一方面是有更高的解析度,更多epochs。对比如下表;
参数CVRLCoCLR
layers4923
params33.1M7.9M
resolution224128
epochs800400
  1. 下游任务的表现
    在这里插入图片描述
    表3:

这些模型(除了SpeedNet)都是 UCF 上预训练,UCF 和 HMDB上做 retrieval 验证。
在这里插入图片描述

四、结论

  1. 利用视频的辅助视角(optical flow) 可以弥补 RGB 网络使用 InfoNCE 对困难正样本的无力。
  2. 作者虽然没有通过实验证明,但提出声音或文本可以代替光流 optical flow 为视频片段提供辅助视角

这篇论文应该会是我下周第一次论文分享的内容啦~希望一切顺利!

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
PyTorch是一个开源的机器学习框架,它提供了用于构建、训练和部署深度学习模型的丰富工具和库。自监督学习是一种无监督学习的方法,其中模型以无标签的数据作为输入,通过学习生成有用的表示或特征,从而实现自我监督。在PyTorch中,可以使用自动编码器来实现自监督学习。自动编码器是一种神经网络结构,它可以通过最小化输入与输出之间的差异来学习数据的低维表征。通过自监督学习,模型可以在没有标签的情况下学习到有用的特征,这对于某些任务而言非常有价值。如果你对PyTorch中自监督学习的具体实现感兴趣,可以参考《深度学习入门之PyTorch》一书中关于自监督学习的章节,以及基于旋转特征的自监督学习的算法思路解析和应用。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [PyTorch 学习笔记(九):自动编码器(AutoEncoder)](https://blog.csdn.net/h__ang/article/details/90720579)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [python零基础实现基于旋转特征的自监督学习(一)——算法思路解析以及数据集读取](https://blog.csdn.net/DuLNode/article/details/130042006)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值