赞
踩
对于无监督学习,可以简单地理解为利用没有标签的数据集进行学习,进一步地,无监督学习不是告诉一个模型朝着哪个方向学习,而是让模型自己去学习“学习的过程”。
而监督学习,就是用人工标记的标签来引导模型学习相应的特征提取方式,这个学习的过程显然很大程度上依赖于标签的指引,相应地必然带有明显的目的性,而无监督学习算法学到的大部分内容必须包括理解数据本身,而不是将这种理解应用于特定任务。
首先总结一下监督学习(supervised learning)与无监督学习(unsupervised learning)的差别: - 对训练集与测试样本的使用方式不同。监督学习目的在训练集中找规律,然后对测试样本运用这种规律。而无监督学习没有训练集,只有一组数据,在该组数据集内寻找规律。 - 训练样本是否有标签。监督学习的识别的结果表现在:给待识别数据加上了标签,因此训练样本集必须由带标签的样本组成。而无监督学习方法只有要分析的数据集的本身,预先没有什么标签。 - 适用任务不同。无监督学习方法在寻找数据集中的规律性,这种规律性并不一定要达到划分数据集的目的,也就是说不一定要“分类”。而有监督学习则是通过已经有的有标签的数据集去训练得到一个最优模型。
其次,监督学习为主流的当下,其不仅在传统的一些视觉问题比如视频分类等取得了很大的成功,而且可以很好地迁移到其他的任务或者数据集上,所以一个自然而然的问题是why unsupervised learning? 在阅读的多篇文章里介绍了对这个问题的理解,可以归纳如下: - 人工标记的成本高昂,构造带有监督信息的数据集是一项具有挑战性的工作; - 无监督学习更注重对数据本身的特征进行挖掘,而视频本身丰富的结构信息(空间 spatial 和时序 temporal).
基于上述的考虑,以及互联网上未标记但蕴含丰富信息的海量数据的驱使,无监督学习研究的主要目标是预训练一个模型(称作「识别」或「编码」)网络,供其他任务使用。编码特征通常能够用到分类任务中。在阅读的普渡大学的Prof. Eugenio Culurciello的关于无监督学习的综述中,其将无监督学习称为“无监督学习可谓是深度学习的圣杯”,并将无监督学习分为四类:
1. 自动编码器(auto-encoder)
2. 聚类学习
3. 生成模型
4. PredNet
将题目定为无监督学习在视频领域应用的综述其实是非常惭愧的,因为只是基于上面那片综述看的几篇paper的note:
如上图所示,bottom CNN作为特征提取器,上下两层共享参数,然后将各自提取的特征concat之后输入top CNN,进行差别比较,最后判断transformation的类型。
等网络在自定义的问题上pretrain过之后,可以用单独的一个bottom CNN作为特征提取器应用与action recognition等领域。
该文中提出的模型包括以下四个主要的组件: - LSTM Autoencoder: 该组件以视频序列或者特征序列(抽象度较低,也就是一个训练好的模型的前几层的输出),所有的序列通过一个LSTM组成的encoder网络,得到cell state和output state,然后这两个特征被拷贝作为decoder网络的输入得到输出的序列(与输入序列相同但是逆序)。 - LSTM Future Predictor Model: 该组件是为了预测未来的视频帧序列,结构与Auto-encoder类似。 - Conditional Decoder: 上述的两个模型都有两种模式,即conditional和unconditional,前者指的是用decoder的前一个输出作为下一个输入。条件解码器有助于在目标序列分布中建模多种模式。如果不这样做,网络会趋向于在低纬度空间通过平均的方法获得输出。其中对于预测未来帧的任务来说,其输出的期望值不是唯一的而是多种模式 (multi-modal) 的。 - Composite Model:重建输入和预测未来的任务被综合为复合模型,同时也试图解决两个任务单独训练的问题,对于重建问题而言,要避免模型只是单纯的学习到trivial的信息而简单得记忆输入。对于预测问题而言,倾向于只存储最后几帧的信息,因为这些信息对于预测未来是最重要的,因此,编码器末端的表征会忘记大部分输入,但是如果让模型也预测所有的输入序列,那么它就不能只注意最后几帧。
上图展示了composite的结构。
关于无监督在这篇文章的应用,作者采用无监督学习的网络权重去初始化监督学习网络权重,尤其是在数据机很少的监督学习任务,无监督学习可以帮助网络更好地学习对视频特征建模的方式。
首先训练了一个两层的composite模型,每一层的LSTM有2048个单元,其利用预训练卷积神经网络获得的特征作为输入,LSTM AutoEncoder部分用于重构输入帧,而LSTM Future Predictor 用于预测未来帧,随后采用encoder学习到的权重来初始化LSTM分类器,每个LSTM第二层的输出都通过SoftMax分类器,得到每一帧对应的动作类别的概率分布,由于每个视频中只有一个动作,所以最终只需将每个时间步上得到的预测结果进行平均便可得到该视频的预测结果。与此进行对比的baseline模型是一个具有相同结构的LSTM分类器,区别就在于该分类器的权重是随机初始化的。通过实验可以发现,采用无监督学习权重初始化的方法在数据量较小的有监督学习任务中带来的提升较为明显,而且随着数据集的扩大,无监督的提升效果会减小。
上一篇提到的视频特征提取是利用auto-encoder结构在帧级别(frame-level)进行重建或者预测,存在以下的问题: - 对于轻微改动的敏感性:文章认为是由于高维的特征表示带来的过拟合; - 对于时序特征无识别力:文章认为帧级别重建的话会让网络过度重视场景的外观特征而忽略了时序信息。
针对上述两个问题,作者提出了sequence2whisper的模型,完整的模型包括两个步骤:
首先是whisper生成,S = {s1, s2,...,sN}是输入的视频帧序列,相应的{s1, s2,...,sN}表示从帧中提取的p维的特征向量,并通过LLC进行视频帧的稀疏编码,如果有q个聚类中心,可以构造一个D $in$ Rp*q维度的字典。D被认为是编码了视觉中有代表性的模式,从自然语言的角度,可以被认为是一个是whisper构成的字典,也就是说di与whisper中的wi相对应。一个视频序列(s1, s2,...,sn)可以用一串whisper(w1, w2,...,wn)表示。
然后是从视频sequence生成whisper,输入视频序列(s1, s2,...,sn)可以通过基于注意力的RNN得到encoded隐藏层信息(h1, h2,...,hn),然后在decode阶段,得到输出序列(w1, w2,...,wm)。
详细介绍一下利用LSTM和Attention训练sequence-to-whisper的过程。
在每一个time step,LSTM的输入一个视频的不同帧提取浅层特征的加权平均,这个加权的结构就是soft attention,权值系数取决于每一帧的特征和前一time step的隐藏层信息。可以从上图看出,文中采用的是双层stacked two-layer LSTM, bottom layer负责对输入的x进行编码得到隐藏层信息,分别送入top layer、下一个time step的LSTM和计算下一个time step的输入。
无监督深度预测的基于多视角下的几何限制,已知Is、It、相机内参K,一旦相机的姿态变换Tt->s和It的深度被估计,就可以合成转换的图片:
p表示像素在图像的位置,然后就可以用合成图像和groundtruth的图像的差作为监督信息。整个网络的结构如下:
下面详细介绍一下DepthNet的组成: - LR-Net和HR-Net:分别采用encoder-decoder的结构对不同像素的两个输入进行编解码,其中LR提取的是低像素的global信息,而HR提取的是高像素的细节信息,但是由于内存等限制,HR被设计为轻量的网络,需要把LR最深层的特征通过SA输入到HR深层特征,然后在HR内进行上采样。 - SA-Attention Module:为了解决non-texture问题,需要把LR的深层信息经过refine后再输入到HR,“two pixels with similar features, appearance or close spatial distance are more likely to have similar depth.”,因此SA模块需要计算不同位置的相似度,首先把输入特征、输入图片的像素值、像素的位置concat在一起,然后编码为低维向量f',然后j位置的特征fj''可以被重新定位为$f_{j}^{''}$ = $sum_{i} w_{ij}f_{i}^{'}$, $w_{ij} = f_{i}^{'}f_{j}^{'}$.
聚类算法是一种非常典型的无监督学习方法,从最初的K-means算法到后来基于深度网络的cluster算法,思想都是根据提取的特征相似度,将具有类似的特征或者语义信息的数据归到一类里,所以聚类算法的核心是两个组件:特征提取算法和相似度比较函数。特征提取算法往往就是卷积网络,而常见的相似比较函数或者距离函数有L1、L2、cosine等。
这个模型的结构,可以分成两个层,中间通过Connection Matrix相连接,每个层的结构与CNN基本结构相同,都是经过卷积(Convolution)、池化(max-pooling)、激励函数(Activation Function)三部分,不同的地方在于第二层时候对Feature Maps进行了分组。结构如下图:
首先,文中提出的模型基于K-means算法,找到使欧几里德空间中的点之间的距离最小化的聚类质心。在这种情况下,点是随机提取的图像斑块,质心是将用于编码图像的filter:
k-means算法从数据向量wi,i=1,2...m 中学习到一个字典D $in$ Rn*k,但是从可视化的结果来看,传统的k-means算法学习到的聚类中心只是彼此的shift,因此含有较多的冗余信息,为此文中提出了一种完善的方法:
新提出的算法中利用更大的窗口作为输入,也就是不单是用filter-size的patch作为输入,而是两倍甚至以上,k-means算法的聚类质心卷积整个窗口来计算提取区域的每个位置的相似性矩阵。该patch对应的最大激活窗口意味着是最相似的特征质心。最后,从窗口中提取特定位置(最大激活度)的patch,并将其分配到相应的质心。修改后的字典学习可以写成上式。
该文章研究了从一个网络层到另一个网络层连接的方式,也就是一个在所有的feature map进行池化的全连接权重矩阵。这种方式对于feature map的分组尤其重要,可以从下层学会新的特征从而创建新的特征图。
另外可以看到在最后一层的filter那里多了一个预先定义的非完整的连接层,这种结构最先由LeCun提出,原文的解释是“首先,不完全连接能够保证连接的数量在一个合理的范围内,也就是说保证连接的数量不会太多。更重要的是,这样安排打破了对称,不同的特征图可以提取不同的特征,因为它们被分配的输入集不同。”
首先对于数据X = {x1, x2, x3 ... xN}, 希望找到合适的参数$theta$使得f$theta$可以有效地提取数据的特征。对于文中提出的非监督学习的任务而言,对于用convnet提取的特征f$theta$(xn), 需要将其分类到k个不同组别里,更具体地说就是学习一个d*k大小的聚类中心的矩阵C、以及聚类分配yn,来解决如下的问题:
对于问题的解决可以提供分类yn和矩阵C,然后分类就可以被用作伪监督的信息。
具体来说,Deepcluster是在k-means聚类和用聚类的结果伪监督学习的过程中进行交替,结构如下图:
另外文章提出了两种聚类的问题以及解决方法: - empty clusters: 如果某一聚类是空集,就随机挑选一个不是空集的聚类,在其聚类中心上加一个小的扰动作为空聚类的新的中心。 - trivial parametrization: 如果大多数数据都被分类到少量的聚类里,可能导致网络学到的是trivial的参数,需要均衡各个聚类的簇大小。
合成图片xs $in$ Xs 对应的深度图ys $in$ Ys从分布ps(x,y)中取样,真实图片xt $in$ Xt 对应的深度图yt $in$ Ys从分布pt(x,y)中取样,两个分布不同,而且不能获得yt数据。
对于一个深度预测网络而言,其构成应当包括两部分:M即表征提取网络和T即深度回归网络,并且应该首先在合成数据集上进行监督训练:ys'=Ts(Ms(xs)),如果直接把这个网络的参数 迁移到真实图片的数据集上效果并不好。考虑到Xs和Xt只表现出图形渲染过程引起的感知差异,两个领域在对象信息和相对对象放置方面有很多相似之处,仅适应Mt到目标分布pt(x)。为了泛化新领域的学习特征,通过匹配Ms (Xs)和Mt (Xt)的表征分布,使得Ts = Tt =T可以直接使用。
首先通过分别使用Ms和Ts中经过监督训练的权重初始化Mt和Tt来开始适应过程。为了适应提取样本xt的Mt参数,引入了两种不同的鉴别器discrimitor:DF和DY。DF的目标是区分源和目标的潜在表示Ms (xs)和Mt (xt), DY的目标是区分Ys和T (Mt (xt))。假设合成场景和真实场景的深度图分布相似(p(Ys)≈p(Yt)),通过对应的变换函数T (Ms (xs))和T (Mt (xt))推导出相同的输出密度函数。同时,由,于浅层网络提取的是更representative的特征,而高层网络提取的是task-specified的特征,文中进行了实验测试迁移M中不同层的参数。
该网络的结构如下图所示:
分别在prediction level和latent feature level为DY和DF定义了损失函数:
另外值得一提的是,CNN提取的特征往往是非常复杂的,即使discriminator取得了较好的结果也可能预测与输入不一致,这时候需要引入content congruent内容一致正则化: - DCR: Ldomain = ||Ms(xt) - Mt(xt)|| 保证Ms和Mt学习到的特征表示只有细微差别。 - RTF: ||detaM||是从Ms迁移到Mt的时候额外的几层卷积层用来刻画adapt中的差别量 - FCF: 保证输入和提取特征之间的一致性
方法的核心是提出适应和改造了CNN结构的三个变化以提供了GAN网络的范式(DCGAN): - 用步长更大的卷积层(鉴别器)和反卷积层(生成器)替换池化层。 - 在生成器和鉴别器中都使用batchnorm。 - 为更深层次的架构移除完全连接的隐藏层。 - 在生成器中使用ReLU激活,除了输出使用Tanh。 - 在鉴别器中对所有层使用LeakyReLU激活。
详见我的另一篇文章:
Daniel:PredNet文章理解zhuanlan.zhihu.com同样详见我的另一篇:
Daniel:自监督学习综述zhuanlan.zhihu.com关于这一部分,详见:
Daniel:图像的稀疏表示BoW、SPM、ScSPM和LLC介绍zhuanlan.zhihu.com光流(optical flow)是空间运动物体在观察成像平面上的像素运动的瞬时速度,是利用图像序列中像素在时间域上的变化以及相邻帧之间的相关性来找到上一帧跟当前帧之间存在的对应关系,从而计算出相邻帧之间物体的运动信息的一种方法。一般而言,光流是由于场景中前景目标本身的移动、相机的运动,或者两者的共同运动所产生的。
当人的眼睛观察运动物体时,物体的景象在人眼的视网膜上形成一系列连续变化的图像,这一系列连续变化的信息不断“流过”视网膜(即图像平面),好像一种光的“流”,故称之为光流(optical flow)。光流表达了图像的变化,由于它包含了目标运动的信息,因此可被观察者用来确定目标的运动情况。
鉴于光流在视频分类、动作识别等领域的应用,简要介绍一篇文章。
optical flow guided feature(OFF)从光流的定义中得到,光流的基本假设有三个: - 相邻帧之间的亮度恒定 - 相邻视频帧的取帧时间连续,即,相邻帧之间物体的运动比较“微小” - 保持空间一致性,即,同一子图像的像素点具有相同的运动
如果I(x,y,t)表示的是t时刻的一帧图像I上位置(x,y)的像素值,可以有I(x,y,z) = I(x+detax, y+detay, t+detat), 推广到feature map上,有f(I;w)(x,y,t) = f(I;w)(x+detax, y+detay, t+detat), f是特征提取函数,令p = (x,y,t),有:
同时处以detat,有:
上式中的(vx, vy, 1)被称为特征光流,与之正交的
被称为光流引导特征。 下面介绍如何在CNN中利用OFF,下图展示了网络结构:
可以看出,该网络包括三个子网络:
1. feature generation sub-network: 使用BN-Inception提取frame-level的特征。
2. off sub-network:用f(I,c)表示f的第c个channel,Fx和Fy分别代表OFF在x和y方向上的梯度分量,文中定义sobel运算如下:
其中 * 表示的是卷积操作,然后
如果用Ft表示时序梯度分量,则Ft的值就是ft(I,c) - ft-detat(I,c)。得到了Fx、Fy和Ft之后,将其将其和low level的特征concat在一起就是OFF层的输出。
3. classification sub-network: 分类子网络利用不同来源的特征,采用多层内积分类器来获得多个分类分数。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。