スタイル変換系論文サーベイ(1)
画像変換、特にStyle変換の論文を読んでまとめていく。随時追記。
A Neural Algorithm of Artistic Style
URL
https://arxiv.org/abs/1508.06576
発表月
2015/8
どんなもの?
・NNをスタイル転写に用いることができることを初めて示した論文。
先行研究に比べて良い点
類似の専攻研究への参照なし
技術・手法のキモ
・学習済みVGG19のパラメータを固定、スタイル画像とコンテンツ入力画像を入力とし、下記の損失関数を最小化するようにホワイトノイズを入力Backpropにより修正していく
モデルと損失
・NNの構成 VGG19をコンテンツ画像、スタイル画像、生成画像に対して利用
・損失の構成 コンテンツ損失: コンテンツ画像と生成画像のあるl層での特徴量の二乗和
スタイル損失: 2つの行列の相関関係を表すグラム行列
を考え、スタイル画像と生成画像それぞれのグラム行列の二乗平均誤差を
(Gはスタイル画像のグラム行列、Aは生成画像のグラム行列) とする。この E_l の各層での重み付き和をスタイル誤差とする
これら2つの誤差の重み付き和
を最小化の対象とする。
有効性検証の方法
- ( 定量的な方法ではなく、様々な画像のスタイル変換を示すことにより)
議論/留意点
・スタイル適用済み画像を生成するためにNNの訓練と同様にBackpropを要するため、非常に時間がかかる
・最適化手法、重み付け方等で様々な改善が後に提案されている
不明点・分からなかったこと
特になし
Perceptual Losses for Real-Time Style Transfer and Super-Resolution
URL
https://arxiv.org/abs/1603.08155
発表月
2016/3
どんなもの?
・A Neural Algorithm of Artistic Styleが提案したスタイル変換をfeed forwardネットワークによりリアルタイムで実施する方法を提案
・超解像度等の画像変換タスクでも従来の"per-pixel"損失を設定した研究に比べ感覚的によりよい結果を得られた
先行研究に比べて良い点
・Semantic SegmentationやDepth Mappingなどの画像変換タスクではピクセルごとの損失(Per Pixel Loss)やCRF Lossを用いていているが、groud-truthとアウトプットの間の「感覚的な(perceptual)」違いを捉えることはできていなかった。
・Gatysらは知覚に沿った損失(Perceptual Loss)を設定し直感的に優れたスタイル変換を達成したが、Backpropにより画像を変換するため生成に時間がかかる
=> 本研究では、両者の良いところを兼ね備えた
- (Per-PixelやCRFでは不可能な) 感覚的な違いを捉えることができ
- feed-forwardにより素早い変換が可能な
手法を提案している
技術・手法のキモ
・画像クラス識別用に事前訓練されたCNNが感覚的/意味的な情報を抽出できることを活かして、損失関数の計算に用いる。(ImageNet訓練済みVGG16)(この点は先行研究と同様)
・直接styleやcontentをpixel単位で比較するのではなく、損失計算用NNのそれぞれの層の出力を比較して損失を計算し、Feed ForwardなNNを訓練する
モデルと損失
モデルの全体構成
上記NNで、 x: 入力画像 y_s: スタイル画像 y^: xをƒwによって変換した画像 y_c: コンテンツ画像 とする。(スタイル変換では、xとy_cに変換したい画像を、y_sにスタイル対象の画像を入力する)
そして、各層で計算された損失の期待値を最小化するƒの重みWを訓練によって獲得する。
- ƒwの構成: Deep Residual Learning for Image RecognitionでResidual Deep CNNを5層重ねて構成する。
- Encoderとして残差付きConvolutionを用いる
- Decoderとして残差付きfractionally strided convolutions(=Deconv)を用いる
- pooling層は用いない
- 非線形関数にはReLUを用いる。
- ただし出力層にはtanhを用いる(0~255の範囲に出力を限定するため)
損失
特徴再現損失:
(ここではyはy_c)
スタイル再現損失: グラム行列
に対して、
をスタイル再現損失とする。(ここではyはy_s)
これらの重み付き和を最小化する。
上記の他にも、論文内で超解像度への適用も行っているが、ここでは省略。 有効性検証の方法 ・定量的にはGatysらの手法に対して、目的関数の差がほぼ同じオーダーに収まることを示した
・また、変換速度についてはGatysらの手法に比べて1000倍近く早いことを示している。 ・定性的には、MS COCOの各種画像をstyle変換した結果を示している。
議論/留意点
・一つのスタイルに対して一つのƒwの訓練を要する ・スタイル変換以外にも超解像度にも適用可能(着彩やsemantic segmentationはfuture workとしている) ・別のデータセットやタスクで訓練された損失計算NNを用いることで、また異なった意味もった生成を行える可能性もある
不明点・分からなかったこと
次に読むべき論文
Let there be Color!: Joint End-to-end Learning of Global and Local Image Priorsfor Automatic Image Colorization with Simultaneous Classification
URL
http://www.f.waseda.jp/hfs/colorization_sig2016.pdf
発表月
2016/7
どんなもの?
- 白黒の写真画像を自動的に着彩する
- 融合層("fusion layer")を導入したことにより、小さな画像に依存する局所的な情報と画像全体から算出される大域的な事前分布をうまく同時に考慮し、既存手法より自然な着彩が可能
- どのような解像度の画像でも着彩可能
先行研究に比べて良い点
- 全体的(global)な情報と部分的(local)な情報を両方考慮したEnd-to-Endな自動着彩(人手による指定一切不要)
- どんな大きさ(解像度)の画像でも処理できる / ラベルを学習に用いることが出来る
技術・手法のキモ
- Globalな特徴を抽出するネットワーク、Localな特徴を抽出するネットワークで別々に画像から特徴を抽出し、それらの結果を融合させるFusion Layer
- Pooling層、FC層を使わないFully Convolutionalな構成(global feature network以外)
- global featureとラベル識別を同時に並行して訓練する訓練手法
モデルと損失
モデル:
- Low Level Feature Network(紫)
Convolution層のみからなる。Global Featureの抽出の入力としても同じ重みのNWを利用する。
f:id:mizti:20180121210600p:plain、以下同じ)
- Global Feature Network(茶色)
ConvとFCからなる。FCを含むため、入力サイズを確定させておく必要があり、このためGlobalへの入力を生成するLow-Levelへの入力画像は224x224にリサイズしておく。
- Mid-Level Feature Network(青色)
Convのみからなる。
- Fusion Layer(赤点線)
Global層の出力と、Mid層の出力を結合したものを入力として1層のFCを適用
<= 重要
- Colorization Netowrk(緑色)
Deconvolutionを使わず、ConvolutionとUpsampling(Nearest Neighbor)のみからなるデコーダ。
画像はLabカラー形式で扱っているため、L(明度≒モノクロ)を入力とし、出力はaとb*となる。
Batch Normalizationは訓練時のみ適用、訓練終了後は重みに繰り込み
活性化関数はReLU, 最終層はSigmoid
損失:
画像の着彩誤差と同時にラベル識別誤差を足す。
y_colorは二乗和平均(MSE)、y_classはクロスエントロピー (双方が同じ程度の影響になるように、α=1/300程度で設定) (|| ||はフロベニウスノルムの意)
訓練:
最適化アルゴリズムはADADELTAを採用。233万枚の訓練画像をバッチサイズ128で20万イテレーション(11epoch)。256x256にリサイズした画像から毎回224x224でクロップ、50%で左右反転。
有効性検証の方法
・SotAな手法(Cheng2015)、Global Feature無しの着彩、提案手法の3点で着彩を行い、ユーザによる「自然に見える」割合を調査
議論/留意点
- Global Featureのみを別の画像を入力とすることで、全体的なスタイルの転移が可能 (ただし、Semanticにある程度共通点のある画像であることが必要)
- RGB、Lab、YUVの各表色系を比較し、Labが一番良さそうということで採用
- 訓練データにまったく含まれないようなタイプの画像(人の描いたものなど)は上手く着彩できない
不明点・分からなかったこと
- 「Batch Normalizationは訓練時のみ適用、訓練終了後は重みに繰り込み」の具体的な方法