ロボットビジョン

第4回: 画像の記憶と想起・生成

千葉工業大学 上田 隆一


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

ロボットビジョン第4回

今日やること

  • 敵対的生成ネットワーク(GAN)
  • オートエンコーダ(AE)
  • 変分オートエンコーダ(VAE)
  • 拡散モデル(DDPM)
  • フローマッチング(FM)
ロボットビジョン第4回

GAN(generative adversarial networks)[Goodfellow2014]

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

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

ロボットビジョン第4回

DCGANの生成ネットワーク(右図の上)

  • 構造: U-Netの出力側
    • 入力: ランダムなベクトル(100次元)
      • つまり雑音を入力
        • なんで??(講義後半で)
    • 出力: 画像
  • 出力の画像は最初はでたらめ
    • ある訓練をすると画像が生成されるように
ロボットビジョン第4回

DCGANの識別ネットワーク

  • 構造: エンコーダに似ているが出力は1bit
    • 入力: 次のどちらか
      • 生成画像: 生成ネットワークから
      • 訓練画像: 顔なら顔、風景なら風景の画像セット数千枚〜
    • 出力: 訓練画像である確率
      • 偽物: 生成画像
      • 最終層(シグモイド)がを出力
      • 最初は当てずっぽう
ロボットビジョン第4回

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

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

GANの損失関数

  • 生成ネットワークの評価関数(損失関数にをかけたもの)
      • : 生成画像(個用意)
      • : 識別ネットワークの識別結果(確率)
        • 識別ネットワークが間違えるほど評価が高く
  • 識別ネットワークの評価関数
      • : 訓練画像(こちらも個用意)
      • に訓練データに対する識別の成績の項も加算
ロボットビジョン第4回

GANのまとめ

  • 2つのネットワークを競わせる
  • 入力がノイズのことがある
  • 画像を生成(生成モデルと呼ばれるものの先祖の1つ)
    • 基本、画像やベクトルにできるデータならなんでも出力可能
  • 出力する画像をコントロールする方法については次週
ロボットビジョン第4回

オートエンコーダと潜在空間

ロボットビジョン第4回

疑問

  • なんで我々の頭にはSSDがついてないのに、風景をたくさん覚えていられるのか?
    • 前来た場所を懐かしいと思える(たまに忘れる)
    • 自分のいた教室と違う教室でも懐かしいと思う
  • 頭のなかで風景や動きを再生できる
    • 見たことのあるもの
    • 見たことのないものの空想/夢や病気での幻想
話し合ってみましょう
ロボットビジョン第4回

オートエンコーダ(autoencoder、AE)

  • 入力と出力を一致させるように学習されたANN [Hinton 2006]
    • 損失関数: 入出力の平均二乗誤差(MSE, mean square error)
      • 学習のためのラベル付けは不要(教師無し)
    • 構成はCNNでも全結合でもよいが、U-Net状に中間の次元を小さく
      • 入力側: どんどん情報を落としていく
      • 出力側: どんどん情報を増やしていく
    • 疑問: 何の意味があるの?
ロボットビジョン第4回

入力側(エンコーダ)のやっていること

  • 入力されたデータの分類
    • (学習がうまくいった場合は)似たような画像から似たような出力が得られる
    • うしろに全結合層(とソフトマックス層)をくっつけて追加で学習させると分類器に
  • 右図の例: 出力を2次元まで縮小した場合の
    出力の分布の例
    • 注意: 実用的なものはもっと高次元
      • [Hinton 2026]は30次元
    • 分布している空間を潜在空間と言う
ロボットビジョン第4回

出力側(デコーダ)のやっていること

  • 潜在空間のベクトルからデータを復元
    • 例: 「犬」のベクトルが来たら犬の写真や絵を描画
    • 復元方法(絵の描き方)を学習
      • 転置畳み込みのフィルタなどのパラメータに
    • 復元しやすいようにエンコーダ側が学習される
      • 潜在空間でのベクトルの分布が決まる

ロボットビジョン第4回

オートエンコーダの利用

  • エンコーダとデコーダを分離して利用
  • エンコーダ
    • 先に前結合層などを取り付けて分類器に
    • 先に別のデコーダを取り付けると別のものが生成される
  • デコーダ
    • 学習に用いたもの以外のエンコーダを取り付けると変換器に
      • 例「犬」と入力犬の絵を生成
GANとともに、ちまたで生成AIと言われるものの原型
ロボットビジョン第4回

オートエンコーダのまとめ

  • 画像(数百万次元の画素値のベクトル)を数十次元のベクトルに圧縮
    • 人間もそうしてる?
  • 潜在空間のベクトルを狙って/適当にデコードすると画像になる
    • 人間もそうやって風景を思い出したり幻想を見たりする?
  • まだこれでは不完全
    • 風景にも統計的な性質(確率分布)があるが、生かしきれていない
      • 潜在空間に点を打っているだけ
      • 点と点の間は「なにもない」ことに
    • 統計的な性質
      • 同じ漫画家の書く人の絵は似ているとか猫の画像は互いに似ているとか
