shimopino / papers-challenge

Paper Reading List I have already read
30 stars 2 forks source link

GAN Compression: Efficient Architectures for Interactive Conditional GANs #48

Open shimopino opened 4 years ago

shimopino commented 4 years ago

論文へのリンク

[arXiv:2003.08936] GAN Compression: Efficient Architectures for Interactive Conditional GANs

著者・所属機関

Muyang Li, Ji Lin, Yaoyao Ding, Zhijian Liu, Jun-Yan Zhu, Song Han

投稿日時(YYYY-MM-DD)

2020-03-19

1. どんなもの?

知識の蒸留とOFAを使用して、cGANのモデルを圧縮できる方法を提案した。教師モデルからの蒸留では、出力される画像をそのまま使用すると精度が悪化するため、中間層のみを蒸留している。CycleGANやGauGANなどのモデルで精度を落とさずに10倍近くまで圧縮できている。

image

2. 先行研究と比べてどこがすごいの?

お絵かきやVRなどにGANを適用する際には、低いLatencyという制約のあるデバイス上にモデルを載せる必要がある。

しかしCycleGANやGauGANといったcGANモデルには多くのパラメータと計算コストが必要であり、エッジデバイスでは到底使用できるものではない。

image

本論文ではcGANの推論時間と計算コストを下げることも目的としている。このために、unpairedな状況で発生する学習の不安定性と既存のCNNの設計を再利用するための学習方法を提案した。

3. 技術や手法の"キモ"はどこにある?

3.1 Training Objective

unpairedな状況では学習が不安定になってしまうため、pairedな状況で学習済みのモデルを教師モデルとして、この教師モデルの出力をターゲットのラベルとして取り扱うことで、擬似的にpairedな学習設定にしている。

image

学習済みの教師モデルで得られたDiscriminatorを使用することで、圧縮された生徒モデルの学習をガイドさせる役割を持たせておく。ランダムの初期化したDiscriminatorを使用すると学習が不安定になり生成される画像の質が落ちてしまう。

image

通常の知識の蒸留では、出力されるものはラベルに対する確率分布だが、cGANの場合は出力されるものが画像であるため、単純に生徒モデルに転移させることが難しい。

そのため教師モデルの出力だけではなく、教師モデルの中間層を使用することでより多くの情報を生徒モデルに転移させている。この際に異なるチャンネル数でも比較できるように1x1畳み込み層ftを適用している。

image

これで全体の損失関数は以下の数式で表現できる。

image

3.2 Efficient Generator Design Space

Convolution decomposition and layer sensitivity

通常の畳み込み層と比較して、計算を圧縮させたモデルではCNNをdepthwise畳み込みとpointwise畳み込みに分けていることが多く、cGANの探索でもこの畳み込みを探索対象として採用している。

しかしすべての畳み込み層を置き換えると精度が悪化してしまう。そこでResNetのように、精度に敏感に影響するUpSampling層はそのままにしておき、パラメータのボトルネットとなるresBlock層の畳み込み層を圧縮版に置き換えている。

Automated channel reduction with NAS

GANのモデルでは使用するチャンネル数を人が予め設定することが多いが、今回はモデルを圧縮するためにチャンネル数を8の倍数から選択して枝切りを行っている。

しかしランダムにチャンネル数を変更したネットワークを学習させる方法では、対象となるサブネットワークの数だけ計算コストが上昇してしまう。

3.3 Decouple Training and Search

モデルを圧縮するために"Once-for-All"の戦略を採用している。この学習方法は、まずはじめに最も大きなネットワークを学習させた後に、最適なサブネットワークを探索していく2段階のプロセスで構成されている。

一度モデルの学習が終了した後は、抽出したサブネットワークを検証データを使用して精度を評価する。最も精度の高いサブネットワークを選択した後に、そのモデルのみfine-tuningを行う。

image

4. どうやって有効だと検証した?

今回圧縮するモデルはCycleGAN・Pix2Pix・GauGANの3つのcGANである。これらもモデルと圧縮させたモデルとを、複数のデータセットを使用して比較した。

どのモデルに対しても精度を大幅に悪化させることなく、モデルサイズを数倍の単位で圧縮できている。またMACsも大幅に下げることに成功している。

image

またモデルの精度と計算コストのトレードオフも実現できており、既存の手法よりも大幅に高い精度を達成している。

image

実際に生成された画像を比較しても、10倍近く圧縮しているモデルであっても元のモデルと同等程度の精度を達成しており、画像も崩壊せずに出力されていることがわかる。

image

各デバイスでモデルがどの程度高速化されたのかを見てみる。Jetson Xavierでは40FPSに達成しており、実用環境でも使用できるほどにモデルの高速化が達成されている。

image

また教師モデルの出力をpairedデータとして使用した場合の比較結果を見てみると、unpairedな学習設定の場合だとスタイル変換に失敗している状況でも、圧縮モデルがスタイル変換に成功していることがわかる。

image

ResNet構造のGeneratorからどの層の畳み込みを変更することで、どの程度精度に影響しているのかを比較した。中間となる畳込みのみを教師モデルから蒸留する場合が最も圧縮率も精度も高いモデルを構築できている。

image

5. 議論はあるか?

6. 次に読むべき論文はあるか?

論文情報・リンク

shimopino commented 4 years ago

https://github.com/mit-han-lab/gan-compression

shimopino commented 4 years ago

https://www.youtube.com/playlist?list=PL80kAHvQbh-r5R8UmXhQK1ndqRvPNw_ex

shimopino commented 4 years ago

なおMACの説明

image