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

本文主要是介绍CVPR 2022 | CNN自监督预训练新SOTA!上交/Mila/字节联合提出HCSC:具有层级结构的图像表征自学习新框架...,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

点击下方卡片,关注“CVer”公众号

AI/CV重磅干货,第一时间送达

转载自:机器之心

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

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

6f14f33efd550ffce879e133d232097a.png

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

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

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

  • 缺乏对上述层级语义结构的建模;

  • 负样本对的定义可能存在噪声:随机选择的两张图像可能属于相同类别。

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

31157a87143916b2fe0680185bddc5b0.png

  • 论文地址: https://arxiv.org/abs/2202.00455

  • 项目地址: https://github.com/gyfastas/HCSC

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

方法

a1607011298cdbb673772e1f7cb6f546.png

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

层级语义表征

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

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

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

8d6ca07095969ebf6d66ebec47e4e525.png

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

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

选择性对比学习

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

  • 选择性实例对比学习

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

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

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

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

634e9ceb18b4dfa11deec1e8f3a9d162.png

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

599d20646e03aeac44258eb46afe7a94.png

  • 选择性原型对比学习

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

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

10551ff52f2a250df1d560a78bab214f.png

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

5c19084b2656c55f2b3c8a9d1535ce67.png

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

7197391126d08c490a6b39c9e6d05b40.png

实验结果

主要结果

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

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

e83899d91663dd0d7d800418d842972c.png

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

943db42b1093fa8a874bd7a4ce101107.png

7019506d74751d1105f7c91762fe7b0d.png

可视化

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

4c43dcd5fa39d57ea3ce577da941715e.png

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

97b4e851484ad89cc89fdd7d6cf93c0e.png

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

8b5dc50fac113ed8a3347cd7943b9dc1.png

消融实验

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

1. 层级原型、实例样本选择、原型样本选择模块的有效性都得到了验证,可以分别在 baseline (67.6)的基础上有效涨点 (67.6 => 68.9 => 69.2),其中效果最明显的是实例样本选择模块。

2. 在原型数量相同的情况下,带有层级结构的原型 (3000-2000-1000) 比单层原型 (6000) 取得更优的性能。这也印证了层级原型的有效性。另一方面,模型对进一步增加层级数以及各层原型的数量不敏感。

3151408df72302d8f6da7d983b508023.png

7354e5b27896a94390f7dcf8f3592e2e.png

一作介绍

bca154caa326450ea2abc8b89907b4c4.png

  • 郭远帆: 上海交通大学电子系二年级硕士生, 导师为徐奕副研究员. 他本科就读于上海交通大学, 本科期间主要研究方向为计算机视觉、医学影像处理, 在MICCAI、ISBI、Neurocomputing等会议与期刊中以第一作者/共同第一作者身份发表论文三篇. 硕士期间研究方向为计算机视觉、自监督学习, 在字节跳动实习期间完成该研究工作。

80e2c2894ac1d4706858c73763b15d39.png

  • 徐明皓,Mila 魁北克人工智能研究所一年级博士生,导师是唐建教授,主要研究方向是图表征学习、图像表征学习和药物发现。他本科和硕士就读于上海交通大学,在上海交大计算机视觉实验室进行科研工作,导师是倪冰冰教授,期间的主要研究方向为迁移学习和视觉计算。他在 NeurIPS、ICML、CVPR、ICCV、ECCV 等会议上以第一作者 / 共同第一作者身份发表论文七篇。

ICCV和CVPR 2021论文和代码下载后台回复:CVPR2021,即可下载CVPR 2021论文和代码开源的论文合集后台回复:ICCV2021,即可下载ICCV 2021论文和代码开源的论文合集后台回复:Transformer综述,即可下载最新的3篇Transformer综述PDF
CVer-目标检测交流群成立
扫码添加CVer助手,可申请加入CVer-目标检测 微信交流群,方向已涵盖:目标检测、图像分割、目标跟踪、人脸检测&识别、OCR、姿态估计、超分辨率、SLAM、医疗影像、Re-ID、GAN、NAS、深度估计、自动驾驶、强化学习、车道线检测、模型剪枝&压缩、去噪、去雾、去雨、风格迁移、遥感图像、行为识别、视频理解、图像融合、图像检索、论文投稿&交流、PyTorch和TensorFlow等群。
一定要备注:研究方向+地点+学校/公司+昵称(如目标检测+上海+上交+卡卡),根据格式备注,可更快被通过且邀请进群▲长按加小助手微信,进交流群
CVer学术交流群(知识星球)来了!想要了解最新最快最好的CV/DL/ML论文速递、优质开源项目、学习教程和实战训练等资料,欢迎扫描下方二维码,加入CVer学术交流群,已汇集数千人!▲扫码进群
▲点击上方卡片,关注CVer公众号整理不易,请点赞和在看