ロボットビジョン第4回

確率・統計で考える画像の分布

  • こういう仮定を考える: 訓練画像はなんらかの確率分布Pにしたがって選ばれる
    • 訓練画像を選ぶ人の嗜好や置かれた環境を反映した確率分布
  • Pの性質: 確率(の密度)の高いところに、訓練に適切だが選ばれなかった画像が無数に存在
    • 選べると新しい画像が生成可能
      • サイコロを振るように
    • 問題: Pの分布の形が不明で選べない
      • 超多次元空間の超絶にスパース(疎)な分布
ロボットビジョン第4回

分布の変換・逆変換の試み

  • Pを簡単な分布Q(ガウス分布)に変換
    • Pの点をQの点に対応づけ
    • 重要: Qからは確率の高いデータが選びやすい
    • 補足: QがPの原因と考えることも可能(後述のVAEの論文など)
  • Qから高確率のデータを選んでPの空間へ逆変換(を得る)
    • はPで確率の高い点で、意味のある画像になっている

そんなことできるの?→できる
ロボットビジョン第4回

変分オートエンコーダ[Kingma 2013](variational AE、VAE)

  • 仮定を置く
    • 潜在空間のベクトルの分布は標準正規分布(ガウス分布)に従う
    • を画像の原因と考え、原因の不確かさの正規分布を考える
  • 仮定に基づいて学習の分布のなかに物の種別のような分布

ロボットビジョン第4回

VAEのエンコーダ/デコーダ

  • エンコーダ(パラメータ):
    • を出力
    • 具体的には
      • の平均値、各元の分散(の対数)を出力し、
      • 次の層でを出力
  • デコーダ(パラメータ):
    • 理論上は確率的な表現となるが、のように決定論的にもできる
ロボットビジョン第4回

VAEの損失関数

ベイズ推定の式を解いていくと次のようになる(スライドのうしろで補足)

  • ある1つの訓練画像に対して、次の値が大きいほうがよい
      • : の次元
        • 回試行を繰り返すということ
        • バッチで学習するならでよい
    • 最初の項: 平均値も分散も小さい方がよいの分布が中央に集まる
    • 次の項(再構成誤差): デコーダのと元のの比較の項
      • 二乗誤差で代替するか、バイナリクロスエントロピー(次ページ)を用いる
ロボットビジョン第4回

バイナリクロスエントロピー(BCE)(雑な補足)

  • 画像(データ)の画素値(データの各値)が2値か、からの間に正規化されている場合に用いる(本来は2値用)
  • ある画素のBCE:
    • の中がになるときはその項をに
  • 全体のBCE:
ロボットビジョン第4回

例

ロボットビジョン第4回

Denoising Diffusion Probabilistic Models(DDPM)[Ho+ 2020]

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

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

  • 同じ次元の空間での変換をする
  • 拡散過程: をガウス分布に近づけていくこと
    • 雑音を加えていく=特徴のないガウス分布にしていく
    • 注意: エンコーダはなく、雑音を加えた訓練画像を人が準備
  • 逆拡散過程: からを取り出してのどこかに写像
    • デコーダを訓練

ロボットビジョン第4回

DDPMの学習方法(概要)

  • 注意: デコーダしか学習しない
    • [Ho+ 2020]のデコーダはU-Netベースのもの
  • 訓練画像を集め、拡散過程を計算するプログラムを準備
    • いつでも回雑音を加えた画像を作れるようにしておく
  • デコーダに時刻の画像から時刻の画像を復元させる()
    • 時刻の画像と時刻を入力出力を当該の訓練画像と比較(2乗誤差)

ロボットビジョン第4回

拡散過程の計算

  • 学習データ: 様々な画像を準備
  • 拡散させかたの定義
    • 各画素にガウス分布にしたがうノイズを付加
        • : の任意の画素
        • : 拡散率(原著ではまでにからまで線形に増加)
  • 上の定義から任意の段階の雑音画像を作れる
    (のでDDPMが実用できる)
      • 、
ロボットビジョン第4回

デコーダが何を学習するか

  • 各訓練画像に対して、次の条件付き逆拡散過程を学習(補足2参照のこと)

      • 入力にを少し混ぜると雑音がちょっと取れる、という過程
    • 数値で具体的に分布が求まっているので既知の過程を学習することに
  • 全体では条件のない逆拡散過程を学習
    • 上の条件付き逆拡散過程の重ね合わせ
  • 注意: 実際のデコーダはではなく、との差分(ノイズ)を出力するように実装される(補足2参照のこと)
ロボットビジョン第4回

例

