Visual to Sound: Generating Natural Sound for Videos in theWild论文介绍

Visual to Sound: Generating Natural Sound for Videos in theWild

1. 介绍

该论文将 AudioSet 数据集进行精简提取,将声音在画面外的,画面主体声音不明显的等等噪声比较大的数据进行剪切和全部丢弃。最后留下了132209个片段,最后将相邻的短视频合并后剩下28109个片段,这些视频平均时长7s,共55小时。这些数据包括了狗叫声、水流声等等10个类别

![批注 2019-04-04 101547](C:\Users\PC\Desktop\批注 2019-04-04 101547.png)

论文采用条件生成模型从输入的视频来模拟合成原始波形:
p ( y 1 , y 2 , … , y n ∣ x 1 , x 2 , … , x m ) p(y_1,y_2,\dots,y_n|x_1,x_2,\dots,x_m) p(y1,y2,,ynx1,x2,,xm)
x 1 , x 2 , … , x m x_1,x_2,\dots,x_m x1,x2,,xm表示输入视频, y 1 , y 2 , … , y n y_1,y_2,\dots,y_n y1,y2,,yn为输出波形植,离散为 0 - 255 的整数,在这里因为论文的声音波形采样率达到了 16 KHz, 因此 m &lt; &lt; n m&lt;&lt;n m<<n

模型分为两个部分:Sound generator 和 Video encoder 。

Sound generator 采用了SampleRNN为生成网络。

而video encoder 采用了三种不同的编码方法:1. 帧到帧,2. 序列到序列,3. 基于流。

2. Sound generator

由于采样率太高,达到了 16 KHz, 需要生成的波形序列将会很长,为了更好的处理好序列中远距离的依赖问题,论文采用了有着多层次循环神经网络的SampleRNN作为生成网络。![批注 2019-04-04 103524](C:\Users\PC\Desktop\批注 2019-04-04 103524.png)

如上面的简化图所示,SampleRNN可以分为两层(实际上论文用了三层),上面一层的粗略层是一层循环神经网络,可以由 LSTM, GRU 等其他 RNN 类型网络构成,节点包含了多个波形样本,这些波形样本可以是更高一层的粗略层的预测结果也可以是前面若干次预测的波形,而 h h h表示的是输入的隐式特征。而下面一层最精细的一层实际上是一个多层感知器,MLP,由于我们要将波形离散到0-255的整数,我们可以将这些MLP看作是一个256路的分类器,他从上一层的粗略层接收输出,同时结合前面k次的预测结果生成新的波形。

3. Video encoder

论文采用了三种方式对输入视频进行了编码,最后在各种测试和验证条件下,队列到队列和基于流模型的编码方式更加逼真,差异更小,而基于流的编码方式更是能够保持良好的同步性。

  1. 帧到帧方法

    论文将视频帧表示为:
    x i = V ( f i ) x_i=V(f_i) xi=V(fi)
    其中 f i f_i fi代表第 i 帧,而 x i x_i xi 是其对应的表示,是一个4096维的向量, V V V是从 V G G 19 VGG19 VGG19 网络提取 f c 6 f c6 fc6 特征。

    论文直接将编码的视频信息统一和SampleRNN的最粗略一层拼接起来,由于采样率的问题为了让波形和帧表示的维度对齐,对于每个 x i x_i xi:
    x i = x i × s , s = c e i l i n g ( s r a u d i o s r v i d e o ) x_i=x_i \times s, s=ceiling(\frac{sr_{audio}}{sr_{video}}) xi=xi×s,s=ceiling(srvideosraudio)
    其中 s r a u d i o sr_{audio} sraudio s r v i d e o sr_{video} srvideo分别表示原始音波和视频帧的采样率

    SampleRNN的详细情况会在另一篇笔记做介绍。

  2. 队列到队列方法

    在该方法中,像帧到帧方法一样使用了 V G G 19 VGG19 VGG19 网络的 f c 6 f c6 fc6 层的深度特征提取,但是论文还同时使用了一个 RNN 来预测编码视频特征,并且将编码器的最后一层隐式特征用来初始化 Sound generator的最粗略的那一层,在这个方法中,encoder 和 generator 不再是直接相连,而是通过一个将编码后的视频信息输入到 generator的 bottleneck结构连接。同时也没有将视频帧信息和声音原始波形的对齐进行显式的计算,而是希望在编码和解码的过程中让网络能够自己学习。而声音原始波形的生成公式也就变成了:
    P ( y 1 , y 2 , … , y n ∣ x 1 , x 2 , … , x m ) = ∏ i = 1 n p ( y i ∣ H , y 1 , y 2 , … , y n ) P(y_1,y_2,\dots,y_n|x_1,x_2,\dots,x_m)=\prod \limits_{i=1}^n p(y_i|H,y_1,y_2,\dots,y_n) P(y1,y2,,ynx1,x2,,xm)=i=1np(yiH,y1,y2,,yn)
    其中H为encoder 的最后一层隐式特征。

  3. 基于流的方法

    为了实现更好的同步效果,论文在使用了 V G G VGG VGG 特征的同时希望捕捉到更多的动作和交互信息, V G G VGG VGG 特征适用于分类任务的,对于旋转和平移具体良好的不变性,但是只是静态特征信息,对动作信息捕捉很少,即使是在连续的视频帧上做特征提取。

    因此论文在队列到队列模型的基础上增加了光流特征提取网络,视频帧信息变成了:
    x i = c a t [ V ( f i ) , F ( o i ) ] x_i=cat[V(f_i),F(o_i)] xi=cat[V(fi),F(oi)]
    其中 c a t cat cat表示拼接操作, o i o_i oi是第 i i i 帧的光流, F F F 是提取光流特征的操作,使用了《Secrets of optical flow
    estimation and their principles》 中的技术来预计算视频帧与帧之间的光流,然后将光流作为输入传给一个双流卷积网络。

4. 优缺点

与其他论文实现的相比同步性更好,声音更逼真,且是针对平时场景的声音模拟而不是在实验条件下的声音模拟,但是在同步性要求很高的视频,例如狗叫,鼓点等,还是存在不足。而在与动作和周围环境声音噪声较小的情况如水流声等表现得能够以假乱真。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值