アドバンストビジョン

第4回: 画像の識別と生成の基礎II

千葉工業大学 上田 隆一


This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.

アドバンストビジョン第3回

今日やること

  • 敵対的生成ネットワーク(GAN)
  • 変分オートエンコーダ(VAE)
  • 拡散モデル(DDPM)
  • GAN、VAEの応用
アドバンストビジョン第3回

GAN(generative adversarial networks)[Goodfellow2014]

  • 敵対的生成ネットワーク
    • 「絵を描く人工ニューラルネットワーク」のブームの発端
    • それ以外にも音声やソフトウェアを作り出すなどの用途
  • 「敵対的」とは何?(人類の敵ではない)
    • ふたつのANNを準備
      • 生成ネットワーク(generator): 何かを作るANN
      • 識別ネットワーク(discriminator): 入力が生成ネットワークの生成物かどうかを判断するANN
    • 生成ネットワークと識別ネットワークが互いに競う
アドバンストビジョン第3回

ネットワーク構造の例(DCGAN)

アドバンストビジョン第3回

DCGANの生成ネットワーク

  • 構造: オートエンコーダのデコーダ
    • 入力: ランダムなベクトル(100次元)
      • 潜在空間のベクトルに相当
        • ↑わからん人は前回のオートエンコーダに戻りましょう
    • 出力: 画像
  • 出力の画像は最初はでたらめ
    • ある訓練をすると画像が生成されるように
アドバンストビジョン第3回

DCGANの識別ネットワーク

  • 構造: エンコーダに似ているが出力は1bit
    • 入力: 生成ネットワークの画像 or 訓練のために用意した画像
    • 出力: 「本物(訓練に用意した画像)」である確率
      • 偽物: 生成ネットワークの出力
  • 出力は最初はでたらめ
    • 当てずっぽう
アドバンストビジョン第3回

生成/識別ネットワークを競わせる

  • 損失関数(次ページで詳しく)
    • 識別ネットワークが正解したら生成ネットワークの損失
    • 識別ネットワークが不正解だったら識別ネットワークの損失
  • 学習の進行
    • 生成ネットワーク: ノイズ画像識別ネットワークの確率を下げる模様を生成
      精緻な画像
    • 識別ネットワーク: 模様に負けない識別性能を得ようとする
    • 学習が進んでいく様子
これで生成ネットワークが画像を出力できるようになる
アドバンストビジョン第3回

GANの損失関数

  • 生成ネットワークの評価関数(損失関数にをかけたもの)
      • : 生成ネットワークが生成したデータ(個用意)
      • : 識別ネットワークの識別結果(確率)
  • 識別ネットワークの評価関数
      • : 訓練データ(こちらも個用意)
      • に訓練データに対する識別の成績の項も加算
アドバンストビジョン第3回

変分オートエンコーダ[Kingma 2013]

  • オートエンコーダをより表現力豊かにする方法
  • 改善したいオートエンコーダの性質
    • 潜在空間でのベクトルの分布に隙間
      • 訓練データに対応するベクトルの間に
    • 隙間の問題
      • 隙間のベクトルをデコーダに渡すと、中間というよりは重ね合わせのような出力
        • 例: 犬と猫の中間のベクトルから、その中間のような動物の画像を出力したい
          単に足して2で割ったような不自然なものに
アドバンストビジョン第3回

変分オートエンコーダでの潜在空間の扱い

  • 仮定
    • 潜在空間のベクトルの分布は標準正規分布に従う
      • 空間が無限なのでデータが散らないように縛りを設ける
    • エンコーダへの入力に対し、の分布も正規分布に従う
      • これは学習のための仮定
  • 仮定に基づいて学習すると
    • の隙間があかずに原点付近に集まる
    • の分布のなかに物の種別のような分布ができる
アドバンストビジョン第3回

隙間の問題の解決

アドバンストビジョン第3回

変分オートエンコーダの構造

  • 右図
    • エンコーダの先に雑音の層を追加
    • を標準正規分布に制限するための項を損失関数に追加
    • 作りは簡単だがベイズ推論の理論が背景に
      • 確率ロボティクスの講義で一部説明
アドバンストビジョン第3回