ロボットビジョン第4回

Flow matching(FM)[Lipman 2022]

  • 拡散モデルとは別のアプローチで分布の変換を実現
  • 拡散モデル(下図。再掲)
    • 訓練画像の分布をガウス分布に変換・逆変換
      • 変換にはノイズを乗せていく方法が取られた
  • FM: 別にノイズを乗せなくても砂山のように変形していけばいいんじゃないか?
    • ただし、任意の時刻のノイズ画像を生成しないと学習できない

ロボットビジョン第4回

FMのアイデア

  • ガウス分布と画像の分布など意味のある分布の相互変換
    • ベクトル場()で考える(注意: DDPMと時刻の流れが逆)
      • 各時刻で分布をひっぱる速度場を仮定
    • このベクトル場を再現する関数(=デコーダ)をANNが学習
    • との差(2乗誤差)を損失関数に
  • 問題としては最適輸送問題をANNに解かせることに
    • 最適輸送問題: 分布(砂山)を一番楽な方法で変形する問題
ロボットビジョン第4回

問題の分解: 条件つきフローマッチング

  • 拡散モデル同様、途中のベクトル場が必要
    • 分布全体で考えると難しい
      条件付き逆拡散過程と同じように考える
    • 各訓練画像の条件付きフローの足し算
      全体のフローに
      • なんでそう考えられるかは補足3に
      • 直観的には拡散モデルと同じ
  • 1回(ある訓練データ、時刻)のの学習:
    • にしたがってベクトル場を求め、がそれを真似るようにパラメータ変更
ロボットビジョン第4回

最適輸送問題の解に基づく実装(1/2)(導出は補足3参照のこと)

(注意: 他の実装方法もある)

  • この図のような一番素直なフローで分布を移したい最適輸送問題
  • ベタにガウス分布を最適輸送で移す
    • ガウス分布:
  • 問題がこのように簡単に
    • 次ページ
ロボットビジョン第4回

最適輸送問題の解に基づく実装(2/2)

  • 損失関数:
    • ここで
      • : の分布(標準正規分布)からドローされた点
      • : ある訓練画像
      • : を選んだ時の時刻のの位置
      • : のお手本のベクトル場
  • つまり、ある訓練画像を選び、次にとをそれぞれ一様分布、標準正規分布から選んでを学習していくとデコーダが学習できる
ロボットビジョン第4回

FMでできること

  • [Lipman 2022]の図1、6、11〜
    • アルゴリズムの説明のための図だけど図4も面白い
  • Stable Diffusion 3
  • ロボットの制御
  • 補足
    • 最適輸送の場合しか説明しませんでしたが、他にもいろいろ設計の余地があります
ロボットビジョン第4回

まとめ

  • 様々な生成方法
    • 敵対的生成ネットワーク(GAN)
    • オートエンコーダ
    • 変分オートエンコーダと拡散モデル確率分布の利用
      • 背後に統計
  • VAE、拡散モデル、フローマッチング
    • 画像以外にも様々な応用
    • VAEについてはエンコーダが記憶のモデルでもあり重要
ロボットビジョン第4回

補足1: VAEの損失関数の求め方

  • やりたいこと: デコーダの分布が訓練データの背景にある分布をよく表すように
    • 周辺尤度の対数を最大化したい
      • つまり訓練データのあるところの確率を高くしたい
  • ここで、ひとつの入力に対して計算するとたぶんこうなる(要確認)
    (論文の(1))
    • 右辺第一項のは0以上で、学習が進む(一致する)と0になる
    • 右辺第二項のは変分下界
      • ---(3)
  • 変分下界を大きくすることが学習に(変分推論の技法)
ロボットビジョン第4回

VAEのエンコーダからの期待値計算

  • エンコーダの入出力を次のようにモデル化
    • with ---(4)
      • VAEのエンコーダはこの構造
  • これで任意の関数の期待値がサンプリングで計算可能に
    • ---(5)
      • : 回目にドローされた雑音
ロボットビジョン第4回

ミニバッチ版の変分下界

  • (3)の変分下界から
    • ---(7)
      • ここで
  • ミニバッチ版(を大きくとればで済む)

    • ---(8)
      • ここで
ロボットビジョン第4回

(8)の意味

  • 再掲
  • 右辺のの中
    • 第2項: デコーダの出力が入力と一致すると大きく
    • 第1項: を決めた分布に一致させる正則化項
      • : 標準正規分布などと決めてよい
      • (8)式中の2つの分布は一致しないが、バッチから得られるが決めた分布に従うとの合計が小さく
ロボットビジョン第4回

正則化項の計算(論文の付録B。論文の添字まちがってる疑惑)

  • 各項を計算
  • したがって正則化項:

これで本編で触れた評価関数に

ロボットビジョン第4回

