論文閱讀 視訊生成(vid2vid) || Few-shot Video-to-Video Synthesis

R.X. NLOS發表於2020-12-20

論文原文:

Ting-Chun Wang, Ming-Yu Liu, Andrew Tao, Guilin Liu, Jan Kautz, and Bryan Catanzaro. "Few-shot Video-to-Video Synthesis", in NeurIPS, 2019.

https://nvlabs.github.io/few-shot-vid2vid/main.pdf

論文地址:

https://nvlabs.github.io/few-shot-vid2vid/
 

目錄

摘要

1. Introduction

2. Related Work

3. Few-shot Vid2vid Synthesis 少樣本視訊-視訊合成

3.1 傳統的video to video

3.2 few-shot video to video

3.2.1 整體網路結構

3.2.2 網路權重生成模組(E)

3.2.3 SPADE

3.2.4 訓練與測試

4. Experiments

實現細節:

資料集

Baselines

評估指標:

主要結果:

limitations

總結


摘要

當前vid2vid(輸入視訊,輸出另一個視訊,如輸入人體骨架的運動,輸出某個真實的人的運動)任務存在兩點不足:

  • 缺少訓練資料:需要大量的場景資料;
  • 泛化能力差:如pose-to-human任務只能完成對訓練資料集中的人的視訊生成,不能完成其他不在訓練集中的人的動作視訊;

本文完成了vid2vid任務的小樣本學習,即對於一個新的物體,只需要測試時利用該樣本的幾張圖片,就可以合成該樣本的video;

原理:基於注意力機制的網路權重生成模型;

在如下3個資料集上進行了驗證:

  • human-dancing videos;
  • talking-head videos;
  • street-scene videos.

 

1. Introduction

前兩段主要說要做的few-shot vid2vid是什麼:即在幾張相同屬性image的指導下,完成該屬性下視訊到視訊的轉換,如圖*所示:

圖1 few-shot vid2vid. 其中左邊是普通的vid2vid, 泛化能力差,只能對訓練集中出現的人生成視訊;右:只需要幾個新的人的image就能對新人生成視訊(few-shot vid2vid)。
  • 第一段: 什麼是vid2vid;
  • 第二段: 針對vid2vid泛化能力差的缺點提出了僅通過幾張未知樣本場景圖片即可重建未知場景下視訊的few-shot vid2vid任務;

後兩段講文章是怎麼做的:

  • 第三段:輸入為一個語義視訊+幾張target domain的images. 其中,image用於配置模型,生成符合target domain的權重;
  • 第四段:說明文章在三個不同的資料集上(跳舞視訊;talking head 和 street場景)進行了驗證;訓練集中的不同場景越多,測試時給出的example images越多,則最後的效果就越好。

2. Related Work

GANs:

  • 本文網路基於conditional GAN; 訓練時輸入為視訊(condition);
  • 測試時會額外輸入example images,動態改變生成模型的網路權重.

Image-to-image synthesis:

  • vid2vid的基礎就是img2img;
  • 相比於img2img, vid2vid的挑戰在於視訊幀與幀之間的聯絡(利用幀間冗餘);
  • 相比於其他工作,本文的特點是能夠通過幾張example images完成對沒見過的場景的生成。

Video generative models:

視訊生成模型分為三類:

  • 無條件視訊生成: 輸入噪聲,輸出視訊;
  • 未來幀預測:根據觀測到的幀預測未知的幀;
  • vid2vid: 輸入語義視訊(semantic input),輸出真實視訊(photorealistiv video).

本文是vid2vid,但是是能夠適用於沒見過的場景的few-shot的研究;

Adaptive networks:

指網路的部分權重會隨輸入資料的改變而改變;

Human pose transfer:

輸入:人的一個姿勢;輸出:同一個人的之前沒有出現過的姿勢。

現有方法基於人體先驗,如身體部分建模/人體表面座標對映。

本文的方法僅僅使用了輸入的語義資訊,不使用特定的人體先驗,因此泛化能力更強。同時,本文方法可以用於視訊。

3. Few-shot Vid2vid Synthesis 少樣本視訊-視訊合成

3.1 傳統的video to video

$s_1^T \equiv \{ s_{1},s_{2},...,s_{T}\}$ : 輸入視訊序列,比如是語義分割幀的序列或者邊緣圖序列;

$x_1^T \equiv \{x_{1},x_{2},...,x_{T}\}$:真實場景的(目標)視訊序列;

