End-to-end 视频编码框架: DVC 与 M-LVC

DVC: An End-to-end Deep Video Compression Framework
M-LVC: Multiple Frames Prediction for Learned VideoCompression

DVC

  • 单参考帧

运动估计

  • 使用CNN模型估计光流(运动信息)

spynet

  • 运动编码网络,auto-encoder结构,压缩光流,量化

End-to-end Optimized Image Compression (google iclr_17)


使用了GDN(generalized divisive normalization)进行归一化处理。类似一般CNN网络中的Batch Normalization作用,可以捕捉图像的统计特性,并将其转换为高斯分布。

量化:假设量化区间为1,即为将y量化为它最近的整数

$\hat y$ 的边缘密度(离散概率分布)可以表示为

即 $p_{y_i}(t)$ 是 $y$ 的概率密度函数,由于四舍五入,在某一整数的(-0.5,0.5)区间内都会量化为该整数,则通过积分的形式计算这一区间内的数值的出现概率,得到量化后的整数的出现概率。

优化目标是网络的率失真性能 $R+\lambda D$,损失函数设计为

R, is lower-bounded by the entropy of the discrete probability distribution of the quantized vector, $H [P_q]$

涉及到量化问题,但是量化会导致不可微分,阻断反向传播优化。在训练过程中添加(-0.5,0.5)范围的均匀噪声$\tilde{\boldsymbol{y} }=\boldsymbol{y}+\Delta \boldsymbol{y}$
即采用这种形式近似可微以用于反向传播的优化。在推理过程中,则依旧使用round 函数进行四舍五入(因为不用进行优化了)。

运动补偿

给定前一重建帧 $\hat x_{t-1}$ 和解码的运动矢量 $\hat v_t$,运动补偿网络将获得预测帧 $\bar x_t$。

首先基于运动信息 $\hat v_t$ 将 $\hat x_{t-1}$ warp到当前帧,warp的帧有伪影,所以将warped frame 和 $\hat v_t$,$\hat x_{t-1}$共同作为运动补偿网络输入。

该方法是像素级的运动补偿方法,避免了传统的基于块的运动补偿方法中的块效应,不需要环路滤波模块。

变换、量化

  • 残差编码网络

原始帧 $x_t$ 和预测帧 $\bar x_t$ 之间的残差信息 $r_t$ 由残差网络编码

Variational image compression with a scale hyperprior (google iclr_18)

  • 量化

End-to-end Optimized Image Compression (google iclr_17)

训练阶段通过加入均匀噪声来代替量化运算,推理阶段运动信息和残差直接四舍五入取整量化

熵编码

  • 量化运动信息和量化残差编码为比特
  • 使用比特率估算网络获得中每个符号的概率分布,估算比特数成本

Variational image compression with a scale hyperprior (google iclr_18)

M-LVC

  • 多参考帧

运动估计与预测

  • 运动估计网络(ME-Net)使用 FlowNet2.0 生成光流MV ($v_t$)

  • 采用MV预测网络(MAMVP-Net)来预测当前的MV($\bar v_t$)

采用先前多个重构的MV对当前MV进行预测,上面网络图中采用先前三个重构MV进行预测。首先,对先前每个MV进行金字塔特征提取,见(a)

其次,考虑到先前重构MV有错误,对抽取的金字塔特征进行warp

再次,利用金字塔网络从粗到细预测当前MV,见(b)。

  • 使用MVD编码器/解码器网络(google iclr_17)对$v_t$和$\bar v_t$之差$d_t$进行编码

    • $d_t$ -> $m_t$ -> $\hat m_t$
    • 使用google iclr_17中的CNN估计$\hat m_t$的分布,熵编码为比特流
  • 由于解码后的$\hat{d}_t$包含量化误差,使用MV优化网络(MV Refine-Net)来减少量化误差并提高质量。将优化后的MV存在解码的MV缓冲器中,用于下一帧编码。

运动补偿

  • 重构MV后,使用运动补偿网络(MMC-Net)获得预测帧$\bar x_t$,MMC-Net可以通过使用多个参考帧来生成更准确的预测帧

残差

  • 运动补偿后,残差编码网络(google 18_iclr,同DVC)对原始帧$x_t$和预测帧$\bar{x}_t$之间的残差$r_t$进行编码。

    • $r_t$ -> $y_t$ -> $\hat y_t$
    • 使用google 18_iclr中的CNN估计$\hat y_t$的分布,熵编码为比特流
  • 解码的$\hat{r}’_t$包含量化误差,因此使用残差优化网络(Residual Refine-Net)来减少量化误差并提高质量。

重建帧

  • 在优化残差后,将加到预测帧上来获得重构帧。然后将重构帧缓存在解码的帧缓冲器中以用于下一帧编码。

Training Strategy

Loss Function.

  • $d(x_{t}, \hat{x}_{t})$ 使用 MSE
  • $R_{m v d}, R_{r e s}$ 别表示用于编码MVD和残差的比特率。在训练过程中,不进行实际编码,而是根据相应的$\hat{m}_t$和$\hat{y}_t$的熵来估计比特率。分别使用google 17_iclr和google 18_iclr中的CNNs来估计$\hat{m}_t$和$\hat{y}_t$的概率分布,然后得到相应的熵。
  • 训练过程中通过添加均匀噪声来代替量化运算(google 17_iclr)。