ボツ式(VAEで使わないのに論文に書いてあるやつ)

  • 変分下界 ---(2)
  • (2)から
    • ---(6)
ロボットビジョン第4回

補足2: DDPMの学習方法(詳細: 損失関数とデコーダの求め方)

参考: 原著と @iitachi_tdse 氏の記事

  • 準備: 条件付き逆拡散過程の計算
    • (画像に関する逆拡散過程)を求める
    • (ベイズの定理)
      (余計な条件の除去)
      • (順方向の)拡散過程の掛け算に
    • (論文の(6))
      • ---(7-1)
      • ---(7-2)数値で具体的に分布が求まる
ロボットビジョン第4回

デコーダに何をさせるか

  • 少なくとも各訓練データに対して式(6)をしっかり再現させる
    • 式(7-1)のように雑音をとっていく
  • 全体ではデコーダの出力の分布を訓練データの分布に合わせる
    • を最小化
      • VAEのときと符号と最大/最小化が入れ替わってるだけで同じ
    • VAEと同様に変分下界にをかけた値を最小化
ロボットビジョン第4回

評価関数の計算

(変分下界の導出は省略。@iitachi_tdse 氏の記事にあり)

  • 1つの訓練画像あたりの変分下界の値:
    • (無視してよい)
    • (式(6)の再現)
    • (訓練画像と生成された画像の比較。VAEの式(8)の第2項と同じ)
  • 最後のノイズ除去は、途中のノイズ除去はを最小化するように評価
ロボットビジョン第4回

の簡略化

  • デコーダでの逆拡散過程について、分散を学習対象外に
      • : 雑音の混ざった画像と時刻を入力すると、
        雑音が除去された画像の平均値を出力
        • 平均値じゃないが欲しければ、雑音を足してやると良い
  • こうなるとと式(7-1)のを比べればいいやということになる
    • をKLダイバージェンスから画像の画素値の違いの2乗(つまり分散)の比較に書き直し(たぶん真面目に計算してもこうなる)
        • : L2ノルム(ここでは画素の差の2乗値の総和)
ロボットビジョン第4回

をノイズの比較の損失関数に/デコーダをノイズの推定器に(1/2)

  • 時刻の訓練の入力は拡散過程の計算式から
    • with
  • 上の2式をの式に代入すると(メモ: 手計算で未検証)

      • やったこと: 上の式を使い関数の引数以外のを消す/式(7-1)を適用
  • は実際に入力される画像なので関数の形で表さなくて良いので
  • も次のように解釈(これも手計算で要確認)
      • (画像に乗った雑音の量)をデコーダに推定させる
ロボットビジョン第4回

をノイズの比較の損失関数に/デコーダをノイズの推定器に(2/2)


  • DDPMではと簡略化してデコーダに学習させる
  • 以上の変換で、デコーダは画像に乗った雑音の量を推定するもので置き換え可能
    • その方が学習に有利(とのこと)
    • 画像は雑音の推定量をノイズ画像から引けば作れる
ロボットビジョン第4回

補足3: フローマッチングの学習方法の導出

  • 準備: 訓練データの条件付きの式と条件のない式の関係の導出
    • 時刻の分布
      • ---論文の式(6)
        • : 訓練データの分布
      • 考え方的には(: 訓練データ)
    • 速度場(学習の対象)
      • ---(8の前段階の式)
        • ある時刻、ある場所のでの速度は、がどの訓練データへ流れ着く点なのかで決まる(確率的に)
          • : 「が点の速度に与える影響の割合」と解釈
ロボットビジョン第4回

式(8)の導出と解釈

  • ---(8)
    • ベイズの定理を使い、を代入
    • 論文の(8)にあるは使わない
      • ととをサンプリングして平均するとが求まる
        サンプリングとを使ってを学習していく
  • (8)に基づく学習に必要なこと
    • は特に決まってないので設計が必要
ロボットビジョン第4回

との動き(フロー)の設計

  • ベタにガウス分布で ---(10)
    • スタート: 、
    • ゴール: 、
  • さらに、この分布の遷移の中での点の動き(フロー)を次のように限定
    • ---(11)
      • 分布の動きを定義しても、ともに動く点の動きは定まらないのでこの仮定が必要
  • : 実はではなく時間の関数(もも)
    • を決めるとの動きの関数となる
ロボットビジョン第4回

の計算と最適輸送による確定

  • 次のように簡単に考える(最適輸送問題を解くとこうなるらしい)

論文には難しい式がたくさん書いてあるけどこれでよし

ロボットビジョン第4回

損失関数の確定

  • をからサンプリングする代わりにでよい


  • ---(23)

    • 以下を使用
      • (上式のはのこと)
  • つまり、ある訓練画像を選び、次にとをそれぞれ一様分布、標準正規分布から選んでを学習していくとデコーダが学習できる

ロボットビジョン第4回