CVPR 2022 | CNN自监督预训练新SOTA:上交、Mila、字节联合提出具有层级结构的图像表征自学习新框架

简介: CVPR 2022 | CNN自监督预训练新SOTA:上交、Mila、字节联合提出具有层级结构的图像表征自学习新框架

来自上海交通大学、Mila 魁北克人工智能研究所以及字节跳动的研究者提出了一种具有层级语义结构的自监督表征学习框架,在 ImageNet 数据集上预训练的模型在多个下游任务中取得了 SOTA 性能


层级结构无处不在,自然界中存在「界 - 门 - 纲 - 类 - 科 - 属 - 种」这样的层级关系, 大规模自然图像数据集中也天然存在。例如,ImageNet 数据集的类别标签本身就是基于 WordNet 层级形成的, 我们总是可以「刨根问底」地找到某个类别的「父类」。举例而言,拉布拉多犬是一种犬类,而犬类又是一种哺乳动物。这就形成了拉布拉多犬 -> 犬类 -> 哺乳动物的层级关系。

年来, 计算机视觉领域涌现出一大批有效的自监督预训练模型,如 NPID、SimCLR、MoCo 等,它们能够从大规模数据集中通过自监督的方式学习潜在的图像语义表征,从而提升预训练模型在各项下游任务(如物体分类、目标检测、语义分割)的迁移性能。

这些自监督预训练框架通常基于对比学习实现. 对比学习通过定义正负样本对,并在表征空间中最大化正样本对之间的相似度而最小化负样本对之间的相似度, 从而达到「同类相吸、异类互斥」的目的。在不可获得分类标签的情况下,NPID、MoCo、SimCLR 通过实例判别 (Instance Discrimination) 任务,将同一图像经过不同随机数据增强后作为正样本对,而将不同图像作为负样本对,从而学习对数据增强具有不变性的图像表征。


然而, 现有的自监督对比学习框架存在两个问题:

  • 缺乏对上述层级语义结构的建模;
  • 负样本对的定义可能存在噪声:随机选择的两张图像可能属于相同类别。


针对这两个问题,来自上海交通大学、Mila 魁北克人工智能研究所和字节跳动的研究者提出了一种基于层级语义结构的选择性对比学习框架(Hiearchical Contrastive Selective Coding,HCSC)。



这一框架通过将图像表征进行层级聚类,构造具有层级结构的原型向量 (hierarhcical prototypes),并通过这些原型向量选择更加符合语义结构的负样本进行对比学习, 由此将层级化的语义信息融入到图像表征中。该自监督学习框架在多个下游任务中达到卷积神经网络自监督预训练方法的 SOTA 性能。

方法


该工作的方法论框架包含两个重要的模块: 一个是层级语义结构的构建与维护, 另一个是基于层级语义结构的选择性对比学习。

层级语义表征

研究者注意到,层级语义结构天然可以通过树状结构来描述:如果将树中的某个节点认为是一个语义类别, 则父节点可以认为是它的上层类别,例如「拉布拉多犬」的父节点可以认为是「犬类」,而其兄弟节点可以包括「贵宾犬」、「萨摩犬」等。这样的树状结构显然具备一个性质:同一父节点的两个子节点必然也共享更上层的祖先节点,例如「贵宾犬」与「萨摩犬」同为犬类, 它们也同为哺乳动物。

那么,如何在图像的表征空间中构建这样的树状结构呢?在缺少类别标签的无监督场景中,可以通过对图像特征聚类的方式获得图像的潜在语义类别。聚类中心则可以被认为是代表着某种语义类别的「原型向量」,基于自底向上的层级聚类思想, 在这些聚类中心的基础上进一步进行聚类则可以得到更高层级的潜在语义类别。在这一过程中, 语义类别的树状结构自然地得以维护:在某层聚类中为相同类别的图像,在上层中仍然保持为相同类别。

在实现过程中, 该研究采用了简单有效的自底向上层级 K-means 算法, 具体算法流程如下:


在该训练框架中,每进行一轮学习后,由于网络参数的更新,图像的表征也随之更新。

