【論文解説】Enhancing photorealism enhancement - ゲーム画像を現実画像へ変換する -
"Enhancing photorealism enhancement"という腹痛が痛いみたいなタイトルの論文が投稿され,画像生成の分野で話題を呼んでいるようです.
[2105.04619] Enhancing Photorealism Enhancement
まずはこのデモ動画を見てどんな技術か見てみてください. GTA(ゲーム)の画像がリアルな画像に変換されている様子が見れると思います.
生成された映像はほとんどリアルと区別がつかないように.
この画像生成はこの工夫でこのような性能を達成しています.
ゲームのレンダリングに使われる中間情報を補助情報としてうまく使う
生成された画像と元画像の一貫性を保つ
パッチごとの学習で安定化
この論文では,ただ追加の情報を使って精度を向上させているのではなく,追加情報をうまく埋め込む方法について言及しているため,非常に参考になります.
まずは,手法の全体像を見て,そこから各工夫をひとつずつ紹介していきたいと思います.
生成モデルの大枠
大枠としては一般的なGANのモデルと変わりません.
ゲーム内でレンダリングされた画像である「Rendered image」を入力として,リアルな画像風に変換した「Enhanced image」を出力するGenerator(Image Enhancement Network).
Enhanced imageと本当のリアルな画像を判別するDiscriminatorを通して,学習を行います.
違いとしては,Generatorはレンダリングの中間情報であるG-bufferを補助情報として使う,
学習時にDiscriminatorのスコアだけでなく,生成前後での構造的な一貫性を保つためのLPIPSスコアを学習に使うということが挙げられます.
G-bufferはゲーム内でのレンダリングをするための中間情報で,法線情報,深度情報,Semantic Segmentationなど様々な情報を含んでいます. 図のG-buffer Encoderで抽出されたG-bufferの特徴を使って,Image Enhancement Networkで画像特徴マップの変換を行います.
変換は論文内でFeature map modulationと呼ばれていますが,もともとの特徴マップを大きく変更せずに,必要な部分の強調などを行います.
LPIPSは,入力画像と出力画像間の大まかな構造的な違いをスコアの形で算出するMetricです. Discriminatorによるリアルな画像との見分けを少なくする制約と合わせることで,「構造的には一緒だがスタイルが違う」という変換を実現します.
それでは,モデルの内容の説明に入っていきましょう.
HRNetベースのGenerator
GeneratorというかImage Enhancement Networkには,HRNet [Ke Sun+ 2019] と呼ばれる深度推定のためのネットワーク構造を使っています.
HRNetは画像を複数のブランチを通して,様々な解像度における処理を行い,統合するモデルです.
このネットワークに対して,この論文では次の改良を行っています. 1. ストライドサイズを1にすることで,オリジナルの解像度を保持した処理へ 1. Batch Normalizationを,G-bufferの情報に応じたFeature modulationであるRendering-aware denormalization (RAD)へ置き換える
もともとのHRNetでは,最低でも入力画像の1/4の解像度を保って処理を行っていました. 深度推定ではこれが適していたのかもしれないのですが,本手法ではストライドサイズを1にすることによってオリジナルの解像度で処理を行う変更をしています. これによって,より細かな画像変換を可能としています.
そして,BNをRADというG-bufferの情報をもとに特徴マップを変調するモジュールへ置き換えています.
従来的なレンダリングパイプラインの活用
従来的なリアルタイムのレンダリングは,画像サイズの中間情報(G-buffer)をキャッシュして使う「遅延シェーディング」か「遅延ライティング」という手法が有名だそうです. G-bufferには質感の情報やライティングの計算に必要な情報も含まれるため,今回のPhotorealismにも有用であると考えられます.
G-buffer encoder
G-bufferは次の情報を持っています。
それぞれ、離散値を取る画像であったり、連続値であったり様々です。 さらに、特定に領域ではG-bufferの値が0になる場所があります。例えば空はgeometrical な情報を全く持たないため、殆どのG-bufferの値が0になっている。
この領域ごとに特化した特徴抽出を実現するために、Segmentation のクラスごとにCNNを用意してその出力を組み合わせることが考えられています。
図の「Stream n」がCNNとなっています.
具体的には,あるクラスに対して,各Streamが抽出した特徴マップを,各Semanticのマスクをとすると,ということですね.
そして,結果の特徴マップをResidual Blockで処理し,複数のスケールの特徴マップを出力しています. ちなみにResidual Blockの中身はこうなっています.
ダウンスケーリングやチャネル数の変換を行うときには,Conv1とConvPがその役割を担うみたいです. それらが入出力で一定の場合は,ConvPが除かれた一本道に変更されるみたいです.
Rendering-Aware Denormalization (RAD)
従来手法でも,特徴マップを外部の情報を使って「変調」する取り組みは行われてきました.
例えば,SPADE [Taesung Park+ , CVPR'19] はSemantic Segmentationのマスク画像をリアルな画像に変換するタスクにおいて,マスク画像から特徴マップの変調を行うモジュールを提案しています.
SPADEを参考に,本手法ではRADを提案しています.RADはG-bufferの情報を使って,Feature mapの変調(要素ごとのスケール変換 とバイアス )を計算します. 論文ではアフィン変換と書いてありますが,まあ多次元版(各要素に対してスケールとバイアスがそれぞれ決まる)と考えればいい気がします.
SPADEとの違いは,入力がSemantic SegmentationなのかG-bufferを埋め込んだものなのかが大きな違いで,小さな違いはあれどほとんど一緒な気がしていますが,言及されていないです. 論文の最後の方にControlled ExperimentsとしてSPADEとの比較がありますが,G-bufferの情報があった方が,まあ良くなるのは当然かなと思ってしまいます.
Perceptual Discriminator
お次はDiscriminatorの説明に入りたいと思います.
DiscriminatorのネットワークはSemantic Segmentationネットワーク,Perceptual Feature Extraction Networkで構成される. Semantic SegmentationのネットワークとしてMSeg [J. Lambert, CVPR'20] を,Perceptual Feature ExtractionとしてVGG-16を採用しています.
これらのネットワークはpre-trainedなものを使っており,Image Enhancement Networkの学習中に重みを更新しません.
MSegはリアルの画像とレンダリングされた画像(Photorealism enhancementを受けていない生のゲーム画像)をSemanticラベル画像へ変換します. しかし,リアルな画像とレンダリングされた画像に対するSemantic Segmentationは大きく異なり,レンダリング画像に対しては悪い結果となることが知られています.
なので,Image enhancement networkの学習時もこのネットワークを介したBack propagationは行わないようにしています.
VGG-16では,各ReLu層で出力される異なる抽象レベルでの特徴マップ出力し,Discriminatorを学習します.
VGG-16を含むDiscriminatorネットワークは,異なる抽象レベルの特徴マップに対して一つずつ作られるので,図の青い点線のネットワークが複数あるということです.
各Discriminatorネットワークは,Convolution-GroupNorm-LeakyReLU (CGL)を5つ並べた256次元の特徴マップの抽出と,Convolution-LeakyReLU-Convolution (CLC)を1つ使った1次元の特徴マップの投影を行います.
MSegが推定したラベル(256次元の画像)と,CGLの出力した特徴マップを内積計算し,それをCLCの出力に足してRealism scoreを計算します.
この内積計算による埋め込みは既存研究でもよく行われるそうです [A. Brock, ICLR'19] [X. Liu, NeurIPS'19] [T. Miyato, ICLR'18].
ひとまずここまで.
追記していきます.