人类视觉系统能够从一瞥中提取大量的语义信息。人类不仅可以立即解析其中包含的对象,还可以识别对象的细粒度属性,例如它们的部件、纹理和材料。例如,在下图中,我们可以看出这是一个客厅,里面有各种各样的物品,如茶几、油画和墙壁。同时,还发现咖啡桌有桌腿、围裙和桌面,咖啡桌是木制的,沙发表面是针织的。
本文对视觉场景的理解有多个层次,从对材料和纹理的视觉感知到对物体和部件的语义感知。
由于深度神经网络和大规模图像数据集的发展,计算机视觉已经朝着人类水平的视觉识别取得了巨大进展。然而,目前各种视觉识别任务大多是独立研究的。比如物体分类和场景识别都达到了人的级别识别;对象和东西在像素级被精确地解析和分割;在[Describing textures in the wild]和[Exploring features in a bayesian framework for material recognition.]中已经研究了纹理和材料的感知和识别。
由于场景识别、物体检测、纹理和材料识别在人类视觉感知中相互交织,这给计算机视觉系统提出了一个重要的问题:神经网络有可能同时解决几个视觉识别任务吗?这促使本文的工作引入一个新的任务,称为统一感知分析(UPP)以及一种新的学习方法来解决它。
在UPP有几个挑战。首先,没有一个单一的图像数据集标注了所有级别的视觉信息。各种图像数据集仅为特定任务而构建,例如用于场景解析的ADE20k,用于纹理识别的描述纹理数据集(DTD),以及用于材料和表面识别的OpenSurfaces。接下来,来自不同感知层面的标注是异构的。例如,ADE20K具有像素级注释,而DTD中的纹理注释是图像级的。
为了应对上述挑战,本文提出了一个框架,该框架克服了不同数据集的异构性,并学习联合检测各种视觉概念。一方面,在每次迭代中,通过随机采样一个数据源,并且只更新路径上的相关层,以从所选的源中推断概念。
这种设计避免了不稳定的行为,即相对于特定概念的注释的梯度可能是有噪声的。另一方面,本文的框架利用了来自单个网络的特征的分级性质,即,对于具有更高级语义的概念,例如场景分类,分类器仅建立在具有更高级语义的特征图上;对于诸如对象和材料分割之类的低级语义,分类器建立在跨所有阶段融合的特征图或仅具有低级语义的特征图上。
本文进一步提出了一种训练方法,使网络能够仅使用图像级注释来预测像素级纹理标签。
本文的贡献总结如下:
- 提出了一个新的解析任务统一感知解析,它要求系统同时解析多个视觉概念。
- 提出了一种新的具有层次结构的网络,称为UPerNet,用于从多个图像数据集中学习异构数据。
- 该模型能够联合推断和发现图像下丰富的视觉知识。
本文的工作建立在语义分割和多任务学习的基础上。
Semantic segmentation.
- 为了生成给定图像的逐像素语义预测,图像分类网络[resnet,Alexnet…]被扩展以生成语义分割掩模。
- Chen等人的开创性工作[Semantic image segmentation with deep convolutional nets and fully connected crfs]基于结构预测,使用条件随机场(CRF)来细化CNN的最终特征图的激活。
- 为这种像素级分类任务设计的最流行的框架是全卷积网络(FCN) [Fully convolutional networks for semantic segmentation],它用卷积层代替分类网络中的全连接层。Noh等人[Learning deconvolution network for semantic segmentation]提出了一个将去卷积[Adaptive deconvolutional networks for mid and high level feature learning]应用于上采样低分辨率特征图的框架。
- Yu和Vladlen[Multi-scale context aggregation by dilated convolutions]提出了一种基于扩展卷积的架构,该架构能够在不损失分辨率或覆盖范围的情况下指数扩展感受野。
- RefineNet 采用一种由粗到细的架构,利用下采样过程中的所有可用信息。金字塔场景解析网络(PSPNet) 在几个网格尺度上执行空间汇集,并在几个分割基准上实现了显著的性能。
Multi-task learning.
- 多任务学习旨在训练模型同时完成多项任务,早在深度学习时代之前就已经引起了人们的关注。例如,许多先前的研究工作集中在识别和分割的结合上[Integrated segmentation and recognition of hand-printed numerals,Object detection and segmentation from joint embedding of parts and pixels]。
- Elhoseiny等人[Convolutional models for joint object categorization and pose estimation.]提出了一种同时执行姿态估计和对象分类的模型。
- Eigen和Fergus[Predicting depth, surface normals and semantic labels with a common multi-scale convolutional architecture.]提出了一种联合解决深度预测、表面法线估计和语义标记的架构。
- Teichmann等人[Multinet]提出了一种通过共享特征提取器来执行分类、检测和语义分割的方法,用于自动驾驶的实时联合语义推理。
- Kokkinos提出了UberNet ,这是一种深度架构,能够依靠不同的训练集完成七种不同的任务,使用不同的数据集和有限的内存,为低、中、高级视觉训练通用卷积神经网络。
- 另一项工作[Learning to segment every thing]提出了一种部分监督的训练范例,仅使用方框注释将对象分割扩大到3000个对象。
- 将本文的工作与以前关于多任务学习的工作进行比较,只有少数工作在异构数据集上执行多任务学习,即,数据集不一定具有所有任务的所有级别的注释。
- 虽然UberNet中的任务是由低级到高级形成的,如边界检测、语义分割、物体检测等,但这些任务并没有形成视觉概念的层次结构。在后文中,本文将进一步展示了提出的任务和框架在从图像中发现丰富的视觉知识方面的有效性。
本文将统一感知解析的任务定义为从给定图像中识别尽可能多的视觉概念。可能的视觉概念被组织成几个层次:从场景标签、对象和对象的部分,到对象的材料和纹理。这项任务取决于不同种类的训练数据的可用性。
由于没有单个图像数据集在多个层次上标注了所有视觉概念,首先通过组合几个图像标注源来构建图像数据集。
Datasets
为了从多个层次完成对大范围视觉概念的分割,本文利用了广泛且密集标记的数据集(Broden) ,这是一个包含各种视觉概念的异构数据集。Broden统一几个密集标记的图像数据集,即ADE20K,Pascal-Context ,Pascal-Part,OpenSurfaces ,以及可描述纹理数据集(DTD)。这些数据集包含各种场景、物体、物体部件、材料和纹理的样本。对象、对象部分和材料被分割到像素级,而纹理和场景在图像级被注释。
Broden数据集提供了广泛的视觉概念。然而,由于最初收集它是为了发现视觉概念和卷积神经网络(CNN)的隐藏单元之间的一致性以获得网络可解释性,本文发现来自不同类别的样本是不平衡的。因此,将Broden数据集标准化,使其更适合于训练分割网络。
- 首先,合并不同数据集中的相似概念。比如ADE20K、PascalContext、Pascal-Part中的对象和零件标注合并统一。
- 第二,仅包括出现在至少50幅图像中并且在整个数据集中包含至少50000个像素的对象类。此外,出现在至少20个图像中的对象部分可以被认为是有效部分。概念上不一致的对象和部件被手动移除。
- 第三,手动合并开放曲面中的欠采样标签。比如石头和混凝土合并成石头,透明塑料和不透明塑料合并成塑料。出现在少于50个图像中的标签也被过滤掉。
- 第四,将来自ADE20K数据集的400多个场景标签映射到来自Places数据集的365个标签。
下表显示了我们的标准化Broden的一些统计数据,称为Broden+。它总共包含57095张图片,包括来自ADE20K的22210张图片、来自Pascal-Context和Pascal-Part的10103张图片、来自OpenSurfaces的19142张图片和来自DTD的5640张图片。
下图显示了对象的分布,以及按它们所属的对象分组的部分。
在下图中,还提供了Broden+数据集的每个来源的示例。
Metrics
- 预测像素和ground-truth像素之间的联合(IoU),对所有对象类进行平均。请注意,由于图像中可能存在未标记的区域,mIoU度量不会对未标记区域的预测进行计数。这将有利于人们在训练期间排除背景标签。然而,它不适合于像部分分割这样的任务的评估,因为对于一些对象,具有部分注释的区域仅占少量像素。
- 因此,本文使用mean intersection-over-union (mIoU),但在某些任务中,对背景区域中的预测进行计数,表示为mIoU-bg。这样,在训练中排除背景标签将会小幅提高Pixel Accuracy (P.A.)。尽管如此,这将大大降低mIoU-bg的性能。
- 对于涉及ADE20K、Pascal-Context和OpenSurfaces的对象和材料解析,注释是像素级的。ADE20K和PascalContext中的图像被完全标注,不属于任何预定义类别的区域被归类到未标注的类别中。OpenSurfaces中的图像被部分注释,即,如果几个材料区域出现在单个图像中,则不止一个区域可能没有被注释。对于这两项任务,本文使用P.A .和mIoU指标。
- 出于上述原因,对于对象部分,本文使用P.A .和mIoU-bg度量。每个部分的IoU首先在一个对象类别中求平均值,然后在所有对象类别中求平均值。对于场景和纹理分类,本文报告最高的准确性。Broden+数据集分析表列出了评估指标。
- 为了平衡不同类别中不同标签的样本,首先随机抽取10%的原始图像作为验证集。然后,从训练集和验证集中随机选择一个图像,并检查在交换这两个图像后,像素级别的注释是否更加平衡到10%。该过程迭代执行。数据集被分成51617幅图像用于训练,5478幅图像用于验证。
在下图中展示了本文的网络设计,称为UPerNet(统一感知解析网络),基于特征金字塔网络(FPN) 。
FPN是一个通用的特征提取器,它在一个固有的金字塔层次结构中利用多级特征表示。它采用自顶向下的架构,横向连接,以边际额外成本将高层语义信息融合到中低层。
为了克服Zhou等人[Object detectors emerge in deep scene cnns]提出的问题,即尽管深度CNN的理论感受野足够大,但是深度CNN的经验感受野相对要小得多[Learning deep features for discriminative localization],本文在将它馈送到的自上而下的分支之前,在主干网络的最后一层上应用PSPNet 的金字塔池模块(PPM)。根据经验,发现PPM通过引入有效的全局先验表示与FPN架构高度兼容。关于FPN和PPM的更多细节,可参考[Feature pyramid networks for object detection]和[Pyramid scene parsing network]。
有了新的框架,本文能够训练一个单一的网络,它能够在多个层次上统一视觉属性的解析。本文的框架是基于resnet。将ResNet中每一阶段最后的特征图集合表示为{C2,C3,C4,C5},FPN推出的特征地图集合表示为{P2,P3,P4,P5},其中P5也是紧跟PPM的特征图。下采样率分别为{4,8,16,32}。场景标签是在图像级标注的最高级别属性,通过P5的全局平均池化以及随后的线性分类器来预测。
与基于扩张网络的框架不同,P5的下采样率相对较大,因此全局平均池化后的特性更加关注高级语义。对于目标标签,本文根据经验发现,融合FPN的所有特征地图优于仅使用最高分辨率的特征地图(P2)。
基于与对象相同的特征图来分割对象部分。对于材料,直观地说,如果事先知道这些区域属于物体“cup”,就能够合理地推测它可能是由纸或塑料制成的。这个上下文是有用的,但是仍然需要局部的表观特征来决定哪个是正确的。还应该注意的是,物体可以由各种材料制成。
基于上述观察,本文在P2的顶部而不是融合的特征上分割材料。在图像级给出的纹理标签基于非自然图像。直接将这些图像与其他自然图像融合对其他任务是有害的。本文也希望网络可以预测像素级的纹理标签。为了达到这样的目标,在C2上附加了几个卷积层,并强迫网络预测每个像素的纹理标签。
该分支的梯度被阻止反向传播到主干网络的层,并且纹理的训练图像被调整到更小的尺寸(∼ 64 × 64)。这些设计背后的原因是:
在整个网络完成其他任务的训练之后,仅对纹理分支进行几个epochs的微调。
当只对目标监督进行训练时,在没有进一步增强的情况下,本文的框架产生与最先进的PSPNet几乎相同的性能,而对于相同数量的时期,只需要63%的训练时间。值得注意的是,根据Pyramid scene parsing network论文中的实验,本文甚至不执行PSPNet中使用的深度监督或数据增强,除了scale jitter。消融实验见后文。
Implementation details
- 每个分类器之前都有一个单独的卷积头。为了融合不同比例的图层,如{P2,P3,P4,P5},通过双线性插值将它们调整到P2的大小,并将这些图层连接起来。然后应用卷积层来融合来自不同级别的特征以及减少信道维度。
- 所有额外的非分类器卷积层,包括FPN的卷积层,都具有512通道输出的批量归一化。ReLU在批处理规范化后应用。与整流线性单元改进了受限玻尔兹曼机[Rectified linear units improve restricted boltzmann machines.]相同,使用**“多”学习率策略**,其中当前迭代的学习率等于初始学习率乘以 ( 1 − i t e r m a x i t e r ) P o w e r (1-\frac{iter}{max_iter})^{Power} (1−maxiteriter)Power。
- 初始学习率和power分别设置为0.02和0.9。使用0.0001的权重衰减和0.9的动量。在训练期间,调整输入图像的大小,使得其短边的长度从集合{300,375,450,525,600}中随机选择。
- 为了进行推断公平比较,没有应用多尺度测试来进行,并且长度被设置为450。较长边的最大长度设置为1200,以避免GPU内存溢出。骨干网络中的层使用ImageNet上预先训练的权重进行初始化。
- 在每次迭代期间,如果小批量由来自各种任务的几个源的图像组成,则关于某个任务的梯度可能是有噪声的,因为每个任务的实际批量实际上是减少的。
- 因此,基于每个数据源的规模在每次迭代中随机地对数据源进行采样,并且只更新路径来推断与所选数据源相关的概念。对于物体和材料,不计算未标记区域的损失。本文添加背景作为有效标签。此外,部分的损失仅应用于其超级对象的区域内。
- 由于物理内存的限制,每个GPU上的小批量只涉及2个图像。本文采用跨8个GPU的同步SGD训练。值得注意的是,批量大小已被证明对生成分类、语义分割和对象检测等任务的准确统计非常重要。
- 本文实现了批处理规范化,这样它就能够跨多个GPU同步。在训练期间不固定任何批次标准层。仅ADE20k(具有20k图像)的训练迭代次数就是100k。如果在更大的数据集上训练,基于数据集中的图像数量线性增加训练迭代次数。
Design discussion
- 最先进的语义分割网络主要基于全卷积网络(fcn)。由于缺乏足够的训练样本,分割网络通常从为图像分类而预训练的网络中初始化。
- 为实现语义分割的高分辨率预测,已经提出扩展卷积[Multi-scale context aggregation by dilated convolutions],一种去除卷积层的步幅并在卷积滤波器的每个位置之间添加孔的技术,以减轻下采样的副作用,同时保持感受野的扩展速率。扩张的网络已经成为语义分割的事实范例。
- 本文认为这种框架对于所提出的统一感知解析任务有很大的缺陷。首先,最近提出的深度CNNs:如resnet,深度神经网络的聚合残差变换。它们在图像分类和语义分割等任务上取得了成功,通常有几十层或几百层。
- 为了更大的感受野和更轻的计算复杂度,这些深度CNN被复杂地设计成使得下采样率在网络的早期阶段快速增长。例如,在总共具有100个卷积层的ResNet中,Res-4和Res-5块中的卷积层合计有78个,下采样率分别为16和32。
- 实际上,在扩张分割框架中,扩张卷积需要应用于两个块,以确保所有特征图的最大下采样率不超过8。然而,由于两个块中的特征映射增加到其指定大小的4或16倍,计算复杂度和GPU内存占用都显著增加。第二个缺点是这种框架只利用网络中最深的特征图。
- 先前的工作[ZFnet]已经显示了网络中特征的分级性质,即较低层倾向于捕获局部特征,例如角或边缘/颜色结合,而较高层倾向于捕获更复杂的模式,例如一些对象的部分。使用具有最高级别语义的特征对于分割诸如对象的高级概念可能是合理的,但是它自然不适合在多个级别分割感知属性,尤其是诸如纹理和材料的低级属性。
受限玻尔兹曼机(RBM,Restricted Boltzmann machine)
由多伦多大学的 Geoff Hinton 等人提出,它是一种可以用于降维、分类、回归、协同过滤、特征学习以及主题建模的算法。受限玻尔兹曼机(Restricted Boltzmann Machine,RBM)是一种可用随机神经网络(stochastic neural network)来解释的概率图模型(probabilistic graphical model)。
RBM的本质是一种Unsumervised Machine Learning模型,用于对input数据进行重构,即有效地提取数据特征,构建新的数据结构进行预测分析,基本功能有点儿像AutoEncoder模型(自动编码器)。因此,RBM和AE一样,也可以不断地堆叠实现深层的神经网络挖掘数据的特征。
玻尔兹曼机是一大类的神经网络模型,但是在实际应用中使用最多的则是RBM。RBM本身模型很简单,只是一个两层的神经网络,因此严格意义上不能算深度学习的范畴。不过深度玻尔兹曼机(Deep Boltzmann Machine,以下简称DBM)可以看做是RBM的推广。
RBM 是两层神经网络,这些浅层神经网络是 DBN(深度信念网络)的构建块。RBM 的第一层被称为可见层或者输入层,它的第二层叫做隐藏层。隐藏层和可见层之间是全连接的,相邻层之间是相连的,但是同层之间的节点是不相连的。
RBM不区分前向和反向,可见层的状态可以作用于隐藏层,而隐藏层的状态也可以作用于可见层。
RBM是基于基于能量的概率分布模型。分两部分理解,第一部分是能量函数,第二部分是基于能量函数的概率分布函数。
RBM模型的结构:主要是权重矩阵W, 偏倚系数向量a和b,隐藏层神经元状态向量h和可见层神经元状态向量v。
对于给定的状态向量h和v,则RBM当前的能量函数可以表示为: E ( v , h ) = − a T v − b T h − h T W v E(v,h)=−a^Tv−b^Th−h^TWv E(v,h)=−aTv−bTh−hTWv;
有了能量函数,则可以定义RBM的状态为给定v,h的概率分布为: P ( v , h ) = 1 Z e − E ( v , h ) P(v,h)=\frac{1}{Z}e^{−E(v,h)} P(v,h)=Z1e−E(v,h);
由于配分函数Z的难以处理,所以必须使用最大似然梯度来近似。首先从联合分布中导出条件分布。有了概率分布,可以进一步来看条件分布
P ( h ∣ v ) = P ( h , v ) P ( v ) = 1 P ( v ) 1 Z e ( a T v + b T h + h T W v ) = 1 Z ‘ e b T h + h T W v = 1 Z ‘ e ∑ j = 1 n h ( b j T h j + h j T W : j v j ) = 1 Z ‘ ∏ j = 1 n h e b j T h j + h j T W : j v j P(h|v)=\frac{P(h,v)}{P(v)}=\frac{1}{P(v)}\frac{1}{Z}e^{(a^Tv+b^Th+h^TWv)}=\frac{1}{Z^`}e^{b^Th+h^TWv}\\=\frac{1}{Z^`}e^{∑_{j=1}^{n_h}(b_j^Th_j+h_j^TW:_jv_j)}=\frac{1}{Z^`}∏_{j=1}^{n_h}e^{b_j^Th_j+h^T_jW:_jv_j} P(h∣v)=P(v)P(h,v)=P(v)1Z1e(aTv+bTh+hTWv)=Z‘1ebTh+hTWv=Z‘1e∑j=1nh(bjThj+hjTW:jvj)=Z‘1j=1∏nhebjThj+hjTW:jvj
其中Z’为新的归一化系数,表达式为: Z ‘ = 1 P ( v ) 1 Z e a T v Z^`=\frac1{P(v)}\frac1Ze^{a^Tv} Z‘=P(v)1Z1eaTv。
可以容易的得到在给定可视层v的基础上,隐层第j个节点为1或者为0的概率为:
P ( h j = 1 ∣ v ) = P ( h j = 1 ∣ v ) P ( h j = 1 ∣ v ) + P ( h j = 0 ∣ v ) = e b j + W : j v j e 0 + e b j + W : j v j = 1 1 + e − ( b j + W : j v j ) = s i g m o i d ( b j + W : j v j ) P(h_j=1|v)=\frac{P(h_j=1|v)}{P(h_j=1|v)+P(h_j=0|v)}=\frac{e^{bj+W:_jv_j}}{e^0+e^{b_j+W:_jv_j}}\\=\frac{1}{1+e^{−(b_j+W:_jv_j)}}=sigmoid(b_j+W:_jv_j) P(hj=1∣v)=P(hj=1∣v)+P(hj=0∣v)P(hj=1∣v)=e0+ebj+W:jvjebj+W:jvj=1+e−(bj+W:jvj)1=sigmoid(bj+W:jvj)
可以看到就是相当于使用了sigmoid激活函数,现在可以写出关于隐藏层的完全条件分布
RBM损失函数
RBM模型的关键就是求出模型中的参数W,a,b。首先得写出损失函数,RBM一般采用对数损失函数,即期望最小化下式: L ( W , a , b ) = − ∑ i = 1 m l n ( P ( v ( i ) ) ) L(W,a,b)=−∑_{i=1}^mln(P(v^{(i)})) L(W,a,b)=−∑i=1mln(P(v(i)))。
对于优化过程,首先想到的当然是梯度下降法来迭代求出W,a,b。首先来看单个样本的梯度计算, 单个样本的损失函数为,求偏导可得:
∂ ( − l n ( P ( v t ) ) ) ∂ a i = v i t − ∑ v P ( v ) v i ∂ ( − l n ( P ( v t ) ) ) ∂ b j = P ( h j = 1 ∣ v t ) − ∑ v P ( v ) P ( h j = 1 ∣ v ) ∂ ( − l n ( P ( v t ) ) ) ∂ w i j = P ( h j = 1 ∣ v t ) v i t − ∑ v P ( v ) P ( h j = 1 ∣ v ) v i \frac{∂(−ln(P(v^t)))}{∂a_i}=v_i^t-\sum_vP(v)v_i\\ \frac{∂(−ln(P(v^t)))}{∂b_j}=P(h_j=1|v_t)-\sum_vP(v)P(h_j=1|v)\\ \frac{∂(−ln(P(v^t)))}{∂w_{ij}}=P(h_j=1|v_t)v_i^t-\sum_vP(v)P(h_j=1|v)v_i ∂ai∂(−ln(P(vt)))=vit−v∑P(v)vi∂bj∂(−ln(P(vt)))=P(hj=1∣vt)−v∑P(v)P(hj=1∣v)∂wij∂(−ln(P(vt)))=P(hj=1∣vt)vit−v∑P(v)P(hj=1∣v)vi
虽然说梯度下降从理论上可以用来优化RBM模型,但实际中是很难求得P(v)的概率分布的(P(v)表示可见层节点的联合概率)。计算复杂度非常大,因此采用一些随机采样的方法来得到近似的解。看这三个梯度的第二项实际上都是求期望,样本的均值是随机变量期望的无偏估计。因此一般都是基于对比散度方法来求解。
对比散度算法(CD)
CD算法大概思路是这样的,从样本集任意一个样本v0开始,经过k次Gibbs采样(实际中k=1往往就足够了),即每一步是: h t − 1 ~ P ( h ∣ v t − 1 ) , v t ~ P ( v ∣ h t − 1 h^{t-1}~P(h|v^{t-1}),v^t~P(v|h^{t-1} ht−1~P(h∣vt−1),vt~P(v∣ht−1。用一个采样出来的样本来近似期望的计算。
得到样本vk,然后对应于上一篇三个单样本的梯度,用vk去近似:
- ∂ ( − l n ( P ( v t ) ) ) ∂ a i ≈ v i 0 − v i k ∂ ( − l n ( P ( v t ) ) ) ∂ b j ≈ P ( h j = 1 ∣ v 0 ) − P ( h j = 1 ∣ v k ) ∂ ( − l n ( P ( v t ) ) ) ∂ w i j ≈ P ( h i = 1 ∣ v 0 ) v j 0 − P ( h j = 1 ∣ v k ) v j k \frac{∂(−ln(P(v^t)))}{∂a_i}≈v_i^0-v_i^k\\ \frac{∂(−ln(P(v^t)))}{∂b_j}≈P(h_j=1|v^0)-P(h_j=1|v^k)\\ \frac{∂(−ln(P(v^t)))}{∂w_{ij}}≈P(h_i=1|v^0)v_j^0-P(h_j=1|v^k)v_j^k ∂ai∂(−ln(P(vt)))≈vi0−vik∂bj∂(−ln(P(vt)))≈P(hj=1∣v0)−P(hj=1∣vk)∂wij∂(−ln(P(vt)))≈P(hi=1∣v0)vj0−P(hj=1∣vk)vjk
Gibbs Sampling
吉布斯采样(Gibbs sampling),是MCMC方法的一种。可以从一个复杂概率分布P(X)下生成数据,只要知道它每一个分量的相对于其他分量的条件概率 P ( X k ∣ X ) P(X_k|X) P(Xk∣X),就可以对其进行采样。而RBM模型的特殊性,隐藏层神经元的状态只受可见层影响(反之亦然),而且同一层神经元之间是相互独立的,那么就可以根据如下方法依次采样:
h 0 ~ P ( h ∣ v 0 ) , v 1 ~ P ( v ∣ h 0 ) , h 1 ~ P ( h ∣ v 1 ) , v 2 ~ P ( v ∣ h 1 ) , . . . , v k + 1 ~ P ( v ∣ h k ) , h_0~P(h|v_0),v_1~P(v|h_0),\\ h_1~P(h|v_1),v_2~P(v|h_1),\\ ...,v_{k+1}~P(v|h_k), h0~P(h∣v0),v1~P(v∣h0),h1~P(h∣v1),v2~P(v∣h1),...,vk+1~P(v∣hk),
hi是以概率 P ( h i ∣ v 0 ) P(h_i|v_0) P(hi∣v0)为1,其他的都类似。这样当我们迭代足够次以后,就可以得到满足联合概率分布P(v,h)下的样本(v,h),其中样本(v)可以近似认为是P(v)下的样本,下图也说明了这个迭代采样的过程:
双线性插值
插值指利用已知的点来“猜”未知的点,图像领域插值常用在修改图像尺寸的过程,由旧的图像矩阵中的点计算新图像矩阵中的点并插入,不同的计算过程就是不同的插值算法。
- 最近邻法(Nearest Interpolation):计算速度最快,但是效果最差。
- 双线性插值(Bilinear Interpolation):双线性插值是用原图像中4个点计算新图像中1个点,效果略逊于双三次插值,速度比双三次插值快,在很多框架中属于默认算法。
- 双三次插值(Bicubic interpolation):双三次插值是用原图像中16个点计算新图像中1个点,效果比较好,但是计算代价过大。
双线性插值是有两个变量的插值函数的线性插值扩展,其核心思想是在两个方向分别进行一次线性插值。其原理是待插点像素值取原图像中与其相邻的4个点像素值的水平、垂直两个方向上的线性内插,即根据待采样点与周围4个邻点的距离确定相应的权重,从而计算出待采样点的像素值。
在两个方向分别进行一次线性插值(首先在一个方向上使用线性插值,然后再在另一个方向上使用线性插值执行双线性插值。尽管每个步骤在采样值和位置上都是线性的,但是插值总体上不是线性的,而是在采样位置上是二次的。)
y − y 0 x − x 0 = y 1 − y 0 x 1 − x 0 : = = > y = x 1 − x x 1 − x 0 y 0 + x − x 0 x 1 − x 0 y 1 ; 单 线 性 插 值 ( 一 个 方 向 ) 推 导 到 二 维 : f ( d x , 0 ) = 1 − d x 1 − 0 ∗ f ( 0 , 0 ) + d x − 0 1 − 0 ∗ f ( 0 , 1 ) f ( d x , 1 ) = 1 − d x 1 − 0 ∗ f ( 1 , 0 ) + d x − 0 1 − 0 ∗ f ( 1 , 1 ) f ( d x , d y ) = 1 − d y 1 − 0 ∗ f ( d x , 0 ) + d y − 0 1 − 0 ∗ f ( d x , 1 ) \frac{y-y_0}{x-x_0}=\frac{y_1-y_0}{x_1-x_0}:==>y=\frac{x_1-x}{x_1-x_0}y_0+\frac{x-x_0}{x_1-x_0}y_1;单线性插值(一个方向)\\推导到二维: f(dx,0)=\frac{1-dx}{1-0}*f(0,0)+\frac{dx-0}{1-0}*f(0,1)\\ f(dx,1)=\frac{1-dx}{1-0}*f(1,0)+\frac{dx-0}{1-0}*f(1,1)\\ f(dx,dy)=\frac{1-dy}{1-0}*f(dx,0)+\frac{dy-0}{1-0}*f(dx,1) x−x0y−y0=x1−x0y1−y0:==>y=x1−x0x1−xy0+x1−x0x−x0y1;单线性插值(一个方向)推导到二维:f(dx,0)=1−01−dx∗f(0,0)+1−0dx−0∗f(0,1)f(dx,1)=1−01−dx∗f(1,0)+1−0dx−0∗f(1,1)f(dx,dy)=1−01−dy∗f(dx,0)+1−0dy−0∗f(dx,1)
可使用一些预训练模型,为UperNet-50和UperNet-101提供的预训练模型Index of /model (mit.edu)
实验部分组织如下:首先介绍了本文提出的框架在原始语义分割任务和UPP任务上的定量研究。然后,应用该框架来发现场景理解背后的视觉常识知识。
Main results
- Overall architecture.
- 为了证明本文提出的架构在语义分割上的有效性,在下表中报告了在ADE20K上使用对象注释在各种设置下训练的结果。
- 总的来说,FPN展示了有竞争力的性能,同时语义分割需要少得多的计算资源。使用以16 (P4)的下采样率仅上采样一次的特征图,它达到34.46/76.04的mIoU和P.A .,几乎与[Pyramid scene parsing network]中报告的强基线参考相同,而对于相同次数的迭代仅花费大约1/3的训练时间。分辨率越高,性能越好。
- 添加金字塔池模块(PPM)将性能提高了4.87/3.09个百分点,这表明FPN也存在感受野不足的问题。根据经验,本文发现融合FPN所有级别的特征产生最佳性能,在[Mscoco challenge 2017: stuff segmentation]中也观察到一致的结论
- 考虑到其简单性,FPN的性能是令人惊讶的,通过双线性插值而不是耗时的反卷积对特征地图进行简单的上采样,并且通过1×1卷积层将自上而下的路径与自下而上的路径融合,随后是逐元素求和,而没有任何复杂的细化模块。正是简单成就了它的高效。因此,本文采用这种设计来进行统一的感知解析。
- Multi-task learning with heterogeneous annotations.
- UPP 任务是指从一张给定图像中识别出尽可能多的视觉概念,从场景标签,物体,部件、纹理和材质,视觉概念是多层次的。该任务依赖于不同训练数据的可用性。由于没有一个现有数据集可满足条件,本文通过整合若干个图像标注源而成一个新数据集——Broden+。
- 本文展现了在单独或融合的不同注释集上训练的结果。对象解析的基线是在ADE20K和Pascal-Context上训练的模型。它产生24.72/78.03的mIoU和P.A。与ADE20K的结果相比,这个结果相对较低,因为Broden+有更多的对象类。
- 材料的基线是在OpenSurfaces.上训练的模型。它产生的mIoU和P.A为52.78/84.32。
- 对象和部分分析的联合训练在对象上产生23.92/77.48,在part上产生30.21/48.30。在经过训练的对象解析加上部分注释上的性能与仅在对象注释上训练的性能几乎相同。
- 在添加场景预测分支后,它在场景分类上产生了71.35%的最高精度,对象和部分性能的降级可以忽略不计。当用对象、部分和场景分类联合训练素材时,在素材解析上产生54.19/84.45的性能,在对象解析上产生23.36/77.09的性能,在part解析上产生28.75/46.92的性能。
- 值得注意的是,由于异质性,对象和零件的性能都略有下降,而与仅在OpenSurfaces上训练的材料相比,材料的性能有所提高。本文推测这是由于物体中的信息作为材料分析的先验信息的有用性。
- 如上所述,发现直接将纹理图像与其他自然图像融合对其他任务是有害的,因为DTD中的图像与自然图像之间存在不小的差异。
- 在使用与所有其他任务一起训练的模型对纹理图像进行微调之后,可以通过挑选最频繁的像素级预测作为图像级预测来获得定量的纹理分类结果。它产生35.10的分类准确度。纹理上的性能表明,仅微调纹理标签上的网络不是最佳的。然而,这是克服自然和合成数据源融合的必要步骤。
- 希望未来的研究能够发现更好地利用这种图像级注释进行像素级预测的方法。
- Qualitative results.
Discovering visual knowledge in natural scenes
统一感知解析需要一个能够从给定图像中识别尽可能多的视觉概念的模型。如果一个模型成功地实现了这个目标,它就可以发现隐藏在真实世界中的丰富的视觉知识,比如回答诸如“起居室和卧室之间有什么共同点?”或者“做杯子的材料是什么?”自然场景中视觉知识的发现甚至推理将使未来的视觉系统能够更好地理解其周围环境。
本文证明了在Broden+上训练的框架能够在多个层次上发现组合视觉知识。这也是在异构数据注释上训练的网络的特殊应用。本文使用包含来自365个场景的36500幅图像的Places-365验证集作为本文的测试平台,因为Places数据集包含来自各种场景的图像,并且更接近真实世界。
本文以分层的方式定义了几种关系,即场景-对象关系、对象-part关系、对象-材料关系、part-材料关系和材料-纹理关系。注意,只有对象-part关系可以从基本事实注释中直接读出,其他类型的关系只能从网络预测中提取。
Scene-object relations.
- 对于每一个场景,本文根据场景出现的频率来计算有多少物体出现。将该关系公式化为二分图G = (V,E ),其包括场景节点和对象节点的集合 V = V s ∪ V o V=V_s∪V_o V=Vs∪Vo以及边的集合E。权重从Vs到Vo的边表示对象vo出现在场景Vs中的可能性百分比。没有边连接两个都来自Vs或都来自Vo的节点。
- 本文过滤权重低于阈值的边,并运行聚类算法以形成更好的布局。由于篇幅限制,本文只对几十个节点进行了采样,并在下图(a)中显示了图形的可视化。
- 可以清楚地看到,室内场景主要共享对象,如天花板、地板、椅子或窗玻璃,而室外场景主要共享对象,如天空、树、建筑物或山。更有意思的是,即使在场景集合中,人造场景和自然场景也被聚类成不同的组。
- 在布局中,本文还能够定位出现在各种场景中的常见对象,或者找到某个场景中的对象。上图(a)中左下和右下的图片说明了一个例子,在这个例子中,可以合理地得出结论,货架经常出现在商店、店铺和杂物间;直升机场通常有树、栅栏、跑道、人,当然还有飞机。
Object(part)-material relations.
- 除了场景与物体的关系,本文也能够发现物体与物质的关系。由于本文的模型能够在每个像素预测对象和材料的标签,因此通过在每个像素计算每个对象中每种材料的百分比,可以直接将对象与其相关材料对齐。
- 类似于场景-对象关系,本文构建了一个二分图,并在下图(b)的左侧显示了它的可视化。
- 使用这个图表,可以推断一些水槽是陶瓷的,而其他的是金属的;不同的地板有不同的材料,如木材、瓷砖或地毯。天花板和墙壁粉刷;天空也是“画”出来的,更像是一种比喻。然而,也可以看到,床的大部分是织物而不是木材,这是由于床上的实际物体造成的错位。直观来看,一个物体中某一部分的材质会比较单调。在上图(b)的中间显示了零件材料的可视化。
Material-texture relations.
- 一种材质可能有多种纹理。但是一个材料的视觉描述是什么呢?我们在上图(b)的右侧展示了材料-纹理关系的可视化。值得注意的是,虽然缺乏纹理标签的像素级标注,但仍然可以生成合理的关系图。例如,地毯可以被描述为无光泽的、有污点的、有污点的、有交叉线的和有凹槽的。
- 在下表中,本文进一步展示了一些由UPerNet发现的视觉知识。
- 对于场景-物体关系,选择出现在至少30%场景中的物体。对于物体-材料、零件-材料和材料-纹理关系,最多选择前3个候选,用阈值过滤它们,并归一化它们的频率。研究者能够发现构成每个场景的常见物体,以及每个物体或部分在多大程度上由某种材料构成。UPerNet提取和总结的视觉知识与人类知识是一致的。这个知识库提供了各种类型概念的丰富信息。希望这样的知识库可以帮助未来的智能主体理解不同的场景,并最终理解真实世界。