本文主要是介绍Semantic Video CNNs through Representation Warping中文翻译,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
基于表示扭曲的语义视频中枢神经系统
摘要
在这项工作中,我们提出了一种将静态图像语义分割的神经网络模型转换为视频数据的神经网络的技术。我们描述了一种扭曲方法,它可以用很少的额外计算成本来扩充现有的体系结构。这个模块被称为NetWarp,我们演示了它在一系列网络架构中的使用。主要设计原则是使用相邻帧的光流来扭曲跨时间的内部网络表示。这项工作的一个关键见解是,快速光流方法可以与许多不同的CNN架构相结合,以提高性能和端到端训练。实验证明,当视频流可用时,这种基于视频的方法只会带来很少的额外计算成本,同时会提高性能。我们在CamVid和Cityscapes基准数据集上实现了新的最先进的结果,并在不同的基线网络上显示出一致的改进。我们的代码和模型可以在 http://segmentation.is.tue.mpg.de上找到
1.引言
可以说,近年来,随着卷积神经网络方法的出现,语义图像分割技术的经验性能有了显著的提高。这一发展的驱动力一直是大型图像分割数据集,下一个自然的挑战是开发快速和准确的视频分割方法。
提出的用于语义图像分割的CNN模型的数量远远超过用于视频数据的模型。将单个CNN图像用于视频的一种天真方法是逐帧应用它,实际上完全忽略了时间信息。然而,逐帧应用通常会产生帧间抖动,尤其是在对象边界。替代方法包括在视频数据上使用条件随机场模型来融合跨帧的预测标签信息,或者为视频开发定制的CNN架构。适用于美国有线电视新闻网预测的一个单独的通用报告格式有其局限性,即它无法访问美国有线电视新闻网的内部表示。因此,通用报告格式对已经压缩的表示(标签)进行操作。此外,现有的视频数据通用报告格式在实际应用中往往太慢。
我们旨在开发一种视频分割技术,该技术利用视频帧中的时间相关性,并重用强单图像分割神经元网络。为此,我们提出了一种概念简单的方法来将现有的图像中枢神经系统转换成视频中枢神经系统,这种方法只使用非常少的额外计算资源。我们通过“网络扭曲”来实现这一点,网络扭曲是一种神经网络模块,它将前一帧的中间CNN表示扭曲到当前帧的相应表示。具体来说,NetWarp模块使用两个相邻帧之间的光流,然后通过一组额外的操作来学习转换中间的CNN表示。如图1所示,可以在CNN层次结构的不同层使用多个NetWarp模块来跨时间扭曲深层中间表示。
我们的NetWarp实现只需要大约2.5毫秒来处理128 × 128的CNN中间表示和1024个特征通道。它是完全可微的,可以在整个CNN网络的训练过程中使用标准反向传播技术来学习。此外,所得到的具有NetWarp模块的CNN视频模型以在线方式处理帧,即当预测当前帧的分割时,系统只能访问当前和先前的帧。
我们使用NetWarp增强了几个现有的最先进的图像分割CNNs。在CamVid [2]和Cityscapes [7]的当前标准视频分割基准上,我们始终观察到与逐帧模式下应用的基础网络相比,性能有所提高。我们的视频CNNs也优于其他最近提出的(CRF)架构和视频传播技术,在CamVid和Cityscapes数据集上建立了一个新的艺术状态。
第二节讨论了视频分割的相关工作。在第3节中,我们描述了NetWarp模块,以及它如何用于将图像CNNs转换为视频CNNs。第四节介绍了在摄像机和城市风景上的实验。我们在第五节以讨论结束。
2.相关工作
我们对语义分割文献的讨论仅限于那些与视频数据有关的作品。大多数语义视频分割方法首先使用分类器(如随机森林或CNN)获得单帧预测,然后使用循环冗余校验或过滤技术传播该信息,以使结果在时间上更加一致。
解决语义视频分割的一种可能性是通过3D场景结构。一些作品[3,12,41]建立了使用3D点云的模型,这些点云是通过运动获得的结构。基于这些几何和/或运动特征,改进了语义分割。最近的工作[27,38]提出了联合估计2D语义和从视频数据中重建场景的3D。虽然3D信息信息量很大,但获取它的成本也很高,并且会带来难以恢复的预测误差。
更流行的方法[10,4,8,34,42,28,32]是构建连接不同视频像素的大型图形模型,以实现跨帧的时间一致性。[8]的工作在Potts模型的基础上提出了一个具有时空能量项的扰动映射随机场模型。[4]使用帧之间的动态时间链接,但优化了具有时间能量项的2D通用报告格式。在[42]中构建了一个跨视频帧的3D密集循环冗余校验,并使用平均场近似推理进行了优化。[32]的工作提出了一个联合模型,用于预测超体素的语义标签、对象跟踪和对象之间的几何关系。最近,[28]提出了一种跨视频像素优化3D密集CRF特征空间的技术。由此产生的通用报告格式模型应用于美国有线电视新闻网或其他技术获得的一元预测之上。在[16]中,设计了估计光流和语义分割的联合模型。[29]提出了一种通用报告格式模型和一种有效的推理技术,用于融合由递归时间约束玻尔兹曼机估计的具有长距离时空线索的CNN一元数据。我们避免了CRF构造,直接过滤中间的CNN表示。这导致快速的运行时间和通过梯度下降训练任何增强模型的自然方式。
与我们的技术更相关的是快速过滤技术。例如,[34]学习连续帧的像素之间的相似性函数,以跨时间传播预测。[18]的方法实现了一种神经网络,该神经网络使用可学习的双边滤波器[19],用于跨视频帧的信息的长距离传播。这些过滤技术在为每一帧计算语义标签后传播信息,相反,我们的方法在中间CNN表示上进行基于过滤的传播,使其更好地集成到CNN训练中。
中枢神经系统(如[33,5])的使用导致语义分割的性能激增。但是,CNN的大多数技术都是在单个图像上工作的。[39]的作者观察到语义随时间缓慢变化,并且在计算当前帧的分割时重复使用来自先前帧的一些中间表示。这导致更快的运行时间,但准确性损失。相比之下,我们的方法使用相邻帧深度表示进行跨帧的一致预测,从而提高预测精度。
虽然一些工作提出了神经网络方法来一起处理几个视频帧,但它们大多局限于视频级任务,如分类或者字幕。[20,22]的作品使用跨帧的3D卷积进行动作识别。在[9]中,LSTMs用于循环网络中的识别和字幕。双流光流和图像中枢神经系统[40,44,32]是最先进的视觉动作识别方法。与视频级任务不同,像素级语义视频分割需要像素级过滤。这项工作提出了一种跨视频帧进行本地信息传播的方法。与语义视频分割相关的任务是视频对象分割。像在语义视频分割文献中一样,一些作品[36,30,35,43,17]旨在降低具有时空超像素的图形模型结构的复杂性。其他一些工作使用最近邻场[11]或光流[6]来估计不同帧像素之间的对应关系。这些工作使用跨帧的像素对应来细化或传播标签,而所提出的方法通过一个易于集成到当前CNN框架中的模块来细化中间CNN表示。
3.将图像中枢神经系统扭曲为视频中枢神经系统
我们的目标是将一个给定的CNN网络架构(设计用于处理单个图像)转换成一个用于视频数据的分段CNN。形式上,给定n个视频帧的序列,表示为I1、I2、In,任务是预测每个视频帧的语义分割。我们的目标是在线处理视频帧,即,当预测当前帧的分割时,系统只能访问先前的帧。
主要构建模块将是NetWarp模块,该模块扭曲前一帧的中间(kthlayer) CNN表示zk t 1,然后与当前帧ZK t的表示相结合,其中z1 t、z2 t、zm t将给定图像CNN的中间表示与m层相结合。
动机
NetWarp模块的设计基于最近语义分割文献中的两个具体见解。[39]的作者表明,中间CNN表示在相邻帧上变化缓慢,尤其是对于更深的CNN层。这启发了发条convnet架构的设计[39]。在[13]中,构建了一个双边初始模块,以对图像中空间和光度接近的位置的中间CNN表示进行平均。在那里,作者基于运行时的考虑使用超像素,并展示了当应用于不同的CNN架构时改进的分割结果。鉴于这些发现,在这项工作中,我们提出了一个问题:时间上接近的表示的组合是否也会导致更稳定和一致的语义预测?
我们找到了这个问题的肯定答案。使用光流提供的像素对应来组合相邻帧的中间CNN表示一致地改善了许多CNN架构的语义预测。特别是在物体边界和薄物体结构上,我们观察到了坚实的改进。此外,这种扭曲可以在CNN架构中的不同层执行,如图1所示,并且只给整个流水线带来很小的额外计算成本。
3.1NetWarp
NetWarp模块由多个独立的步骤组成,流程图概述如图2所示。它将密集光流场的估计值作为输入,然后执行1。流动转化。表示扭曲,以及3。表示的组合。在下文中,我们将首先讨论光流计算然后讨论三个独立步骤的描述。
流量计算
我们使用现有的光流算法来获得跨帧的密集像素对应(表示为Ft)。我们选择了一种特殊的快速光流方法来保持运行时间小。我们发现,在一个中央处理器上计算每个图像对(大小为640 × 480)的流量只需要大约5毫秒,这对于我们的目的来说很好。此外,我们试验了更精确但更慢的流场[1]方法,每对图像需要几秒钟来计算流量。形式上,给定一个图像对Itand Itto),光流算法计算Itto中每个像素位置(x,y)到I(t1)中空间位置(x’,y’)的像素位移(u,v)。即,(x’,y’)=(x+u,y + v)。u和v是浮点数,分别表示水平和垂直方向的像素位移。注意,当我们想要扭曲先前的帧表示时,我们计算将当前帧位置映射到先前帧中的位置的反向流。
流动转化
用传统的光流方法获得的流变换对应关系对于在视频帧间传播表示可能不是最佳的。因此,我们使用一个小的CNN来转换预先计算的光流,我们将称之为FlowCNN,并将转换表示为λ(Ft)。我们连接原始的两个通道流、先前和当前的帧图像以及两个帧的差异。这导致11通道张量作为FlowCNN的输入。网络本身由4个卷积层组成,交织有ReLU非线性。所有卷积层由3 × 3滤波器组成,前3层的输出通道数分别为16、32和2。第三层的输出然后与原始的预先计算的流连接(跳过连接),然后传递到最后的3 × 3卷积层以获得最终的变换流。这种网络体系结构松散地受到ResNet [15]体系结构中剩余块的启发。其他网络架构也是可以想象的。FlowCNN的所有参数都是通过标准反向传播学习的。学习只在语义分割上进行,我们不包括任何有监督的流数据,因为我们主要对语义视频分割感兴趣。实验部分的图5显示了流量如何随流量变化。我们观察到原始流中的显著变化,在实验部分,我们将进一步讨论这些变化。
扭曲表示
FlowCNN将一个密集的对应场从帧Itt转换到前一帧Itto)。假设我们想在CNN图像的kthlayer上应用NetWarp模块,并且相邻帧的过滤器激活是zk和ZK(t1)(如图2所示)。为了便于标注,我们去掉k,分别称为z和z(t1)。前一帧z(t1)的表示被扭曲以与相应的当前帧表示对齐
(1)
其中z(t1)表示扭曲表示,Ftis表示密集对应字段,λ()表示上述的FlowCNN。假设我们想要计算当前帧的像素位置(x,y)处的扭曲表示z(t1),该像素位置通过变换的流被映射到前一帧中的位置(x’,y’)。我们将W arp实现为z(t1)在期望点(x′,y′)的双线性插值。设(x1,y1)、(x1,y2)、(x2,y1)和(x2,y2)为前一帧网格单元的角点(x’,y’)。然后z(t1)的翘曲以获得z(t1)(x,y)作为标准双线性插值给出:
(2)
其中η= 1/(x2 x1)(y2 y1)。如果(x’,y’)位于z(t1)的空间域之外,我们将(x’,y’)反向投影到z(t1)中最近的边界。除了当流量值是整数时,上述扭曲函数在所有点都是可微的。直观地说,这是因为当(x′,y′)从一个网格单元移动到另一个时,用于插值的角点突然改变。为了避免不可微的情况,我们将smallǫof 0.0001添加到转换后的流中。这使得扭曲模块相对于先前的帧表示和变换的流都是可微分的。我们使用标准矩阵演算实现梯度。由于交错汇集,与图像信号相比,更深的CNN表示通常具有更小的分辨率。相同的步距用于变换的光流,以获得所需分辨率的像素对应
表示的组合
一旦利用上述过程计算出前一帧ZK(t1)的扭曲激活,它们就与当前帧表示ZK(t1)线性组合
(3)
其中w1和w2是与zk中的信道数量具有相同长度的权重向量;⊙表示可能的标量乘法。换句话说,帧t的每个通道和前一帧t \u 1中扭曲表示的相应通道被线性组合。参数w1、w2通过标准反向传播来学习。然后,结果被传递到剩余的CNN图像层。网络扭曲模块中的不同计算如图2所示。
使用和培训
包含NetWarp模块仍然允许端到端培训。它可以很容易地集成到不同的深度学习架构中。请注意,从帧t反向传播损失将影响当前帧和之前帧的CNN图像层(NetWarp模块之前的层)。我们对跨帧的CNN图像使用共享的过滤器权重。当地面真值标签信息仅适用于部分帧而非全部帧时,训练也是可能的,这通常是这种情况。
由于GPU内存限制,我们做了一个近似,一次只使用两帧。当及时展开架构时,帧t1的滤波器激活将从T2接收更新,但由于硬件内存限制,我们忽略了这一影响。NetWarp模块可以包含在不同的深度,多个NetWarp模块可以用来形成一个视频CNN。在我们的实验中,当使用多个NetWarp模块时,我们使用了相同的流转换λ()。我们使用亚当[23]随机梯度下降法来优化网络参数。组合权重初始化为w1= 1,w2= 0,因此初始视频网络与单幅图像CNN相同。其他NetWarp参数是用高斯噪声随机初始化的。我们的所有实验和运行时分析都是使用Nvidia TitanX GPU和6核英特尔i75820K CPU在3.30GHz机器上进行的。我们的实现建立在Caffe [21]框架的基础上,可从以下网站获得: http://segmentation.is.tue.mpg.de.
4.实验
我们使用两个具有挑战性的语义视频分割基准来评估NetWarp模块,这两个基准有视频帧和/或注释:CamVid [2]和Cityscapes [7]。这两个数据集都包含真实世界的街道场景视频序列。我们选择了不同的受欢迎的CNN架构[47,37,48],并在网络的不同位置用NetWarp模块对它们进行了扩展。我们遵循标准协议,并报告标准的联合交集(IoU)分数,该分数根据真阳性(TP)、假阳性(FP)和假阴性(FP)进行定义:“TP / (TP + FP + FN)”以及城市景观的实例级iIoU。我们对边界周围的分割效果特别感兴趣。像有影响的DenseCRFs [25]这样的方法在对象边界的分割方面特别好。因此,我们采用[24,25]中的方法,仅在地面真实标签变化附近的窄带内测量IoU性能(见[24]中的图17)。我们改变了这个波段的宽度,并将这个度量称为trimap-IoU (tIoU)。在所有的实验中,除非特别说明,我们使用默认的2个像素的三分图带。
4.1CamVid Dataset
CamVid数据集包含4个视频,每30帧有一个真实标签。总的来说,数据集有701帧地面真实。为了与以前的工作进行直接比较,我们使用了与[47,28,37]中相同的训练、验证和测试分割。在我们所有的模型中,我们只使用训练分割进行训练,并报告测试分割的性能。我们在这个数据集的两个流行的分段CNN中引入了NetWarp模块:一个是PlayData-CNN,来自[37],另一个是Blization-CNN,来自[47]。除非另有说明,我们使用DIS-Flow [26]在该数据集上进行实验。
以PlayData-CNN [37]为基础网络,我们首先研究NetWarp模块在网络的不同阶段引入时的表现。PlayData-CNN的网络架构由5个卷积块组成,每个卷积块有2或3个卷积层,后面是3个1×1卷积层(FC层)。我们将NetWarp模块添加到网络不同深度的以下层:Conv1 2、Conv2 2、Conv3 3、Conv4 3、Conv5 3、FC6、FC7和FC8layers。相应的IoU分数在表1中报告。1.我们发现,无论NetWarp在网络中的位置如何,PlayData-CNN的性能都有68.9%的持续提高。由于FC6和FC7的NetWarp模块性能稍好,我们选择在最终模型的这两个位置插入NetWarp,并使用这个基本网络。我们还观察到,随着跨不同NetWarp位置的流转换的使用,IoU持续增加。我们带有两个NetWarp模块的最佳模型产生了70.2%的IoU分数,这是该数据集的最新水平。
向CNN添加NetWarp模块引入了非常少的附加参数。例如,PlayData-CNN中FC6和FC7的两个NetWarp模块约有16K参数,仅占所有134.3M参数的0.012%。选项卡中的实验。1表示改进可以有助于多深度的时间信息传播。作为基准,将相应的FC6和FC7功能连接起来,与使用NetWarp模块的1.3%相比,IoU仅提高了0.1%。
在选项卡中。2、我们展示了使用流场的更精确但更慢的光流方法的效果[1]。结果表明,与流场相比,IoU仅提高了0.1%,但这导致了更高的流量计算运行时间。结果还表明,我们的方法比[18]中当前最先进的虚拟专用网方法高出0.8% IoU的显著幅度,同时更快。
作为第二个网络,我们从[47]中选择扩张CNN。这个网络由一个标准的CNN和一个带有8个扩展卷积层的上下文模块组成。对于这个网络,我们将NetWarp模块应用于这8个扩展卷积的输出。表3显示了与扩张CNN和其他相关技术的性能和运行时比较。在运行时间增加15毫秒的情况下,我们观察到了约1.8% IoU的显著改善。运行时间的增加假设previousframe的结果是可计算的,这就是视频分割的情况。
4.2Cityscapes Dataset
Cityscapes数据集[7]共有5000个高质量图像视频序列(2048×1024分辨率),分为2975个训练序列、500个验证序列和1525个测试序列。这些视频是在德国和瑞士50个不同城市的不同天气条件下拍摄的。除了IoU和tIoU性能指标,我们还报告实例级IoU得分。由于IoU评分主要由场景中的大对象/区域(如道路)决定,因此该数据集的制作者提出了考虑不同对象/区域相对大小的iIoU评分。iIoU分数以iTP/(iTP + FP + iFN)给出,其中iTP和iFN是修改后的真阳性和假阴性分数,其计算方法是通过平均类实例大小与相应基础真实实例大小的比率对每个像素的贡献进行加权。这衡量了语义标签在场景中代表单个实例的程度。有关该指标的更多详细信息,请参考原始数据集论文[7]。对于这个数据集,我们使用DIS-Flow [26]对所有网络进行扩展,增加了NetWarp模块。
我们从[48]中选择了最近提出的金字塔场景解析网络。由于城市风景中的高分辨率图像和GPU内存限制,PSPNet以滑动窗口的方式应用,窗口大小为713×713。为了获得更高的分割性能,作者[48]还评估了多尺度版本。在输入图像的6个不同比例上应用相同的PSPNet,导致IoU比单比例变量提高1.4%。这种性能的提高是以运行时间的增加为代价的。在单尺度设置中,网络在8个不同的窗口上被评估以获得完整的图像结果,而在多尺度设置中,网络被评估81次,导致运行时间增加10倍。我们将单尺度和多尺度评估分别称为PSPNet-SSc和PSPNet-MSc。
PSPNet的架构是一个ResNet101 [15]网络变体,具有金字塔式的池层。我们在金字塔池层之前和之后插入NetWarp模块。更准确地说,在Conv 4 23和Conv 5 4代表上都添加了NetWarp模块。然后网络被微调到2975个连续的视频序列,而没有任何数据增加。我们评估单尺度和多尺度变量。表4总结了在城市景观的验证数据场景中,使用和不使用NetWarp模块的定量结果。我们发现IoU(提高了1.2)、tIoU(提高了2.4)和iIoU(提高了1.4)分别优于单图像PSPNet-SSc变体。这些改进带来了24毫秒的低运行时开销。此外,增强的多尺度网络提高了所有指标:IoU提高了0.7%,tIoU提高了1.8%,iIoU提高了1.4%。
我们选择将验证集中性能最佳的方法的结果提交给Cityscapes测试服务器。结果显示在选项卡中。5.我们发现,净翘曲增强的PSP多尺度变量与当前表现最好的方法[46]相当(80.5对80.6),并且在iIoU方面比当前表现最好的模型高出1.4%的显著幅度。总之,在提交时,我们的结果是iIoU中性能最好的方法,其次是IoU1。令人惊讶的是,这是唯一使用视频数据的方法。在Tab中仔细查看IoU类分数。图5显示了我们的方法对于解析像柱子、交通灯、交通标志等这样的薄结构特别有效。极点类的改善约为4% IoU。另一个观察结果是,添加NetWarp模块导致几个广泛的对象类(如汽车、卡车等)的IoU性能略有下降。然而,我们发现在其他性能度量中,大多数类都有一致的改进。在汽车、公共汽车等广泛的对象类上计算的类间接口得分显示,NetWarp的8个类中有7个具有更好的性能。此外,分析验证集的分类tIoU分数,我们发现NetWarpperforms在19个类中的17个上表现更好。图6中的可视化结果还表明,随着NetWarp模块的引入,精简结构得到了更好的解析。定性地说,我们发现与基线CNN相比,边界附近的性能有所提高(见补充视频)。图6中的视觉结果还表明,网络扭曲也有助于纠正大区域的分割。
在图4中,我们显示了三重图中不同宽度的NetWarp增强PSPNet的相对改进。从这个分析中,我们可以得出结论,IoU的提高尤其是由于对象边界附近的更好的性能。对于网络的单一和多尺度版本都是如此。图像神经网络,一般来说,非常擅长分割大的区域或对象,如道路或汽车。然而,细而精细的结构很难解析,因为信息会因CNN内部的交叉操作而丢失。在某种程度上,这是由NetWarp CNNs恢复的,它使用时间上下文来恢复精简结构。在图6中,显示了静态图像CNN和我们的视频CNN的一些定性结果。我们观察到,NetWarp模块不仅可以纠正薄结构,还可以经常纠正较大的错误分割区域。这是可能的,因为相同区域的表示在不同的帧上被组合,导致更鲁棒的分类。
接下来,我们分析数据流是如何被数据流网络转换的。图5显示了转换流的一些可视化以及原始的分流场。我们可以清楚地看到,在全景图像中,场景的结构在转换后的流中更加明显,这表明传统计算的流对于找到语义分割的像素对应可能不是最佳的。
5.结论和展望
我们介绍了NetWarp,这是一种将图像CNNs转换为视频CNNs的有效且概念上简单的方法。主要概念是基于变换的光流估计来传递相邻帧的中间CNN滤波器活性。最终的CNN视频是端到端可训练的,以在线方式运行,与逐帧应用程序相比,计算开销很小。在当前标准基准数据集CityScapes和CamVid上的实验表明,几种强基线方法的性能有所提高。最终的模型在城市景观和CamVid上建立了一个新的最先进的性能。
广泛的实验分析为NetWarp模块的工作提供了深刻的见解。首先,我们展示了CNN不同图像层次的一致性能改进。第二,我们发现时间上更一致的语义预测和更好的薄结构覆盖,如电线杆和交通标志。第三,我们观察到,在用分割损失训练变换(FlowCNN)后,流发生了根本变化。从定性结果来看,物体边界处的光流似乎对语义分割很重要。一个有趣的未来工作是系统地研究光流估计的哪些特性对于语义分割是必要的,以及在NetWarp模块中不同类型的插值的影响。
未来的另一个方向是将视频CNNs缩放到使用多帧。由于GPU内存的限制,为了让训练更容易,在这里,我们一次只训练两个相邻的帧。这在一定程度上是由于像ResNet101这样的内存要求高的基本模型。记忆优化CNN训练将缓解一些问题,并使许多帧一起训练成为可能。我们还设想,本文的研究结果对于除语义分割之外的不同任务的视频中枢神经系统的设计是有意义的。
这篇关于Semantic Video CNNs through Representation Warping中文翻译的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!