内容简介:Part 1 自监督学习1. Introduction
导读
自监督学习是指从数据本身产生某种形式的标签并训练神经网络,用来解决某些特定任务或者学习通用的图像、视频、语言的特征表达。在学术界,自监督学习被证明可以解决光流预测、深度估计、场景遮挡等问题,不需要额外的人工标签。另外,基于自监督学习的无监督表征学习近年来也获得了飞速发展,大有超越有监督表征学习的趋势。
2020年6月11日,本文转自商汤泰坦公开课,由商汤联合实验室的两位同学分享了团队在自监督学习方面最新的研究工作,小助手已为大家做了图文整理,快来一睹为快吧~
Part 1 自监督学习领域综述
Part 2 论文分享
● 自监督场景去遮挡
● 在线自监督学习及其在视觉里程计上的应用
Part 3 Q&A问答
Part 4 答疑交流
课程PPT及视频回放获取方式见文末提示~
Part 1 自监督学习 领域综述
1. Introduction
自监督学习属于无监督学习,其典型的pipeline是给出unlabeled data并设计一个CNN architecture,需要设计一个自监督的proxy task,从图像本身中找出标签,再解决这个task。在这个过程中CNN可以学到很多东西,并可以transfer到一个目标的任务上。其中最重要的是如何设计proxy task。
现有的proxy task中Image Colorization、Jigsaw Puzzles、Image In-painting这一类的特点就是把图像破坏掉再恢复,其缺陷是可能存在domain差异问题;
Rotation Prediction、Instance Discrimination、Counting这一类不需要破坏图像;
第三类是利用Motion来学习新的东西,如Motion Prediction、Moving foreground Segmentation、Motion propagation等。
2. Why does SSL learn new information?
● 利用Prior,例如Imaging利用了颜色的prior,利用物体和颜色分布的关联;In-painting利用了物体类别和其形状纹理的关联;Rotation Prediction则利用了物体默认朝向和物体类别的关联。
● 利用Coherence,图像具有空间连贯性、视频具有时间空间连贯性。
● 利用Structure,例如Contrastive Learning。
3. What to consider in proxy task design?
● Shortcut (以jigsaw puzzles为例):为解决图像patch之间的连续性带来的Shortcut,应让两个patch之间有随机的margin;色散会带来照片的色差,神经网络会通过色差带来的紫色、绿色边缘判断patch在图像中所在的位置。类似的还有彗差、畸变、暗角等。上述问题的解决办法是让patch尽量靠近图片中心。
● Ambiguity:利用prior的自监督学习都会存在ambiguity的问题,解决方法是利用Low-entropy priors来设计自监督任务。
● Difficulty:给任务设定难度,例如Jigsaw Puzzles的patch数量不同会带来不同难度。
Part 2 论文解读
Self-Supervised Scene De-occlusion
现有的数据包括 RGB 的图片、modal mask 和物体类别。modal mask 是指物体可见部分的 mask,其实就是一般意义的 instance segmentation 的 mask。这些其实正好构成了一个 instance segmentation 的数据集,例如 COCO、KITTI、LVIS 这些。注意,这样的数据集里并没有遮挡关系和 amodal mask 的标注,所以用有监督学习的思路是无法解决上述问题的。
研究者希望将一张真实场景图片分解为完整的物体和背景,物体间根据遮挡关系组成一个有向图。他们将场景去遮挡这个问题分解为如下步骤:
1. 两两邻接的物体之间的顺序恢复。有了 pair-wise ordering 之后,就可以得到一个描述场景遮挡关系的有向图,称之为 遮挡关系图 (occlusion graph)。
2. Amodal completion:在遮挡关系图中,可以检索到任意一个物体被哪些物体遮挡了,这样就可以进行 amodal completion 步骤,把物体完整的 mask 恢复出来。
3. Content completion:有了 amodal mask 之后,就知道了物体的被遮挡区域(不可见部分),那么下一步就可以想办法在不可见部分填充 RGB 内容,使得这个物体完整的样子被恢复出来。
完整补全是指给定被遮挡的物体和它的遮挡物,一次性将物体完整的 amodal mask 补全,当然它的前提是需要有ground truth amodal mask作为监督。研究者发现一次完整补全等价于一系列的部分补全。
这里的 部分补全 (partial completion)是指:给定某一个遮挡物,只补全目标物体被当前遮挡物遮挡的部分。例如给定上图中的圆形遮挡物,把 M_0补全为M_1。
然而,这些部分补全过程还是无法训练的,因为补全的中间状态(如M_1)和最终状态(如M_2)都是未知的。
接下来则是最关键的操作。如下图,将 M_0 再「切一刀」,即从数据集中随机选一个物体,用它的 modal mask 来盖住 M_0,得到 M_{-1},然后训练部分补全,从M_{-1}恢复 M_0。这个过程是可训练的。
有了部分补全机制之后,为了方便后续的步骤,还需要引入一个正则机制,即下图 case 2。
Case 1是之前介绍的用随机选择的surrogate object来遮挡住目标物体。用 case 1 来训练的部分补全会永远增加物体的面积,网络无法学习到目标物体和surrogate object之间的遮挡关系。研究者又引入了 case 2,将surrogate object放在目标物体下面,然后要求在部分补全过程中保持目标物体不变。
训练过程在 case 1 和 2 之间随机切换,那么网络在训练过程中需要从输入中挖掘信息来判断目标物体是否被 surrogate object 遮挡,只有在目标物体被遮挡的时候,它才会被部分地补全,否则就会保持不变。
我们用一个神经网络来模拟这个部分补全过程。部分补全网络(Partial Completion Network - Mask,简称 PCNet-M)的训练过程如下,其中 A 物体为目标物体,B 为 surrogate object,对于 case 1 和 2,PCNet-M 都需要恢复出 A 的初始 modal mask。
如下图,有了训练好的 PCNet-M 之后,我们设计了如下推理过程来恢复遮挡顺序。给定 A1 和 A2 两个邻接的物体,分别以 A1 为目标物体,A2 为 surrogate object,发现 PCNet-M 并没有增加 A1 的面积;
反过来,以 A2 为目标物体,A1 为 surrogate object,结果发现 A2 的面积增加了。由此可以判断出来,A1 遮挡了 A2。
如下图,有了遮挡顺序之后,可以构建出一个遮挡顺序图。图中的边从遮挡物指向被遮挡物,这样一来,从图中对于任意一个物体,可以得到它的所有祖先节点,即为它的所有遮挡物。其中一阶祖先节点为直接遮挡物,高阶祖先节点为间接遮挡物。例如下图例子中可以得到,物体 3 有两个直接遮挡物,分别为 2 和 4。判断出遮挡物之后,就可以再次利用部分补全网络(PCNet-M)来恢复出 amodal mask。
这里还需要解释一下为何要选取所有祖先节点作为遮挡物,而非仅仅直接遮挡的一阶祖先节点。如下图,这里需要补全物体 1。从遮挡关系图中,它的一阶祖先节点(即直接遮挡物)是 2 和 4,高阶祖先节点(间接遮挡物)是 3。研究者发现,只考虑一阶遮挡物,无法完整地补全物体 1 被物体 3 间接遮挡的部分。只有考虑所有祖先节点,才可以获得正确的补全结果。
内容补全网络 (Partial Completion Network-Content,缩写 PCNet-C)的训练方式和PCNet-M类似。同样地,此处无法在训练的时候用完整内容补全的结果来监督,研究者设计了如下的部分内容补全的训练策略。给定目标物体 A和surrogate object B,用A∩B来擦除图片的RGB,作为缺失的需要填充的内容,然后用 A\B 来代表缺失的内容属于哪个物体。训练的目标是恢复原图。
测试的时候,有了遮挡物(occluders)和目标物体的 amodal mask,取交集,就得到了需要填充内容的区域(即被遮挡的区域)。同时目标物体的 modal mask 也作为输入,用来表示缺失的区域属于该目标物体而非其他物体。最后 PCNet-C 将物体完整的样子补全了出来。
应用1: amodal mask 自动生成
给一个普通的instance segmentation dataset,例如下图中的KITTI training set,研究者训练了PCNet-M并且仍旧在training set上应用amodal completion方法,就可以得到pseudo amodal masks。这样相当于在training set上免费拿到了一批amodal mask。
应用 2: 场景编辑和重组
既然现在能将场景分解开,那么就可以对场景进行编辑和重组。如下图,其中的 baseline modal-based manipulation 是基于普通的image inpainting做的,只有modal mask,没有ordering和amodal mask。本文提出的方法基于ordering 和amodal mask,能做更加自然的场景编辑。
论文链接:
https://arxiv.org/abs/2004.02788
代码:
https://github.com/XiaohangZhan/deocclusion
Self-supervised Deep Visual Odometry with online Adaptation
Background:
本篇文章是关于视觉里程计(visual odometry)以及它的在线适应的问题。首先我们来看问题的定义是什么,以及它如何从自监督的角度去解决这个问题。然后,在一个未知的场景下应该如何进行在线的适应。
基于深度学习的视觉里程计(visual odometry)可以分为两个同步的步骤:1)给定多张图,估计相机的相对位姿;2)给定一张图,估计该图的场景深度。此时可以基于三维的几何变换规则,通过一张图插值出另外一张图,并将合成的图和真实的图片作差,即可实现自监督的视觉里程计学习。
下图是典型的自监督视觉里程计的形式:例如,通过深度学习提取两张图片的对应点,利用隐式的方式求解两帧的相对位姿变换和光流,并通过单目深度估计得到深度图。然后,利用深度、光流、位姿变换三者之间的耦合关系,构建自监督的约束表达式。
然而,目前基于学习的视觉里程计有一个很致命的弱点:如果把预训练好的模型放在完全没有见过的场景(比如从白天到晚上,从室外到室内),它往往是不work的。本文将重点解决该问题:让深度网络以自监督的方式实现在线学习。
Challenges:
● Deep VO performs bad in unseen
environments → requires online adaptation
● Unlikely to collect enough ground truth
data in advance when running VO in the open world
● Naïve online learning suffers froms low
convergence and catastrophic forgetting
Methods:
基于这三个Challenges,我们提出了基于元学习的在线自监督学习方法。
1. Online Meta-learning Objective
经典的在线学习是对于当前的数据做梯度下降,更新网络参数。与此相反,meta-learning的目标函数是对两个时刻的数据做梯度下降,且目标函数中待优化的自变量是前一个时刻的网络参数。利用嵌套优化的方式。在目标函数的内层,首先对i时刻的数据进行梯度下降,得到较优参数估计,这一步可看作网络的训练;
之后,将优化好的参数在i+1时刻的数据上做测试,并最小化测试误差。可以看到,经典在线学习方法的时间感受野是1,而meta-learning方法将时间感受野拓展为2。通过这种方式,网络在不同时刻都能有出色的表现。
该方法为什么能够得到更好的结果呢?我们进行了一些数学分析:
传统的在线学习很难克服遗忘问题,不同时刻接收到的数据是不同的,因此在不同时刻,网络优化的梯度方向是随机的,也就是说它的调整方向是毫无规律的。但是如果能够把前一个时刻和后一个时刻的梯度做对齐的话,即最大化它们的梯度相似性,就相当于把前一个时刻的调整方向迁移到当前时刻,实现更快的收敛。这就是泰勒展开的第二项:最大化两个时刻梯度方向的相似性。
2. Spatial-Temporal Aggregation
第二点是在时间和时空上的一致性约束。对于在线学习来说,网络面临的往往是未知场景,因此如果只用当前一张图片做预测往往会非常困难。但是,时序的信息往往具有高度的相似性,如果在前一时刻网络能得到较为准确的估计,就可以将相邻多帧的估计结果整合起来,做基于多帧的估计,这样网络就能得到更好、更鲁棒的估计结果。因此,本文采用卷积LSTM的方式,将多个卷积LSTM嵌入 CNN中,在feature层面做时空的整合,使网络做更好的估计。
3. Online Feature Alignment
这一步更像是一种标准化、归一化的操作方式,在feature的统计分布层面做在线的domain迁移。在一段时间内,输入的图片通过神经网络抽取到上百维的feature,那么就可以得到每一个feature维度的统计信息,例如均值和标准差。在GAN的风格迁移(styleGAN)理论中,feature的统计信息(均值和标准差)表征了feature的style。
假如在训练集中只有白天的数据,经过预训练后网络对白天的情况已非常熟悉。若此时将白天预训练模型应用于夜晚场景,那么可以调整夜晚图像在feature上的统计特性,将夜晚图像的分布变为白天图像的分布。这样,预训练网络的输入并没有太大改变,因此网络能实现快速的在线适应。
Experiments:
实验的轨迹图中,红线是本文经过在线学习后的结果,和虚线ground truth的结果非常接近。值得注意的是,该轨迹是上千帧位姿估计累乘得到的,每一个时刻的误差都会传播到下一个时刻。可以看到,本文的方法其实在遇到未知的场景时,累积误差远远小于其他方法。
为了测试该方法在不同数据集之间的迁移泛化能力,首先在虚拟数据集上进行预训练,并将预训练的模型在真实数据集上测试。可以看到,其他state-of-the-art的方法如果进行经典的online learning都是很不work的,预测轨迹和实际轨迹相差非常多。相比之下,我们的方法能够得到与ground truth更加接近的结果。
我们还在室外的KITTI场景进行预训练,然后把模型直接用在室内且相机运动方式与KITTI有很大不同的场景中。可以看到,虽然场景的 domain gap非常大,但本文的方法依然能得到较为准确的轨迹估计结果。
Part 3 Q&A
Q :用surrogate obj人为遮挡训练出的补全模型,从而预测补全其他没有amodal mask的遮挡部分?这样做的前提是不是人工遮挡和天然遮挡的补全规则是一致的呢?
A:前提是我们假设了人为制造遮挡和天然遮挡他们的规则是一样的,但实际上人为遮挡和天然遮挡是不可能做到一样的。比如在制造人为遮挡的时候,可能是一个人遮住了一个树冠,实际上人只能遮住树干。这就说明它存在一些差距,但是这个差距在这里是不会带来严重问题的,因为人为遮挡是足够随机,什么样的遮挡都会出现,然后并且是足够随机的遮挡,所以在训练的过程中见到了非常多的这样情况,那么其中肯定也包括了天然遮挡的情况,就能够被解决掉。
Q:在线的深度估计效果如何?比如说我们在虚拟的数据集上去做一个深度估计的训练,然后放在这个真实的自动驾驶场景,怎么样?
A:这个效果其实还是不错的。其实单目深度估计其实更像是一个多级分类网络,也就是比较图像当中每个像素的远近关系。因此,对于预训练好的深度估计网络,像素比对的分类部分其实是不需要改变的,我们只需要把网络输入的feature做一次变换,变换到预训练时的feature分布即可。所以如果用 online的 feature alignment做深度估计,效果还是可以的。
在虚拟数据集上,我们认为最关键的问题其实是浅层的feature,因为如果虚拟数据集上很多很多平面和纹理都是相同或相似的颜色,而且图片基本没有噪声。但是真实世界中相机采集到的图片往往含有很多噪声。其实我们只需要在浅层的feature上做feature alignment,后边的回归、分类完全都是可以work的。
Q: 在online adaptation的时候,效率和在线更新的效果之间如何平衡?
A:我们这篇论文是一个原型,所以没有在这个效果上面去做一个更多的对比。我们目前的方法是在每一时刻只做一次梯度下降,但为了得到更好的效果,在计算资源允许的情况下,其实也可以做更多次的梯度下降。
Q: 自监督学习好像大多是自编码器的结构,如何把它应用到只需要encoder的网络中呢?比如图像分类、识别等任务?
A:早期的一些自监督的学习方法都是encoder decode的结构,colorization recovery base的方法都是encoder decoder,后来出现的新的方法,只需要encoder的就好了。特别是一些 predictive的task。自监督学习其实可以大致分成两种,它一种是reconstruction task,是要把原图尺寸的一些东西恢复出来。
第二种是predictive task,它是只需要去predict一些特定的目标,比如说两张图是不是同一张图,这里面可能会用一些contrastive loss之类的,这个只有encoder。这两种模式都有encoder,两种encoder都可以拿来做图像分类识别的人物都可以拿来做transfer。我有一些经验上的结论,就是predictive的这种方法基本上都比reconstruction的方法要更好一点。用predictive方法,它学到的一些语义更加高级。
视频回放:
https://www.bilibili.com/video/BV1pK4y1478z
在我爱计算机视觉公众号后台回复 “012” ,即可获取相应的 课程资料 哦!
备注:自监督
自监督/无监督学习交流群
关注最新最前沿的自监督、无监督学习技术,
若已为CV君其他账号好友请直接私信。
我爱计算机视觉
微信号:aicvml
QQ群:805388940
微博知乎:@我爱计算机视觉
投稿:amos@52cv.net
网站:www.52cv.net
在看,让更多人看到
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 区块链关键技术研究进展
- 生成对抗网络的最新研究进展
- 人机对话技术研究进展与思考
- 基于深度学习知识库问答研究进展
- 2019 到目前为止的深度学习研究进展汇总
- 取代 HDFS?Ozone 在腾讯的最新研究进展
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Windows API编程范例入门与提高
东方人华 / 清华大学出版社 / 2004-1-1 / 38.00
本书通过大量实用、经典的范例,以Visual Basic为开发平台由浅入深地介绍了Windows API编程的基本方法和大量的实用技巧。本书采用实例带动知识点的形式,使读者快速入门并逐步得到提高。本书每节即是一个实例,操作步骤详尽,所用到的源文件均可在网站下载。读者可以按照操作步骤完成每个实例的制作,并根据自己的喜好进行修改、举一反三。 本书内容翔实,凝结了作者多年的编程经验,既适合......一起来看看 《Windows API编程范例入门与提高》 这本书的介绍吧!