普通的vid2vid任務的目標:找到從$s_1^T \equiv \{ s_{1},s_{2},...,s_{T}\}$到重建視訊\hat{x}_1^T \equiv \{\hat{x}_{1},\hat{x}_{2},...,\hat{x}_{T}\}的對映。從而使二者的條件分佈相同:

p(\hat{x}_{1}^{T}|s_{1}^{T}) = p(x_{1}^{T}|s_{1}^{T})

為了對上述條件分佈進行建模,常常使用如下的基於Markov假設的序列生成模型:

通過假設馬爾可夫過程來簡化影像生成任務,即認為條件分佈p(\hat{x}_{1}^{T}|s_{1}^{T})可以分解為

p(\hat{x}_{1}^{T}|s_{1}^{T}) = \prod_{t=1}^T p(\hat{x}_{t}|\hat{x}_{t-\tau}^{t-1},s_{t-\tau}^{t}).

也就是說視訊僅僅通過部分的幀序列即可還原,並且第t幀\hat{x}_t只與下面3個有關:

(1) 當前輸入幀s_t

(2) 之前的L個輸入幀$s_{t-\tau}^{t-1}$;

(即共計L+1個輸入幀)

(3)之前的L個生成幀\hat{x}_{t-\tau}^{t-1}

通過訓練一個網路F,來使用第t幀\hat{x}_t=F(\hat{x}_{t-L}^{t-1},s_{t-L}^{t})建模條件分佈p(\hat{x}_{t}|\hat{x}_{t-L}^{t-1},s_{t-L}^{t}).

通過遞迴使用F來得到最終的輸出,即重建的視訊$x_1^T \equiv \{x_{1},x_{2},...,x_{T}\}$

不同的研究給出了序列生成器F的不同的構建方法,一種常見的構造方法(即vid2vid中的構造方法)如下:

F(\hat{x}_{t-\tau}^{t-1},s_{t-\tau}^{t})=(\mathbf{1}-\hat{m}_{t}) \odot \hat{w}_{t-1}(\hat{x}_{t-1})+ \hat{m}_{t} \odot \hat{h}_{t},

其中,\odot表示element-wise操作,1表示全1影像。這樣,第一部分就是考慮到光流估計的前一幀;第二部分即為合成的有新畫素的圖片。上式中各項的含義為

  • \tilde{\mathbf{w}}_{t-1}=W_{\boldsymbol{\theta}_{W}}\left(\tilde{\mathbf{x}}_{t-\tau}^{t-1}, \mathbf{s}_{t-\tau}^{t}\right): 估計的從\hat{x}_{t-1}\hat{x}_{t}的光流;W是光流預測網路。文章通過輸入的幀s_{t-\tau}^{t}和之前合成的幀\hat{x}_{t-\tau}^{t-1}來估計光流. \hat{w}_{t-1}(\hat{x}_{t-1})的意思是使用\hat{w}_{t-1}來wrap\hat{x}_{t-1}.
  • \tilde{\mathbf{h}}_{t}=H_{\boldsymbol{\theta}_{H}}\left(\tilde{\mathbf{x}}_{t-\tau}^{t-1}, \mathbf{s}_{t-\tau}^{t}\right)是由生成器H合成的圖片;
  • \tilde{\mathbf{m}}_{t}=M_{\boldsymbol{\theta}_{M}}\left(\tilde{\mathbf{x}}_{t-\tau}^{t-1}, \mathbf{s}_{t-\tau}^{t}\right)是遮擋mask,取值為[0,1]之間的連續值,M則是mask預測網路。通過使用連續取值而不是bool值來更好地處理放大區域(也就是圖片放大之後會變模糊,一些畫素看起來就好像既被遮擋了又沒被遮擋),從而更好地恢復細節。

圖2(a)給出了vid2vid的結構,相當於是對上式的圖示。

圖2 vid2vid, few-shot vid2vid以及E和H的網路結構

3.2 few-shot video to video

3.2.1 整體網路結構

為了使模型能夠根據unseen domain中的幾張example images就給出在unseen domain下的結果,few-shot vid2vid使用瞭如下方法:

第t幀\hat{x}_t不再只與之前的L+1個輸入幀$s_{t-\tau}^{t-1}$和L個生成幀\hat{x}_{t-\tau}^{t-1}有關,同時和目標domain的K個樣例圖片{\mathbf{e}_{1}, \mathbf{e}_{2}, \ldots, \mathbf{e}_{K}} 和這K張圖片對應的語義圖片\left\{\mathbf{s}_{\mathbf{e}_{1}}, \mathbf{s}_{\mathbf{e}_{2}}, \ldots, \mathbf{s}_{\mathbf{e}_{K}}\right\}.即:

