论文地址:https://www.robots.ox.ac.uk/~vgg/research/CoCLR/
Github: https://github.com/TengdaHan/CoCLR
作者背景: VGG (Oxford Visual Geometry Group) 牛津大学视觉几何组发布于 2020 NeurIPS
在图像和视频处理领域,自监督表征学习近两年的成果来自对比学习:给定数据集,目标是区别样本的“变体”和数据集中的其他样本。“变体”可以来自人造的,比如数据增强、也可以来自天然的,比如同一视频的不同片段出现的物体。常用的方法是实体判别,MoCo, SimCLR 都是这个思路,拉近正样本的距离,推远正样本与负样本的距离。因此对比学习非常灵活,不同的正负样本定义规则就会有不同,比如同一个视频里正负两帧都是正样本,其他视频认为负样本。
这篇文章提出的问题是:是否实体判别最大化利用数据?没有,原因如下
a. 简单理解是给有类标签数据定义的对比损失函数,本质是 InfoNCE。
b. 2020 NeurlIPS 同时期还有一篇论文是 Supervised Contrastive Loss, 提出扩展对比损失函数,允许每个锚点有多个正对。将对比学习适应于完全监督的 setting。
本文用的是纯视觉数据,没用文本。谷歌有个CVRL 也是讲 CLR 思路用在视频领域。 TODO
文章的贡献有三:
证明加入类别标签的正样本,即有监督对比学习能够提升表现。
提出自监督协同训练网络,用一个网络为另一个网络提供正样本标签。
通过全面的实验和两个下游任务(分别是动作识别和视频抽取)评估了表征学习的能力
本文不是定义一种新的对比损失,而是提出一种新的抽样方法。两个网络同时在训练,互相帮助,bootstrap, 类似 BYOL。一个网络帮助另一个网络找正样本。论文作者的思路来自于视频/照片具有两种特征:RGB 颜色和主体的光流。下图,左右两张分别在室内和室外打高尔夫,颜色RGB完全不一样,但是动作几乎一样。作者正是想利用这两个特征,互相帮助找正样本。
初始化:两个网络独立,用 InfoNCE,训练 300 epoch
交换:用一个网络给另一个网络采样,交替进行,比如用 Flow 网络找到样本的 Top-K 近邻,作为 RGB 网络训练时的正样本。
伪代码:介绍 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:
图2:
参数 | CVRL | CoCLR |
---|---|---|
layers | 49 | 23 |
params | 33.1M | 7.9M |
resolution | 224 | 128 |
epochs | 800 | 400 |
这些模型(除了SpeedNet)都是 UCF 上预训练,UCF 和 HMDB上做 retrieval 验证。
这篇论文应该会是我下周第一次论文分享的内容啦~希望一切顺利!