自监督|「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完全不一样,但是动作几乎一样。作者正是想利用这两个特征,互相帮助找正样本。
自监督|「CoCLR」视频自监督对比学习笔记_第1张图片

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

  2. 交换:用一个网络给另一个网络采样,交替进行,比如用 Flow 网络找到样本的 Top-K 近邻,作为 RGB 网络训练时的正样本。
    自监督|「CoCLR」视频自监督对比学习笔记_第2张图片

  3. 伪代码:介绍 L1 阶段如何更新,即用 optical flow 网络帮 RGB 网络找正样本,包括如何使用类似 MoCo 里的动量更新队列、如何通过(3)式计算 optical flow 网络中的 top K 最近邻。下面是有实现的伪代码,也采用了类似 MoCo 里 momentum-updated history queue,UCF101 queue size = 2048;K400 queue size = 16384
    自监督|「CoCLR」视频自监督对比学习笔记_第3张图片
    上面伪代码部分的公式 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. 实验结果自监督|「CoCLR」视频自监督对比学习笔记_第4张图片

表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. 与最佳模型比较
    自监督|「CoCLR」视频自监督对比学习笔记_第5张图片
  • DataSet (duration) - Pretrain 的数据集; Res. - Resolution; 测试数据集:UCF, HMDB;蓝色是仅使用 visual
  • Frozen 就是 linear probing,前面预训练的层都固定住
  • 2 Stream 是两个网络得到的特征相似度求平均再返回
  • 最后一行是先 supervised pretrain, 再在下游 UCF 做 Finetune
  • CVRL 是仅用 InfoNCE 的 3D ResNet50,表现很好,所以如果加上 CoCLR 效果可能会更好;分析原因一方面是 CVRL 有更深的结构和更多的参数量,另一方面是有更高的解析度,更多epochs。对比如下表;
参数 CVRL CoCLR
layers 49 23
params 33.1M 7.9M
resolution 224 128
epochs 800 400
  1. 下游任务的表现
    自监督|「CoCLR」视频自监督对比学习笔记_第6张图片
    表3:

这些模型(除了SpeedNet)都是 UCF 上预训练,UCF 和 HMDB上做 retrieval 验证。

四、结论

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

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

你可能感兴趣的:(-江户川-的自监督论文集,计算机视觉,深度学习,算法)