Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
深層学習をつかった画像スタイル変換の話と今までの歴史
Search
Ringa_hyj
November 21, 2020
Science
0
360
深層学習をつかった画像スタイル変換の話と今までの歴史
深層学習をつかった画像スタイル変換の話と今までの歴史
VGG,生成モデル
Ringa_hyj
November 21, 2020
Tweet
Share
More Decks by Ringa_hyj
See All by Ringa_hyj
Catching up with the tidymodels.[Japan.R 2021 LT]
ringa_hyj
3
780
多次元尺度法MDS
ringa_hyj
0
230
因子分析(仮)
ringa_hyj
0
110
階層、非階層クラスタリング
ringa_hyj
0
84
tidymodels紹介「モデリング過程料理で表現できる説」
ringa_hyj
0
380
正準相関分析(仮)
ringa_hyj
0
92
対応分析
ringa_hyj
0
110
2020-11-15-第1回-統計学勉強会
ringa_hyj
0
690
生成モデルの今までと異常検知への応用(GAN,anoGAN,ganomaly,efficient,skip))
ringa_hyj
2
2.3k
Other Decks in Science
See All in Science
Celebrate UTIG: Staff and Student Awards 2024
utig
0
430
Machine Learning for Materials (Lecture 5)
aronwalsh
0
660
プロダクト開発を通して学んだナレッジマネジメントの哲学
sonod
0
140
2024-06-16-pydata_london
sofievl
0
510
拡散モデルの概要 −§2. スコアベースモデルについて−
nearme_tech
PRO
0
510
ABEMAの効果検証事例〜効果の異質性を考える〜
s1ok69oo
4
2k
(2024) Livres, Femmes et Math
mansuy
0
100
いまAI組織が求める企画開発エンジニアとは?
roadroller
2
1.3k
Machine Learning for Materials (Lecture 2)
aronwalsh
0
710
拡散モデルの原理紹介
brainpadpr
3
4.6k
ベイズのはなし
techmathproject
0
270
多次元展開法を用いた 多値バイクラスタリング モデルの提案
kosugitti
0
190
Featured
See All Featured
Fontdeck: Realign not Redesign
paulrobertlloyd
81
5.2k
Building Adaptive Systems
keathley
38
2.2k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
9
680
Gamification - CAS2011
davidbonilla
80
5k
StorybookのUI Testing Handbookを読んだ
zakiyama
26
5.2k
Happy Clients
brianwarren
97
6.7k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
364
22k
Automating Front-end Workflow
addyosmani
1365
200k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
14
1.9k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
27
4.2k
GraphQLの誤解/rethinking-graphql
sonatard
66
9.9k
Adopting Sorbet at Scale
ufuk
73
9k
Transcript
深層学習でスタイル転移
古い時代のスタイル変換の話 テクスチャを張り合わせ、滑らかに縫い合わせる image quilting (命名) 滑らかに繋げない部分には適合できない??
これからの話よりも分かりやすいです https://www.youtube.com/watch?v=VQEMptfWpLk
概要 物体認識の畳み込みネットワークから得られる特徴空間から、テクスチャを取り出すことができたよ 精度の良い識別器は画像に写っている構造物や背景の線を分離して捉えたりしているんだよ (フィルタの可視化参照) 自然画像の特徴を捉えることができた 人間がテクスチャか自然画像か見分けられなかったら勝ちでしょ 今までのテクスチャ抽出とはランダムな箇所をサンプリングしてつなぎ合わせていた 対照的にこのアプローチは元画像のテクスチャ構造に近づける方法でアプローチしたんだよ
テクスチャはガボールフィルタにとても似ているよ ガボールフィルタは哺乳類の視覚野を模しているようなものだからね。 ヒトが視覚している活動に近いんだよ でもフィルタ(線形フィルタ)を使ったアプローチでは自然画像の特徴をとらえきれなかったんだよ 畳み込みネットワークはフィルタも学習していくよ その処理の中で自然画像のテクスチャ構造が捉えられそうなことに気づいたよ 今回はVGG19を例にとって話すよ
VGGの詳しい話は無しだよ 3*3*k のサイズのフィルタを使うよ kは入力特徴量マップの数だよ ストライドとパディングを入力次元と一致するように行うよ 2*2の領域でmax poolするよ(averageの方が明快な画像に改善するよ) 特徴マップを2倍ダウンサンプリングしているんだよ 今回は畳み込み層だけ使っているから入力画像の大きさは任意にできるよ 最初の畳み込み層は入力画像と同じサイズを持つよ
左がCNNに通していったときの出力 テクスチャと、 ノイズから出力した層の値のグラム行列を元に その差分である二乗損失を偏微分して誤差逆伝播で ノイズ画像を最適化していく ノイズをCNNに通した時のグラム行列が徐々に元 テクスチャと似ていく
今回はネットワークの重みが1になるようスケールしているよ ちなみにここからのテクスチャ抽出の話は が根底にいるよ 簡単に言うと テクスチャ生成のために異なるサイズの特徴量を抽出しておく あとは差分を近づける この文献では抽出に線形フィルタを用いているが、 本論文ではdeep NNと、ネットワーク各層の相関関係を使っているのが新しいポイントだよ
CNNを通過させ、ネットワークのレイヤーの活性化を計算する ネットワークのレイヤたちは非線形のフィルタにかけられた、と考えられるので、 画像に対する活性化は特徴マップである(いわゆる出力) レイヤLがN個の異なるフィルタを持つなら、特徴マップを N個持つ これら特徴マップはFとして呼ぶ Fの中にはレイヤLの位置Kにおけるj番目のフィルタの活性化が入力されている 要約統計量は特徴マップ内の空間情報を破棄する 相関関係はグラム行列として表現することができ、特徴マップと層lの内積である 元画像も、入力画像もどちらもグラム行列を求め、これを二乗誤差最小化で近づける
(画像というものを高次元の特徴量空間上での点だと考えるならば内積は相関を表す分散共分散行列である) その相関行列が近くになれば、似た画像特徴量を得る
グラム行列の二乗誤差を計算するときは、次のような損失だよ(4層つかうから) そして全体の損失は各層に重みをかけて考えるよ。加重和だよ。 結果の更新にどの層の寄与度を強くするかだね そして全体の損失は各層に重みをかけて考えるよ。加重和だよ。 結果の更新にどの層の寄与度を強くするかだね
各層のグラム行列の二乗誤差は偏微分可能だよ。 解析的に求まるから安心だね。 よって誤差逆伝播で近づけていけるよ。 L-BFGSを最適化手法として採用しているけど、これは高次元の最適化問題に適していると考えたからだよ この手法は基本的には重みを固定した複雑なネットワークの順伝播と、 その中間層の出力の最適化だけだよ 従って一般的なCNNの訓練環境であるGPUとかがあれば問題なく動作できるよ。
4種類の画像セットからテクスチャを取り出した話 一行目のconv1は一層目の表現から生成されたものです 二行目はconv1と2とpool1のテクスチャ表現を組み合わせている このようにテクスチャモデルが段階的に深層になっていくと、 どんなフィルタになるのかを理解してもらえたでしょうか pool4の行は 1~4のすべてを組み合わせている ここまで組み合わせると元画像を同じような画像になる 深い層の重みを無視しようとするとconv1のように構造は消える レイヤ数が増えるほどテクスチャは一致しやすくなる
ただし、元のテクスチャの影響が強く出すぎるためにpool4まで の出力に抑えている グラム行列を使わなかったportillaたちのコードでは一番下のよう になる imagenetのネットワークをつかい、 テクスチャだけでない画像からテクスチャを取り出す方法も紹介します 一番右、4列目
局所的な情報(テクスチャとして抽出したい対象) を保持しながら、 全体の構造を無視する(構造を気にせずテクスチャ化する) という方法ができました Nlの特徴マップとはNl * (Nl + 1)/2 のパラメタになります
pool4まで利用すると約852000のパラメタです しかし、パラメタが増えてもそんなに大きく改善はしていないのです そこで各層の特徴マップを主成分分析して減らしてからグラム行列にしてもいいでしょう 64の特徴量まで主成分分析をすることで二列目10Kのように現象させることができました 平均値だけ使用してグラム行列にすると一列目のようになります パラメタ削減は可能です どの程度まで削減可能かは研究対象であり次回以降のテーマです ただし、規則的な画像に対して(レンガの壁)パラメタを減らすと失敗します
小さなフィルタを持つVGGはテクスチャを補足するのに適しているようです alexnetではテクスチャの抽出があまり上手ではなかった その問題点とは ・構造が一致しない(二行目右、conv_5画像) ・テクスチャ上に網目構造が表示されてしまう(二列目全体) 使用するCNNネットワークの構造にも依存することが分かった VGGの構造でも重みをランダムにするネットワークでは失敗する(三行目)
imagenetの入力画像をgrammatrixにしました VGGの各層の出力を線形判別機にかけた結果と 層の出力をグラム行列にして判別機にかけた結果です 精度向上はこの場合無視しています gramでも、元のVGG表現でも、 特徴マップは層を深くするほどに分類精度に影響 を与えることがわかる フィルターとは等間隔でずらしていった結果であり、 特徴マップには空間情報が含まれていないはず そのため、空間情報は別の何かで伝わっているのだろう
似た画像を同じ結果として物体認識する理由は未だに理解できない
特徴マップのグラム行列を計算し、 DNNの出力を使うことで、 CNNからの一様なパターンを抽出できた フィッシャーベクトルを使い物体認識や場面判別が可能となっている 我々の結果でも深い層の畳み込み層をフィッシャーベクトルとして入力するこ とで、自然な質感が得られている テクスチャを抽出することが目的であるので、グラム行列を物体認識では評価 していないが、良い特徴量空間の表現であると考える
https://towardsdatascience.com/neural-networks-intuitions-2-dot-product-gram-matrix-and-neural- style-transfer-5d39653e7916 グラム行列の話 内積ってベクトルの向きの近さの話なんです 同じ方向向いていれば何となく似た画像になりそうですよね 高次元の特徴量ですしおすし 余談 ・グラム行列(分散共分散)がスタイルとしての性質を持つな ら、出力平均はコンテンツを持つのでは? ・そしてもっとスタイルに向いた特徴もあるはず。しかし効
率がいいしうまくスタイルを取り出してくれるのでコレ
本題 もとい
テクスチャの目標や、構造の目標に対して最適化していく方法 目標はVGGの中間の層 簡単に
畳み込みは深い層ほど細かいピクセルを見ないが 何を見ているかという構造を示す (オブジェクトと配置 = content) 浅い層はピクセル値は詳細な出力が得られるが フィルタは細かい線や曲線しか抽出しない (style) スタイル(テクスチャ抽出)は前回紹介した グラム行列を近づけるのであった
全体の構造を簡単に説明 ノイズ画像からテクスチャを生成する 左側の構造は既に紹介済 スタイル画像aのVGG中間層の出力 のグラム行列A と ノイズを通した出力 のグラム行列G を近づける(相関を高める)
全体の構造を簡単に説明 コンテンツ画像の 深い層の出力は構造を学習しているので、この構造以外にスタイル を適応させたらいい ノイズの中に構造を作り出す(二乗損失) (CNN可視化参照)
復習になるが グラム行列を 各層の二乗損失に使い その加重和を スタイルの損失とする これは解析的に求まるので 誤差逆伝播で最適化できる
構造は CNNの深い層の捉えてている構造を差分とする スタイルのように曖昧なものを学習させるのでなく 明確に映っているものを模写する必要があるので グラム行列でなく二乗損失 これは解析的に求まるので 誤差逆伝播で最適化できる https://www.youtube.com/watch?v=AgkfIQ4IGaM http://yosinski.com/deepvis
あらふしぎ 構造物が残り、テクスチャが反映された
構造とスタイルをどれだけ調和させるかは 重みを使って調整する スタイルの方を重視すると左上 構造が消える 構造を重視すると右下 空や川が残る
コンテンツの一致させる対象を浅い層にすると 構造は明確に残り幻想的なぼやけはなくなる 色が上からスタイルによって塗られたような画像になる
スタートの入力はノイズという話だったが スタイル画像やコンテンツ画像から 最適化して合わせていった場合どうなるか A コンテンツ B スタイル C以降 異なるホワイトノイズ 入力による違いはあまり見えない
ノイズを変えるだけで画像の出来が全く変わる 逆に 入力が固定画像であれば決定論的に一定の画像へと収束する
一枚一枚最適化していくの遅くね? テクスチャをノイズの一貫として乗っけてくれる生成モデル作ろうや って話 ピクセル(画素)に関する損失の最適化でなく、別の損失を考えることで視覚的にもよくなった
画像変換ネットワーク 入力画像x を 画像y hat へと変換 学習時にはy hatとyの損失を元に学習を行う (スタイル変換の教師 yは難しい)
損失ネットワーク 重み固定
Gatyらはこれをgram 行列で定義していた。C*Cの行列である ちなみにグラム行列はCj * HjWhjで計算するのが計算が効率的 グラム行列のノルムを最小化 (二乗フロベニウスノルム , ヒルベルト空間上でユークリッド距離のようなもの。内積。) 損失ネットワークのfeature
(content) gatyらはL2ノルムの最小化によって、 深い層から得られる画素の一致を目指した 特徴マップのサイズはCHWである 再構成損失は二乗損失である
MS COCO datasets target
実行時間の差 事前にネットワークをつくるので圧倒的に実行速度がはやい
性能比較のためにgatyらの使っている手法の出力と比べることにする 訓練ネットワークから出力される y hat は以下の式から得られる 空間平滑性を高めるために特徴反転や超解像技術を参考に全変動正則化器 TV を導入する (TVについては超解像技術の分野で有名なので調べるならその文脈で) あとは
入力xからの出力であるホワイトノイズyをVGGによりスタイル画像へ変換して スタイル画像とXとの差をもとに、L-BFGSで生成ネットワークを最適化する
500回の最適化くらいから収束することがわかる gaty ではVGGの損失を前方にも後方にも伝播するので時間がかかる
画像自体も似た結果を示している 実行時間の差からもこの手法の有益性がわかる
超解像についても適応できるらしいが興味がないのでpass
None
生成ネットワークを改善したら大変に良くなったぜ ・バッチ正規化をインスタンス正規化にする ・juleszアンサンブルの考えにより偏りのない生成器をつくること https://www.youtube.com/watch?v=Br9rySL7GbE
https://docs.google.com/presentation/d/0B_- hq6gL70bUdDBCUHVJWVlWWjQ/edit#slide=id.p6 論文読むための前提知識をまず説明 生成モデルとはノイズから画像をつくる GANやVAE そもそも画像とは、神のみぞしる分布からゆらぎを持って サンプリングされた数値たちの集合である という考え。 手元の画像Xも背景にはp(X)があり このp(X)はわからないので
g(z)でxのサンプリング経路を近似する ※GANのgeneratorには学習対象画像が複数必要であり、今回 のように対象が1つくらいしかないものには使えない
論文読むための前提知識をまず説明 GANを代表に話すが、生成モデルの学習とは大変に難しい 最少化をしようにも目的関数が非凸であって最適化できなかったり、 収束の約束ができない目的関数であったりする 最適化するというよりも一様にサンプリングして小さい所さがそう (正規分布のホワイトノイズでなく一様分布によるノイズ) 非凸であり大域的最小が見つけられないだろうという仮定から一様でサンプリングしていると思われる さらにジェネレータに見られるモード崩壊も防げる?
論文読むための前提知識をまず説明 訓練によって得られたジェネレータは伝播するだけで出力が得られるので処理が速い ここで重要なのが訓練サンプルだけを出力するような生成器だと使えないということ 正則化で一般化性能を高めたい この生成器ではテクスチャだけを生成するモデルができる
テクスチャだけ作ってもスタイル変換はできない 元画像も同時に入れ込むことで、元画像との損失とテクスチャ生成のどちらも考慮した 生成器が出来上がる(VGGからは変わらずテクスチャを返してもらう) 生成器はコンテンツとの差分を最小化するのでなく、自然画像そのものとのトレードオフを 気にするようになる
ネットワーク中にインスタンス正規化を加え、実行時にも保持する。特徴マップに対して。 (バッチ毎に規格化を行うの処理でなく、正規化のパラメタも含めて固定)
標準正規分布から得られたε εをジェネレータに入れてzをつくる zはq(z)から得られると考える Z~q(z) q(z)は手元の画像の出てきたp(x)の近似である p(x)の推定をしたいなら、損失関数に対する負の対数尤度を最尤推定したらええ これをp(x) hat そして、z全体ははp(x)hatの積分によって得られる Z~p(x)
hat 真のp(x)は p(x) hat をZで周辺化した値である(Zが積分なら周辺化したらp(x)hatだけになるのは当然) 変分ベイズの考え どうやって近似していくかといえばKLダイバージェンスの最小化 VAEと目指すところは同じ https://bayesgroup.github.io/bmml_sem/2016/style.pdf
モンテカルロ法によってノイズから生成器を通って産み出された画像が、 目的の画像に近くなるような場合を採択していく 一様分布の近い値を取っていくようになるのかな
None
入力画像xに対して、別の画像x0のスタイルを移したい。そしてコンテンツxtの構造物も移したい そんなジェネレータgを学習することで高速化が可能 zはノイズ N(0,1)である。 しかし、問題は事前にネットワークを学習することで、学習内容を過学習してスタイル変換がうまくいか なくなることがわかっている。 取れる最善手は少数画像による学習と早期停止である 問題の一端として、コンテンツ画像からスタイルを抽出してしまえるのが問題
テクスチャはジェネレータにより生成される iidなホワイトノイズからテクスチャ画像xを作る x = g(z) 生成画像xの分布はq(X)から取り出されるもの (GANやVAEとおなじ考え) 標的とするテクスチャの分布がp(x)である 生成器の目標はq(x)をp(x)に近づけること p(x)とは人間が知りえないものであり、最適化もできない
juleszアンサンブル を 一様サンプリングを行う 複数フィルタの平均的な応答反応を比べ、テクスチャが異なっているかを発見する juleszアンサンブルとは? 画像x F フィルタ x : Ω→R3 Ωは1~H ×1~H F:χxΩ→R,l 画像のFl応答 損失はL(x) = 平均の差 μl(x) – μl
コントラストの正規化 バッチ正規化 バッチをインスタンス正規化 インスタンスで平均や分散を固定することで バッチごとに変化することを防ぐ (学習時に統計量の計算の必要もなくなる) ここで作られたインスタンス正規化は画像生成時にもそのまま使われる
Julesz ensemble ジュールズアンサンブルの分布 画像を入れた時のフィルタの出力平均の変化 この式からのサンプリングは困難 よって最適化問題を解く xはテクスチャ画像 画像の分布
VGGフィルタからスタイルが抽出されることは知られており、 Gatyらのスタイルロス L(X) を採用する グラム行列を近づける テクスチャ μ がコンテンツ画像 x0 の上に描かれる
深いフィルタの応答を近づけることによる L cont() ノイズzから画像が生まれると考えg(z)を学習する g(z)は、テクスチャとコンテンツを最小にすることで 学習
None
https://www.youtube.com/watch?v=mRIRK8daOl8
None