因此,在每个训练epoch之前, 均通过当前的网络参数提取整个数据集的图像表征,对提取到的图像表征应用如上所述的层级 K-means 算法得到一系列具有树状结构的层级原型, 这些层级原型将在接下来的训练过程中用于指导对比学习的样本选择,从而将层级化的语义信息融入到图像表征中。

选择性对比学习

在得到了一系列具备层级结构、潜在地表征某一类别的原型向量后, 可以基于这些原型向量选择更加符合语义结构的对比学习样本.

  • 选择性实例对比学习

首先,我们简要回顾一下自监督对比学习的基本原理。对比学习的目的可以概括为实现「同类相吸」、「异类互斥」。在不考虑原型向量的情况下, 基于实例的对比学习通过定义正负样本对, 并在表征空间中最大化正样本对之间的相似度而最小化负样本对之间的相似度来实现上述目的。

此前的方法 (如 NPID、MoCo 等) 将同一图像经过不同随机数据增强后的版本作为正样本对,而将不同图像作为负样本对。这样的方式存在一个关键的问题:所选择的负样本对可能属于相同类别,从而使得相同类别的样本在表征空间中互相远离,这将在某种程度上破坏模型所学习到的表征有效性。

出现这一问题的根本原因在于没有额外的类别信息指导对负样本的选择。如果我们知道类别信息,则可以将同类负样本剔除 (这些同类负样本也可以称为假负样本),从而避免带来梯度噪声。在自监督的情况下,虽然没有准确的类别信息,但我们通过此前的层级聚类过程得到了一系列聚类标签。在这些聚类标签的帮助下, 可以近似地达到剔除假负样本的目的:如果一对样本属于相同的聚类中心, 则从负样本对中剔除即可。

更进一步地,考虑到聚类标签的不确定性,该研究通过接受 - 拒绝采样的方式对负样本进行选择。对于一个图像表征z,层级聚类的结果可以导出该图像在第l层所属的聚类中心其中s(·)是相似度函数,在该研究中通过 cosine 相似度实现);这一聚类中心代表了该图像在这一层中所属的类别。接下来,对于候选负样本,它被选择的作为负样本的概率为:


直观而言, 一个候选负样本被选择的概率可以近似被描述为「与目标样本属于不同聚类中心的概率」经过选择过程后, 更高质量的负样本集 将被用于计算 InfoNCE 损失. 在多个层级聚类中心指导下, 最终的选择性实例对比学习 (Instance-wise Contrastive Selective Coding, ICSC) 的损失函数为:


  • 选择性原型对比学习

除了用于指导实例间的对比学习,层级原型还可用于辅助原型对比学习。原型对比学习是图像表征与聚类中心之间的交互,可以简单总结为在表征空间中最大化图像表征与其所属的聚类中心的相似度。

同样地,如果通过随机采样的方式形成负原型集合 N_c,那么其中也可能存在与聚类中心 c 语义相近的原型 (例如 c 的兄弟节点):如果某张图像是萨摩犬,选择相似的种类例如拉布拉多犬作为负例进行对比学习并不是一个好选项。而层级结构的存在为选择合理的对比原型提供了一个解决方案:与此前选择对比样本类似,我们只需要计算某一候选原型与目标原型的父节点的相似度,即可选择与目标原型大概率不是近似类别的原型,从而避免可能带来噪声的对比原型。具体而言, 某个聚类中心c_j被选择作为对比原型的概率为:


类似地, 这一概率可以被描述为「某一原型与目标原型属于不同父类的概率」。基于经过选择后的负原型集合,选择性原型对比学习损失被定义为


最后, 我们将两种改进后的对比学习损失进行组合得到最终的优化目标:


实验结果
主要结果
研究者们在 ImageNet-1k 线性分类、KNN、半监督学习以及跨数据集的迁移学习 (包括在 VOC、COCO 数据集的目标检测任务以及在 VOC、Places205 数据集的分类任务) 的实验设置下与基于 CNN 架构的 SOTA 方法进行了对比,HCSC 在多个任务中均取得了出色的效果。

不同训练配置下模型性能对比:


更多下游任务的性能对比:



可视化
除了量化实验,该论文还给出了直观的可视化结果。研究者们展示了 HCSC 在 ImageNet 上的聚类结果,在下图中可以明显地看出存在层级结构:叼着鱼的灰熊 => 在水上的熊或者狗 => 在水上的动物。


另外一个例子, 研究者们展示了一个经典的语义树状结构:


除了层级结构可视化,研究者们也展示了 HCSC 训练过程中删除的「假负样本」:例如对其中一个鸟类样本,删除的对比负样本也大部分为鸟类。


消融实验
研究者们还做了充分的消融实验来验证了所提出的层级原型和样本选择模块的有效性, 以及对每层原型数量选择的对比实验。可见:

1. 层级原型、实例样本选择、原型样本选择模块的有效性都得到了验证,可以分别在 baseline (67.6)的基础上有效涨点 (67.6 => 68.9 => 69.2),其中效果最明显的是实例样本选择模块。2. 在原型数量相同的情况下,带有层级结构的原型 (3000-2000-1000) 比单层原型 (6000) 取得更优的性能。这也印证了层级原型的有效性。另一方面,模型对进一步增加层级数以及各层原型的数量不敏感。



相关文章
|
2月前
|
机器学习/深度学习 存储 算法
【复现】尝试使用numpy对卷积神经网络中各经典结构进行改写复现
【复现】尝试使用numpy对卷积神经网络中各经典结构进行改写复现
39 0
【复现】尝试使用numpy对卷积神经网络中各经典结构进行改写复现
|
6月前
|
机器学习/深度学习 运维 算法
基于卷积神经网络和手工特征注入的皮肤损伤图像异常检测:一种绕过皮肤镜图像预处理的方法
基于卷积神经网络和手工特征注入的皮肤损伤图像异常检测:一种绕过皮肤镜图像预处理的方法
62 1
|
10天前
|
机器学习/深度学习 数据采集 TensorFlow
R语言KERAS深度学习CNN卷积神经网络分类识别手写数字图像数据(MNIST)
R语言KERAS深度学习CNN卷积神经网络分类识别手写数字图像数据(MNIST)
29 0
|
4月前
|
机器学习/深度学习 算法 计算机视觉
详细介绍CNN卷积层的原理、结构和应用,并探讨其在图像处理和计算机视觉任务中的重要性
详细介绍CNN卷积层的原理、结构和应用,并探讨其在图像处理和计算机视觉任务中的重要性
168 0
详细介绍CNN卷积层的原理、结构和应用,并探讨其在图像处理和计算机视觉任务中的重要性
|
7月前
|
机器学习/深度学习 数据采集 人工智能
头疼!卷积神经网络是什么?CNN结构、训练与优化一文全解
头疼!卷积神经网络是什么?CNN结构、训练与优化一文全解
61 0
|
11月前
|
编解码 计算机视觉
3D检测新SOTA | PointPillar与Faster RCNN结合会碰撞出怎样的火花(二)
3D检测新SOTA | PointPillar与Faster RCNN结合会碰撞出怎样的火花(二)
172 0
|
11月前
|
存储 编解码 自动驾驶
3D检测新SOTA | PointPillar与Faster RCNN结合会碰撞出怎样的火花(一)
3D检测新SOTA | PointPillar与Faster RCNN结合会碰撞出怎样的火花(一)
95 0
|
11月前
|
机器学习/深度学习 算法 PyTorch
手把手教你使用LabVIEW实现Mask R-CNN图像实例分割(含源码)
前面给大家介绍了使用LabVIEW工具包实现图像分类,目标检测,今天我们来看一下如何使用LabVIEW实现Mask R-CNN图像实例分割。
163 0
|
11月前
|
机器学习/深度学习 编解码 测试技术
解决CNN固有缺陷, CCNN凭借单一架构,实现多项SOTA
解决CNN固有缺陷, CCNN凭借单一架构,实现多项SOTA
119 0
|
11月前
|
机器学习/深度学习 人工智能 编解码
7 Papers & Radios | DeepMind伪代码详解Transformer;连续CNN架构实现多SOTA
7 Papers & Radios | DeepMind伪代码详解Transformer;连续CNN架构实现多SOTA
126 0

热门文章

最新文章