AE、VAE学習の確率的な解釈

  • 確率分布の圧縮と復元を学習している
    • なんの分布?: データや画像の数値を並べたベクトル
    • 訓練に使うデータや画像のは、にしたがって選ばれる(
      • : 人間の興味で決まる
        • 例: 猫の絵を生成したいなら猫の画像ばかりになるなど
  • エンコーダ: を潜在空間の分布に変換
    • AEの場合はからの点を潜在空間に写像
  • デコーダ: エンコーダと逆の変換を学習
    • 出力の分布: (誤差あり)
アドバンストビジョン第3回

Denoising Diffusion Probabilistic Models(DDPM)[Ho2020]

  • 一般に(機械学習の文脈で)「拡散モデル」と呼ばれるもの
  • 拡散モデル(拡散過程)
    • 集まっているものや模様がだんだん散らばっていく過程を定式化したもの
    • 下の例: 各画素に対し、同じガウス分布に従う雑音を繰り返し足したもの
これがなんで生成と関係あるの?
アドバンストビジョン第3回

拡散モデルを使った生成の考え方

  • 画像: 人間がなにか意味のある画像だと思う画像の分布からドローされたもの
    • : 画素を並べたベクトル)
  • の拡散
    • 何度も同じガウス分布状の雑音を何度も足していくと
      最終的にガウス分布
      逆(逆拡散過程)をすればが復元できる(どうやって?)
      からノイズをドローして逆に拡散から新たな絵がドローできる

アドバンストビジョン第3回

理論的な裏付け

  • 先ほど用いた拡散過程: 同じガウス分布を回適用
    • 少しずつの雑音であれば、回、同じノイズ除去の処理を繰り返すと元に戻すことができる(時間を巻き戻すことができる)
      • 非平衡熱力学の知見から
  • DDPM
    • 「ノイズの除去処理」をANNに学習させる
      このANNに雑音を回通すと画像が生成される
      (Stable Diffusionなどに用いられるなど高品質)
    • 集めた画像でノイズの除去処理を訓練
アドバンストビジョン第3回

DDPMの学習方法(訓練用のデータの準備)

  • 学習データ: 様々な画像を準備
  • 拡散させかたの定義
    • 各画素にガウス分布にしたがうノイズを付加
        • : の任意の画素
        • : 拡散率(原著ではまでにからまで線形に増加)
  • 任意の段階の画像を生成できるプログラムを作成
アドバンストビジョン第3回

DDPMの学習方法(ANN)

  • U-Netを拡張したものを準備
    (Transformerを使ったものについては後日)
    • 元の画像からどれだけ拡散したか(時刻)も入力できるように
    • 他にも仕掛け
  • 損失関数と学習
    • ノイズ画像の1ステップ前を出力するよう学習
    • 前ページのプログラムで作ったノイズ画像と↑を比較(二乗誤差)
      • 互いにの値を引くとノイズ同士の比較に
      • ベイズ推論の難しい式からに二乗誤差がよいと導出される
アドバンストビジョン第3回

アドバンストビジョン第3回

GAN、VAEの応用

  • CGAN
  • pix2pix
  • cVAE
アドバンストビジョン第3回

条件付きGAN(Conditional GAN、CGAN)[Mirza2014]

  • GANの生成ネットワークはランダムにデータを出力するだけ
    • 何を出力するかコントロールしたい
  • 条件付きGAN
    • 生成ネットワークに何を作って欲しいかラベルで指示
      • データのもとになるベクトルと共にラベルを入力
    • 識別ネットワークにも、生成ネットワークの出力と共にを入力
      • 条件に合った生成データか判定
  • 補足: ラベルの表現
    • というone-hot ベクトルがよく用いられる
      • が立っている位置を特定のものと対応づけ
        • 例: 1番目が猫、2番目が犬、など
    • 他のANNでもよく用いられる
アドバンストビジョン第3回

pix2pix

  • CGANの一種とみなせる
  • pix2pix[Isora 2016](構造は論文のFigure 2に)
    • 生成ネットワーク: 入力にノイズではなく画像を入力し、画像を出力させる
      • 入力をX、出力をYとしましょう
    • 識別ネットワーク: XとYのペア、あるいはXと対応する学習用画像Y'のペアを入力して真贋を識別
      画像を変換するように学習
  • どんなことができるか
アドバンストビジョン第3回

条件つき変分オートエンコーダ
(Conditional VAE、CVAE)

  • CGANと同様、エンコーダとデコーダにラベルも入力
    • デコーダはラベルにしたがってデータを生成できる
  • 入力の識別情報が、潜在空間内で必要なくなる
アドバンストビジョン第3回

まとめ

  • 様々な生成方法
    • 敵対的生成ネットワーク(GAN)
    • 変分オートエンコーダと拡散モデル確率分布の利用
  • GAN、VAEの応用
    • ラベル付けして生成したいものを指示できる
    • 画像から画像への変換ができる
アドバンストビジョン第3回