\tilde{\mathbf{x}}_{t}=F\left(\tilde{\mathbf{x}}_{t-\tau}^{t-1}, \mathbf{s}_{t-\tau}^{t},\left\{\mathbf{e}_{1}, \mathbf{e}_{2}, \ldots, \mathbf{e}_{K}\right\},\left\{\mathbf{s}_{\mathbf{e}_{1}}, \mathbf{s}_{\mathbf{e}_{2}}, \ldots, \mathbf{s}_{\mathbf{e}_{K}}\right\}\right)

從而使序列模型F能夠利用測試時給出的樣例圖片去提取unseen domain合成的視訊中的有用特徵。

具體而言,設計網路E來提取給出的example images的特徵,並使用E計算影像合成網路H的權重\theta_H:

\boldsymbol{\theta}_{H}=E\left(\tilde{\mathbf{x}}_{t-\tau}^{t-1}, \mathbf{s}_{t-\tau}^{t},\left\{\mathbf{e}_{1}, \mathbf{e}_{2}, \ldots, \mathbf{e}_{K}\right\},\left\{\mathbf{s}_{\mathbf{e}_{1}}, \mathbf{s}_{\mathbf{e}_{2}}, \ldots, \mathbf{s}_{\mathbf{e}_{K}}\right\}\right)

網路E不會改變M和W的權重,因為W是光流估計網路,M是遮擋估計網路,在不同的domain中(例如,不同的人臉,不同的人),這兩個網路是相同的。

H的網路結構則是SPADE的網路結構。

SPADE生成器主要包括兩個部分:

  • 幾個空間調製分支;
  • 1個主要的影像合成分支。

在本文中,用於調整權重的網路E僅僅調整H中幾個空間調製分支的權重。(如圖2(c)所示)這樣做的原因是:

  • 大大降低了E需要生成的引數數量,防止過擬合;
  • 避免了example images直接對映為輸出圖片。

3.2.2 網路權重生成模組(E)

E的作用:學習並提取能夠通過控制權重而被用於視訊合成分支的模式;

首先考慮只有1個example image的情況(K=1):

將E分為兩個部分:

  • 一個樣本特徵提取器E_f;
  • 一個多層感知器E_p.

具體過程為:

  1. 樣本圖片e1輸入到樣本特徵提取器E_f中,
  2. 輸出為特徵表示q;
  3. 特徵表示q再輸入到多層感知器E_p中,
  4. 輸出為權重\theta_H,該權重被用在了圖片合成網路H中。

令網路H有L層,分別為

H^{l}, \text { where } l \in[1, L]

則設計E同樣有L層,每一層E^l生成用於對應的H^l的權重。具體而言,為了生成H^l的權重\theta_H^l,文章將:

  1. 首先得到E_f的第l層的輸出q^l;
  2. 之後,平均池化q^l(因為q^l可能仍是空間維度上的特徵圖);
  3. 再將其通過多層感知器的第l層E_p^l得到權重\theta_H^l

數學上的解釋為,若定義\mathbf{q}^{0} \equiv \mathbf{e}_{1},則:

\mathbf{q}^{l}=E_{F}^{l}\left(\mathbf{q}^{l-1}\right)\boldsymbol{\theta}_{H}^{l}=E_{P}^{l}\left(\mathbf{q}^{l}\right)

輸出的權重被用於卷積輸入的語義圖st,從而得到SPADE中的歸一化引數。(如圖2(c)所示)

對K>1的情況(即輸入多張Example images):

對k張example images,樣本特徵提取器E_f共計會得到k個特徵:\mathbf{q}_{1}, \ldots, \mathbf{q}_{K}. 文章使用了注意力機制來整合這些特徵。

具體而言,定義一個新的注意力網路E_A,得到權重\boldsymbol{a}_{k} \in \mathbb{R}^{C \times N}

再得到注意力權重:\boldsymbol{\alpha}_{k}=\left(\boldsymbol{a}_{k}\right)^{T} \otimes \boldsymbol{a}_{t}

並利用該權重整合特徵:\mathbf{q}=\sum_{k=1}^{K} \mathbf{q}_{k} \otimes \boldsymbol{\alpha}_{k}

 

