Open shimopino opened 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
2020-03-19
知識の蒸留とOFAを使用して、cGANのモデルを圧縮できる方法を提案した。教師モデルからの蒸留では、出力される画像をそのまま使用すると精度が悪化するため、中間層のみを蒸留している。CycleGANやGauGANなどのモデルで精度を落とさずに10倍近くまで圧縮できている。
お絵かきやVRなどにGANを適用する際には、低いLatencyという制約のあるデバイス上にモデルを載せる必要がある。
しかしCycleGANやGauGANといったcGANモデルには多くのパラメータと計算コストが必要であり、エッジデバイスでは到底使用できるものではない。
本論文ではcGANの推論時間と計算コストを下げることも目的としている。このために、unpairedな状況で発生する学習の不安定性と既存のCNNの設計を再利用するための学習方法を提案した。
unpairedな状況では学習が不安定になってしまうため、pairedな状況で学習済みのモデルを教師モデルとして、この教師モデルの出力をターゲットのラベルとして取り扱うことで、擬似的にpairedな学習設定にしている。
学習済みの教師モデルで得られたDiscriminatorを使用することで、圧縮された生徒モデルの学習をガイドさせる役割を持たせておく。ランダムの初期化したDiscriminatorを使用すると学習が不安定になり生成される画像の質が落ちてしまう。
通常の知識の蒸留では、出力されるものはラベルに対する確率分布だが、cGANの場合は出力されるものが画像であるため、単純に生徒モデルに転移させることが難しい。
そのため教師モデルの出力だけではなく、教師モデルの中間層を使用することでより多くの情報を生徒モデルに転移させている。この際に異なるチャンネル数でも比較できるように1x1畳み込み層ftを適用している。
これで全体の損失関数は以下の数式で表現できる。
通常の畳み込み層と比較して、計算を圧縮させたモデルではCNNをdepthwise畳み込みとpointwise畳み込みに分けていることが多く、cGANの探索でもこの畳み込みを探索対象として採用している。
しかしすべての畳み込み層を置き換えると精度が悪化してしまう。そこでResNetのように、精度に敏感に影響するUpSampling層はそのままにしておき、パラメータのボトルネットとなるresBlock層の畳み込み層を圧縮版に置き換えている。
GANのモデルでは使用するチャンネル数を人が予め設定することが多いが、今回はモデルを圧縮するためにチャンネル数を8の倍数から選択して枝切りを行っている。
しかしランダムにチャンネル数を変更したネットワークを学習させる方法では、対象となるサブネットワークの数だけ計算コストが上昇してしまう。
モデルを圧縮するために"Once-for-All"の戦略を採用している。この学習方法は、まずはじめに最も大きなネットワークを学習させた後に、最適なサブネットワークを探索していく2段階のプロセスで構成されている。
一度モデルの学習が終了した後は、抽出したサブネットワークを検証データを使用して精度を評価する。最も精度の高いサブネットワークを選択した後に、そのモデルのみfine-tuningを行う。
今回圧縮するモデルはCycleGAN・Pix2Pix・GauGANの3つのcGANである。これらもモデルと圧縮させたモデルとを、複数のデータセットを使用して比較した。
どのモデルに対しても精度を大幅に悪化させることなく、モデルサイズを数倍の単位で圧縮できている。またMACsも大幅に下げることに成功している。
またモデルの精度と計算コストのトレードオフも実現できており、既存の手法よりも大幅に高い精度を達成している。
実際に生成された画像を比較しても、10倍近く圧縮しているモデルであっても元のモデルと同等程度の精度を達成しており、画像も崩壊せずに出力されていることがわかる。
各デバイスでモデルがどの程度高速化されたのかを見てみる。Jetson Xavierでは40FPSに達成しており、実用環境でも使用できるほどにモデルの高速化が達成されている。
また教師モデルの出力をpairedデータとして使用した場合の比較結果を見てみると、unpairedな学習設定の場合だとスタイル変換に失敗している状況でも、圧縮モデルがスタイル変換に成功していることがわかる。
ResNet構造のGeneratorからどの層の畳み込みを変更することで、どの程度精度に影響しているのかを比較した。中間となる畳込みのみを教師モデルから蒸留する場合が最も圧縮率も精度も高いモデルを構築できている。
https://github.com/mit-han-lab/gan-compression
https://www.youtube.com/playlist?list=PL80kAHvQbh-r5R8UmXhQK1ndqRvPNw_ex
なおMACの説明
論文へのリンク
[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倍近くまで圧縮できている。
2. 先行研究と比べてどこがすごいの?
お絵かきやVRなどにGANを適用する際には、低いLatencyという制約のあるデバイス上にモデルを載せる必要がある。
しかしCycleGANやGauGANといったcGANモデルには多くのパラメータと計算コストが必要であり、エッジデバイスでは到底使用できるものではない。
本論文ではcGANの推論時間と計算コストを下げることも目的としている。このために、unpairedな状況で発生する学習の不安定性と既存のCNNの設計を再利用するための学習方法を提案した。
3. 技術や手法の"キモ"はどこにある?
3.1 Training Objective
unpairedな状況では学習が不安定になってしまうため、pairedな状況で学習済みのモデルを教師モデルとして、この教師モデルの出力をターゲットのラベルとして取り扱うことで、擬似的にpairedな学習設定にしている。
学習済みの教師モデルで得られたDiscriminatorを使用することで、圧縮された生徒モデルの学習をガイドさせる役割を持たせておく。ランダムの初期化したDiscriminatorを使用すると学習が不安定になり生成される画像の質が落ちてしまう。
通常の知識の蒸留では、出力されるものはラベルに対する確率分布だが、cGANの場合は出力されるものが画像であるため、単純に生徒モデルに転移させることが難しい。
そのため教師モデルの出力だけではなく、教師モデルの中間層を使用することでより多くの情報を生徒モデルに転移させている。この際に異なるチャンネル数でも比較できるように1x1畳み込み層ftを適用している。
これで全体の損失関数は以下の数式で表現できる。
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を行う。
4. どうやって有効だと検証した?
今回圧縮するモデルはCycleGAN・Pix2Pix・GauGANの3つのcGANである。これらもモデルと圧縮させたモデルとを、複数のデータセットを使用して比較した。
どのモデルに対しても精度を大幅に悪化させることなく、モデルサイズを数倍の単位で圧縮できている。またMACsも大幅に下げることに成功している。
またモデルの精度と計算コストのトレードオフも実現できており、既存の手法よりも大幅に高い精度を達成している。
実際に生成された画像を比較しても、10倍近く圧縮しているモデルであっても元のモデルと同等程度の精度を達成しており、画像も崩壊せずに出力されていることがわかる。
各デバイスでモデルがどの程度高速化されたのかを見てみる。Jetson Xavierでは40FPSに達成しており、実用環境でも使用できるほどにモデルの高速化が達成されている。
また教師モデルの出力をpairedデータとして使用した場合の比較結果を見てみると、unpairedな学習設定の場合だとスタイル変換に失敗している状況でも、圧縮モデルがスタイル変換に成功していることがわかる。
ResNet構造のGeneratorからどの層の畳み込みを変更することで、どの程度精度に影響しているのかを比較した。中間となる畳込みのみを教師モデルから蒸留する場合が最も圧縮率も精度も高いモデルを構築できている。
5. 議論はあるか?
6. 次に読むべき論文はあるか?
論文情報・リンク