Interpolating Frames for Super-Resolution Smoke Simulation with GANs 文献阅读
作者:互联网
使用GAN的超高分辨路烟雾方针插帧框架
摘要
深度神经网络实现了流体数据的超分辨率,可以成功地将数据从2D扩展到3D。但是,解决超分辨率帧之间的不连贯性并非易事。在本文中,我们介绍了一种基于条件生成对抗网络的新帧插值方法,用于烟雾模拟。我们的模型在原始的两个连续帧之间生成几个中间帧,以消除不连贯性。具体来说,我们设计了一种新的生成器,该生成器由残差块和U-Net架构组成。具有残差块的生成器能够从下采样的采样中准确地恢复高分辨率的体数据。然后,我们将两个恢复的帧及其对应的速度场输入到U-Net,进行扭曲和线性融合以生成几个中间帧。此外,我们提出了一种慢融合( slow-fusion)模型来设计我们的时间鉴别器(temporal discriminator)。这种模型使我们的对抗网络可以逐步地逐步合并一系列连续的帧。实验表明,我们的模型可以为烟雾模拟生成高质量的中间帧,从而有效地消除了原始流体数据中的不连贯性。
1 介绍
超分辨率是一种增强输入数据分辨率的技术。近年来,GAN已很好地解决了该技术。受此启发,提出了TempoGAN[16]在流体模拟中应用超分辨率。为了增加时间一致性,TempoGAN合并了一个额外的时间鉴别器来训练网络。但是,这种方法不能消除时间不连贯问题的根源,尤其是在分辨率非常大的情况下。
在本文中,我们扩展了GAN的生成能力,以实现帧插值功能,这可以提高帧之间的平滑度,并缓解由不连贯引起的闪烁现象。我们的生成器将两个连续的帧作为输入,包括密度场和速度场。我们使用四个残差块来实现超分辨率和经典的U-Net体系结构,并使用跳过连接(skip connections)来生成中间帧。
由于训练数据是连续的帧,因此除了空间鉴别器外,我们还使用时间鉴别器。为了提高挖掘时间信息的能力,我们采用慢融合模型来构造鉴别器。卷积层的数量由输入帧确定。时间信息是从几个连续的帧中提取的,我们每次都合并其中的两个相邻帧。这样,将发现更深的时间信息,并有助于鉴别器更准确地判断输出的真实性。
总而言之,我们工作的主要贡献是:
- 一个新的生成对抗网络,旨在解决2D和3D烟雾模拟中的超分辨率和帧不连贯问题。
- 提出了一种用于合成多个中间帧的新型发生器,该发生器可以有效解决超分辨率帧之间的不连贯问题。
- 将慢融合模型作为时间判别器的结构。这可以从输入中提取更多的时间信息,这对训练生成器很有帮助。
2 相关工作
传统的超分辨率方法主要基于插值或稀疏表示[17]。近年来,借助更快,更深入的卷积神经网络,超分辨率技术取得了巨大突破。但是,这些方法主要关注自然图像或视频[4,6,7]。TempoGAN是解决多维体数据超分辨率的第一种方法。尽管TempoGAN使用神经网络成功地解决了物理领域,但它未能解决框架之间的不连贯性。基于以上观察,我们提出了一种具有中间帧插值功能的新型发生器。
内插已经在之前的几种传统流体模拟方法中得到了利用。Thuerey [14]使用了五维光学流解算器来预先计算体积变形。 Raveendran等[9]提出了一种半自动方法来匹配两个现有的液体动画作为用户指导。Sato等[11]应用插值来编辑或合并原始流体。上述插值算法是针对空间维度设计的,不适用于解决时间不连贯的问题。将深度学习与插值相结合的想法在图像处理领域更为普遍。 Super-SloMo算法训练一个端到端的卷积神经网络,以内插视频中任意数量的中间帧[3]。我们从本文中得到启发,并将二维图像数据插值扩展到三维流体数据插值。
最近,基于深度学习的方法已被引入到计算图形中。例如,使用卷积神经网络代替压力求解步骤[15],提出了基于CNN的特征描述符来合成新的烟流[1],使用回归森林来近似粒子的行为[5]。和Hu等[2]提出了一种交互式系统,可利用条件GAN从手绘草图生成2D流体动画。
3 提出的方法
3.1 插帧
对于生成器G,我们以两个连续的帧{X0,X1}作为输入,并生成高分辨率输出{G(X0),G(Xt1),G(Xt2),G(Xt3),G(X1)},其中三个中间结果是插值帧。我们采用两个上采样层和四个残差块来实现超分辨率。在前两层中,输入数据以4的系数上采样。然后,我们采用四个残差块来改善上采样的数据。每个残差块由具有ReLU激活的两个卷积层和一个快捷连接层(short cut connection)组成。在对中间帧进行插值方面,来自超分辨率模块的连续两个帧被输入到U-Net体系结构。我们将它们分别表示为F0和F1。然后,我们使用backward warping algorithm [8]计算F0和F1之间的中间帧,记为Ft,t∈(0,1)。然后,可以通过以下公式合成Ft:
Ft = (1−t)W(F0,V(t−0))+tW(F1,V(t−1)) (1)
其中W是backward warping function,可以使用双线性插值法实现[8]。 V (t − 0)是从Ft到F0的速度场,V (t − 1)是从Ft到F1的速度场。参数t用作控制因子:如果t接近0或1,则F0或F1对Ft的贡献更大。由于两个关键帧之间的时间步长非常小,因此我们可以借助速度场在t = 0和t = 1时近似V (t−0)和V (t−1),分别表示为V0和V1 。我们首先在时间t估算速度场Vt:
Vt = (1−t)V0 +tV1 (2)
那么,V (t − 0) 应等于Vt,但方向相反:V (t − 0) = −Vt. 。并且,可以将V(t−1)假定为Vt : V(t−1) = Vt.。在密度场F0,F1和速度场V (t − 0),V (t − 1)的情况下,中间帧Ft(t = 0.25,0.5,0.75)进行计算。然后,这些帧被馈送到U-Net [10]进行训练。
U-Net体系结构由两部分组成:编码器(左)和解码器(右),它们之间具有跳过连接(skip connections)。我们在编码器中采用6个卷积块,每个卷积块包括两个卷积层,一个Leaky ReLU层和一个平均池化层。在解码器中使用了五个卷积块。每个块包含一个上采样层,两个卷积层和一个Leaky ReLU层。
3.2 慢融合(Slow Fusion)
由于流体数据通常是四维的,包括空间(3D)和时间(1D),因此我们的网络使用两个鉴别器:空间鉴别器(Ds)和时间鉴别器(Dt)。空间鉴别器采用四个简单的卷积层。对于时间维度,输入数据是多个连续帧。本文采用慢融合模型提取时间信息。与四层直接卷积不同,我们的鉴别器以==分层结构处理输入数据==。当数据缓慢通过网络时,时间信息将成对融合,直到所有帧都合并为一个。详细的网络结构可以在图1(鉴别器(Dt))中找到。在我们的例子中,输入帧数为5。在接下来的步骤中,我们将两个连续的帧或要素贴图合并为一组,直到数量下降到1。在我们的例子中,每层的要素数是32、64 ,128,256。最后一层是进行判断的全连接的节点。
3.3 损失函数
为了表达对抗训练的总体思路,我们采用S型交叉熵(sigmoid cross entropy)来训练鉴别器Dt:
和鉴别器Ds:
为了训练生成器G,我们另外采用了构造损失( construction loss)Lr和感知损失( perceptual loss )Lp。完整的损失函数定义为:
其中Ft是生成的帧,而Yt是相应的ground-truth。 Φ表示ImageNet预训练的VGG16模型的conv4_3特征[12]。 α和β是加权因子。在我们的例子中,它们两个都设置为1。然后,发生器G的整个损失函数定义为:
4 数据生成及训练
为了训练我们的网络,我们使用了流行的流体求解器[13]来生成2D和3D训练数据。具体来说,我们通过不同的浮力和流入速度生成了15种不同的烟雾模拟,每个模拟包含200帧。每个帧包括密度场和速度场。为了方便起见,我们将高分辨率数据缩减为低分辨率版本。该系数设置为0.25。我们使用了两个Nvidia GeForce GTX 1080Ti GPU和Intel Core i9 CPU来训练我们的模型。对于2D模型,训练时间约为1天。 3D模型大约需要10天。
5 结果
图2显示了我们的模型生成的中间框架。这些结果表明,我们的模型不仅可以产生非常详细的超分辨率烟雾,而且还可以生成具有正确行为和相同分辨率的中间帧。图3显示了生成的中间帧和相应的基本情况之间的比较。从图中可以看出,我们的模型可以产生与ground-truth高度相似的结果。图4验证了我们的慢速融合模型的有效性。我们的结果在烟雾密度方面更加平滑,尤其是在上升的羽流区域。
图5展示了我们的模型生成的3D烟雾。图6显示了与障碍物相互作用的不同3D烟雾模拟。可以看出,烟雾在球体周围保持了正确的形状和行为。这证明了我们的模型在处理与障碍物相互作用的不同类型烟雾模拟中的兼容性。表1收集了与TempoGAN相比不同烟雾模拟的平均时间成本。我们的方法与TempoGAN的效率几乎相同,但是生成中间框架的时间成本远远低于传统的求解器。
6 结论及未来工作
我们已经实现了有条件的GAN( conditional GAN)来产生用于烟雾模拟的中间帧,这可以大大减轻超分辨率结果之间的时间不连贯性。我们使用四个残差网络来实现超分辨率。对于中间帧插值,我们采用了具有跳过连接(skip connections)的U-Net体系结构。为了增加时间相干性,我们设计了带有慢速融合模型的时间鉴别器。与原始模拟相比,我们的结果几乎没有闪烁现象,并且在视觉上更平滑。将来,我们的研究旨在增加中间帧的数量,以便我们可以使用更少的传统求解器生成的原始帧来实现更平滑的烟雾模拟。此外,正在考虑简化我们的网络结构以缩短培训时间。
读后感
这篇文章主要解决的是超分辨率上时间不连贯的问题。主要工作一个是插帧,一个就是超分。
提出了一个slow fusion概念,主要是加了一个时间鉴别器,感觉非常有意思。
另外还有一个生成器的损失函数,添加了额一个感知损失,也比较有意思。
比较没有理解的是对结果的分析,论文仅仅通过视觉角度观察最终生成的结果,而且插帧后的结果与原始并没有发生很大的形变。比如文中图四,通过结果表明了slow fusion的有效性,我好像并没有看出来有slow fusion和没有的差别,感觉从视觉层面差异性并不大。
标签:GANs,卷积,分辨率,鉴别器,Simulation,插值,生成,Super,我们 来源: https://blog.csdn.net/solidays_/article/details/114174473