3.2.3 SPADE

對SPADE中主要的generator的每一層,文章使用\theta_H^l來計算反歸一化係數\gamma^{l} \text { and } \beta^{l}

也就是說,在普通的SPADE中,\gamma^{l} \text { and } \beta^{l}是從輸入語義圖s_t中得到的固定係數;

而在這篇文章中,\gamma^{l} \text { and } \beta^{l}則通過\theta_H^l動態生成。

\theta_H^l共包括了三個部分的權重:\boldsymbol{\theta}_{S}^{l}, \boldsymbol{\theta}_{\gamma}^{l} \text { and } \boldsymbol{\theta}_{\boldsymbol{\beta}}^{l}

其中,\boldsymbol{\theta}_{S}^{l}是用於提取共同特徵的共享層;其輸出經\boldsymbol{\theta}_{\gamma}^{l} \text { and } \boldsymbol{\theta}_{\boldsymbol{\beta}}^{l}生成\gamma^{l} \text { and } \beta^{l}。計算方法為:

\begin{array}{c} \mathbf{p}_{S}^{l}=\left\{\begin{array}{ll} \mathbf{s}_{t}, & \text { if } l=0 \\ \sigma\left(\mathbf{p}_{S}^{l-1} \otimes \boldsymbol{\theta}_{S}^{l}\right), & \text { otherwise } \end{array}\right. \\ \qquad \begin{aligned} \gamma^{l}=\mathbf{p}_{S}^{l} \otimes \boldsymbol{\theta}_{\gamma}^{l}, \quad \boldsymbol{\beta}^{l}=\mathbf{p}_{S}^{l} \otimes \boldsymbol{\theta}_{\boldsymbol{\beta}}^{l} \\ \mathbf{p}_{H}^{l}=\boldsymbol{\gamma}^{l} \odot \hat{\mathbf{p}}_{H}^{l}+\boldsymbol{\beta}^{l} \end{aligned} \end{array}

3.2.4 訓練與測試

可選:warping example images:

為了減小負擔,可以選擇將example image和合成的幀\tilde{\mathbf{h}}_{t}相結合。方法如下:

\tilde{\mathbf{h}}_{t}^{\prime}=\left(\mathbf{1}-\tilde{\mathbf{m}}_{e_{t}}\right) \odot \tilde{\mathbf{w}}_{e_{t}}\left(\mathbf{e}_{1}\right)+\tilde{\mathbf{m}}_{e_{t}} \odot \tilde{\mathbf{h}}_{t}

該技巧對example images和target images非常相近的情況有效。(如姿態合成任務,背景一樣)

損失函式

與vid to vid相同;

訓練時:使用s_1^Tx_1^T監督訓練,example images則通過從x中隨機採K個樣本獲得。

T的選擇

剛開始T=1, 後來過幾個epoch增大一倍,從而變為視訊。

測試階段

能夠輸入任意多個example images.

 

4. Experiments

實現細節:

ADAM, lr=0.0004, ( β1;β2) = (0:5; 0:999), 8 * 32GB V100

資料集

  • YouTube dancing videos.
  • Street-scene videos.
  • Face videos.

Baselines

  • Encoder.
  • ConcatStyle.
  • AdaIN.

(尚無few-shot vid2vid的研究,故使用別的baseline提取特徵並生成類似的泛化結果)

評估指標:

  • FID
  • Pose error
  • 分割準確性
  • Human subjective score(使用亞馬遜AMT)

主要結果:

表1 定量統計結果
圖3 跳舞視訊合成結果
圖4 不同方法的跳舞視訊合成結果
圖5 街景合成結果
圖6 人臉視訊合成結果

 

圖7 資料集多樣性對結果的影響

limitations

依舊是泛化能力,當目標domain和訓練集中的domain差別太大時,如使用計算機動畫,則效果會很差。

除此之外,當語義圖不準確的時候,結果也會不準確。

 

總結

本文的few-shot特點能夠使用unseen domain的example image(s)指導視訊合成,且效果較好。

======================================================================================================

本文為閱讀筆記,閱讀的論文是:

Ting-Chun Wang, Ming-Yu Liu, Andrew Tao, Guilin Liu, Jan Kautz, and Bryan Catanzaro. "Few-shot Video-to-Video Synthesis", in NeurIPS, 2019.

本閱讀筆記原載於 我的部落格

如有錯誤,請聯絡 rxnlos@126.com

======================================================================================================

 

相關文章