188 Views
June 12, 25
スライド概要
AI・機械学習を勉強したい学生たちが集まる、京都大学の自主ゼミサークルです。私たちのサークルに興味のある方はX(Twitter)をご覧ください!
生成Deep Learning輪読会(10.4~10.6) 京都大学 工学部 情報学科 数理工学コース B3 稲葉 陽孔 1
アジェンダ ■ StyleGAN2 ■ その他のGAN 2
StyleGAN2 StyleGANの欠点 ノイズ(droplet)が生じる(64×64から) 原因 AdaIN演算が各特徴マップの平均と分散を個別に正規化するこ とで、 特徴同士の相対的な大きさに関する情報が失われる →各特徴量に局所的な値を入れることで、他の場所で信号を任 意の大きさにスケーリングして対応せざるをえない →StyleGAN2によりこの問題を解決 3
StyleGAN2(StyleGANとの違い ) 1.正規化手法の変更 従来:AdaINは特徴マップの平均と分散を個別 に正規化するため、特徴同士の相対的な大き さに関する情報が失われる 今: Mod(スタイル変調)→Demod(正規化による復調) によって、Convの重みを調整 Mod: Demod: StyleGAN StyleGAN2 i:何番目の特徴量マップか j:出力チャンネル k:空間次元 ε:小さい定数(ゼロ除算を防ぐ) si:全結合層Aから得られるスタイルベクトル 4
StyleGAN2(StyleGANとの違い ) 下が上より多く猫の画像を出している 2.損失関数の変化 従来:FIDや適合率・再現率を指標にする場 合、以下のパターンでも同じ粒度のモデルと考 慮される →しかし、PPLが低いと品質が良いことが分かっ た PPL:潜在空間の知覚的な滑らかさ 滑らかさ:潜在空間上で「少しだけ」動かしたとき に、生成される画像が「少しだけ」変わるかどうか →それを取り入れた新たな損失関数を作成 5
StyleGAN2(StyleGANとの違い ) 指標(PPL)の計算式 slerp:球面線形補間 z1,z2:潜在空間上のベクトル G:生成器 ε:定数(10^(-4)) d(~~):知覚距離(画像間の距離) t:線形補間における媒介変数 楕円状に移動する際のパスに沿って補間すること 球面線形補間 to :線形補間によって得られたベクトル 一般式(線形補間) I:線形補間によって得られるベクトル S:始点のベクトル E:終点のベクトル Ps(t)・Pe(t):媒介変数t(0<=t<=1)の範囲 にある関数 from 1812.04948 6
StyleGAN2(StyleGANとの違い ) 2.損失関数の追加(パス長の正規化) Jw:ヤコビ行列(Jw = ∂g(w) / ∂w) ※g(w):潜在空間上のwによって生成される画像 y:N(0,I)からのノイズ画像 正則化項 a:定数(訓練前の の移動平均) Jwは「潜在空間の変化によって、画像の生成結果がどれだけ変わるか」を捉え、 によって疑似的に「今の画像において、wの変化によってどれだけ画像yが変化するか」を捉える また、この損失関数は16個のミニバッチ毎に1回だけ適応される (遅延正規化) 7
StyleGAN2(StyleGANとの違い ) 3.プログレッシブトレーニングの廃止 問題点(StyleGAN) 個々のGeneratorが独立しているので頻出する特徴を 生成する傾向にあり、その特徴量の周波数が強くなり、 変動にくくなってしまう →漸近的にモデルを学習するスタイルをやめ、別のモ デルアーティテクチャを考える必要がある 8
StyleGAN2(StyleGANとの違い ) 3.プログレッシブトレーニングの廃止 モデル構造の変更点 生成器:各解像度のRGB出力をアップサンプリ ング+スキップ接続 識別器:スキップ接続+各解像度のRGB出力 をダウンサンプリング+残差接続 モデル構造 利点 初期段階の訓練で低解像度の層が洗練される →高解像度の層に渡すのに使用されるスキップ接続+残差接続は影響が小さくなり、高解像度の層が学習される となるので、 StyleGANの訓練における特徴(低解像度の訓練→高解像度の訓練)が保たれている 9
StyleGAN2(StyleGANとの違い ) 3.プログレッシブトレーニングの廃止 学習結果 訓練回数ごとの、各解像度のジェネレータ出力への寄与(左 :StyleGAN・右:StyleGAN2) 10
その他の重要な GAN SAGAN(Self-Attention GAN) 問題点 畳み込み層で作られる特徴量マップしか情報をローカルに処理できない →複数の畳み込み層によってピクセル情報を画像の片側からもう片方へ接続することになる →離れたピクセル同士の依存性の学習が効率的でない 特徴 Attention機構をGANに組み込む →遠く離れたピクセル同士の依存性も効率的 に学習可能 11
その他の重要な GAN SAGAN(Self-Attention GAN) 構造(SAGAN) この箇所にアテンション機構を挿入 12
その他の重要な GAN SAGAN(Self-Attention GAN) 学習結果 最後の生成層におけるアテンションマップ 左端の画像の点:代表的なクエリ 右3個の画像:各クエリにおけるアテンションマップ(矢印は最も注目されている領域を示す) 13
その他の重要な GAN BigGAN SAGANとの違い サンプリングでの潜在分布と訓練に使われる潜在分布(N(0,I))が異なる サンプリングにおける潜在分布 切断正規分布(一定以上のzを生成した場合は、 再サンプリング) 使われる 使われない 14
その他の重要な GAN VQ-GAN 概要 潜在空間を離散潜在空間にすることで精度を改善 元ネタ:VQ-VAE(ベクトル量子化VAE)が離散潜在空間を使用 離散潜在空間 学習されたベクトルのリスト(コードブック) 各ベクトルは対応するインデックス(ex.髪の長さ)と関連付けられる ※ベクトルの値自体が量子化されているわけではない 15
その他の重要な GAN VQ-VAE 生成過程 1.離散潜在空間となるベクトルをサンプリング 2.Generatorによってコードブックと同じ次元のグリッド状ベクトルに畳み込む 3.2で得られた各ベクトルをコードブックと比較し、コードブック中で距離が最も近いものに変換 4.3で構成した特徴量マップを元に、デコーダーで画像を生成 ※距離:ユークリッド距離 16
その他の重要な GAN VQ-VAE 損失関数 ※再構成誤差 入力データと生成画像の誤差(MSE) ※KL情報量 エンコーダーによって生成された確率分布のパラメーターが想定 (平均0, 分散1)とどれだけずれているか 従来(VAE):再構成誤差+KL情報量 現在:再構成誤差+アライメント損失+コミットメント損失 アライメント損失:コードブック中のeをエンコーダー出力に近づけるために存在 コミットメント損失:「eは独立に生成されるので、eが生成器より早く学習しない場合、 生成器がeに引っ張られて学習しうる」ことを防ぐために存在 ※sg:勾配停止演算(出力値は恒等) →勾配の計算値が0になるので、事実上の定数 アライメント損失 コミットメント損失 17
その他の重要な GAN(VQ-VAE) VQ-VAE 画像生成における、サンプリング方法の変更 サンプリングによるデコーダーへの入力値(特徴量マップ)の生成過程 1.エンコーダーによって、潜在表現を生成するための正規分布に必 要なパラメーター(平均・分散)を取得 2.1で得られたパラメーターを元に潜在表現をサンプリング 全体像(VAE) 18
その他の重要な GAN(VQ-VAE) VQ-VAE 画像生成における、サンプリング方法の変更 サンプリングによるデコーダーへの入力値(特徴量マップ)の生成過程 1.訓練によって新しいコードブックを作成 2.1パッチ毎において、サンプリングする際の確率分布モデルを PixelCNNによって構築 3.確率分布モデルを元に、エンコーダーによる特徴量マップから 1パッチごとにサンプリング 4.3で生成した特徴量マップを元に、 コードブックの中で最も距離が近いものに変更 PixelCNN 矢印に沿って1pxごとにサンプリング ※サンプリングの際、青色部分(サンプリング済)を元に サンプ リングのための確率分布を生成 19
その他の重要な GAN(VQ-GANとVQ-VAEの違い) VQ-VAEとの変更点 1.識別器の追加(+敵対的な項を損失関数に追加 識別器の特徴 画像全体を見て判定するのではなく、パッチ (画像の断片)ごとに本物か偽物か識別 →損失関数が画像の「内容」でなく「スタイル」に基づい て識別する際の精度を測れる 全体像(VQ-GAN) →VAEがぼやけた画像を生成する欠点とマッチし、シャープな画像の生成に貢献 20
その他の重要な GAN(VQ-GANとVQ-VAEの違い) VQ-VAEとの変更点 2.損失項の追加(知覚的損失) 知覚的損失 「エンコーダーの中間層」と「それに対応するデコーダーの層」 における特徴量マップ間の差 cj×Hj×Wj:j層目における特徴量マップの形 Φ(y):j層目のエンコーダーによる特徴量マップ Φ(y^):j層目のデコーダーによる特徴量マップ 21
その他の重要な GAN(VQ-GANとVQ-VAEの違い) VQ-VAEとの変更点 3.コードブロックのサンプリングモデルの変更 使われるモデル:Transformer 学習方法:VQ-GANの訓練が終わった後、別のフェーズにて訓練 特徴 トークン回りのスライディングウィンドウ内にあるトークンを元に、 サンプリング用の確率分布を生成 →モデルのスケーリングができ、 大きな画像に対応できるようになった 22
その他の重要な GAN(ViT VQ-GAN) ViT VQ-GAN VQ-GANとの変更点 エンコーダー・デコーダーを ViT(Vision Transformer)に変更 全体像(ViT VQ-GAN) 生成過程 1.入力パッチ(8×8)を平坦化し、低次元の埋め込み空間に投影+位置埋め込みを追加 2.1で得られた埋め込み空間をTransformer Encoderに渡し、得られた埋め込みをコードブックに従って量子化 3.トークン列(量子化済)を元に、自己回帰的にトークンを1つ1つ生成(Autoregressive Transformer) 4.Transformer Decoderによってパッチ毎の画像を生成し、それらを組み合わせることで1つの画像を生成 23
その他の重要な GAN(ViT VQ-GAN) ViT VQ-GAN VQ-GANとの変更点 Image Modelingによって、 画像の生成能力や表現学習能力を獲得 全体像(ViT VQ-GAN) さらなる学習能力を得るためのタスク例 クラス制限付き生成(猫の画像を生成など) →これをタスクとしてImageModeling (Autoregressive Transformer+Transformer Decoder)を学習する 24
実装モデル (GitHub) StyleGAN2(pytorch) SAGAN BigGAN(pytorch) VQ-VAE(pytorch) VQ-GAN(pytorch) 25