这篇关于CVPR 2022 | CNN自监督预训练新SOTA!上交/Mila/字节联合提出HCSC:具有层级结构的图像表征自学习新框架...的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/375005

相关文章

使用Python开发一个图像标注与OCR识别工具

《使用Python开发一个图像标注与OCR识别工具》:本文主要介绍一个使用Python开发的工具,允许用户在图像上进行矩形标注,使用OCR对标注区域进行文本识别,并将结果保存为Excel文件,感兴... 目录项目简介1. 图像加载与显示2. 矩形标注3. OCR识别4. 标注的保存与加载5. 裁剪与重置图像

SpringBoot集成图片验证码框架easy-captcha的详细过程

《SpringBoot集成图片验证码框架easy-captcha的详细过程》本文介绍了如何将Easy-Captcha框架集成到SpringBoot项目中,实现图片验证码功能,Easy-Captcha是... 目录SpringBoot集成图片验证码框架easy-captcha一、引言二、依赖三、代码1. Ea

Gin框架中的GET和POST表单处理的实现

《Gin框架中的GET和POST表单处理的实现》Gin框架提供了简单而强大的机制来处理GET和POST表单提交的数据,通过c.Query、c.PostForm、c.Bind和c.Request.For... 目录一、GET表单处理二、POST表单处理1. 使用c.PostForm获取表单字段:2. 绑定到结

mysql通过frm和ibd文件恢复表_mysql5.7根据.frm和.ibd文件恢复表结构和数据

《mysql通过frm和ibd文件恢复表_mysql5.7根据.frm和.ibd文件恢复表结构和数据》文章主要介绍了如何从.frm和.ibd文件恢复MySQLInnoDB表结构和数据,需要的朋友可以参... 目录一、恢复表结构二、恢复表数据补充方法一、恢复表结构(从 .frm 文件)方法 1:使用 mysq

Python中顺序结构和循环结构示例代码

《Python中顺序结构和循环结构示例代码》:本文主要介绍Python中的条件语句和循环语句,条件语句用于根据条件执行不同的代码块,循环语句用于重复执行一段代码,文章还详细说明了range函数的使... 目录一、条件语句(1)条件语句的定义(2)条件语句的语法(a)单分支 if(b)双分支 if-else(

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操

使用Navicat工具比对两个数据库所有表结构的差异案例详解

《使用Navicat工具比对两个数据库所有表结构的差异案例详解》:本文主要介绍如何使用Navicat工具对比两个数据库test_old和test_new,并生成相应的DDLSQL语句,以便将te... 目录概要案例一、如图两个数据库test_old和test_new进行比较:二、开始比较总结概要公司存在多

修改若依框架Token的过期时间问题

《修改若依框架Token的过期时间问题》本文介绍了如何修改若依框架中Token的过期时间,通过修改`application.yml`文件中的配置来实现,默认单位为分钟,希望此经验对大家有所帮助,也欢迎... 目录修改若依框架Token的过期时间修改Token的过期时间关闭Token的过期时js间总结修改若依

Go语言使用Buffer实现高性能处理字节和字符

《Go语言使用Buffer实现高性能处理字节和字符》在Go中,bytes.Buffer是一个非常高效的类型,用于处理字节数据的读写操作,本文将详细介绍一下如何使用Buffer实现高性能处理字节和... 目录1. bytes.Buffer 的基本用法1.1. 创建和初始化 Buffer1.2. 使用 Writ

基于WinForm+Halcon实现图像缩放与交互功能

《基于WinForm+Halcon实现图像缩放与交互功能》本文主要讲述在WinForm中结合Halcon实现图像缩放、平移及实时显示灰度值等交互功能,包括初始化窗口的不同方式,以及通过特定事件添加相应... 目录前言初始化窗口添加图像缩放功能添加图像平移功能添加实时显示灰度值功能示例代码总结最后前言本文将