画像の拡大・補間にニューラルネットワークを使ってみます。
普通画像を拡大すると1画素の情報が複数画素にまたがって置かれるので、全体で見るとぼやけます、これをAIで補正して元画像を推測して再現しようというわけです。
今までさほどの必要性を感じていませんでしたが、VR ViewにStreetviewの画像を使ってみるだんになって、俄然必要を感じました。
StreetviewはパノラマIDなどを使って画像を直接取得できますが、そのサイズは832x416というなんとも中途半端というか小さいというか。
注:より大きなサイズの画像も取得できます、が、以下の内容とは直接関係しないので訂正のみにしておきます。
これをVR Viewで使うとかなりぼやけた感じになります。
VR Viewの最適サイズは4096x2048と言われていますが、ここまででなくとももう少し大きいサイズにしたいところ。
そこでニューラルネットワークを使ってみます。
昨今、ぼやけたり欠損した画像から元の画像を推測したりするのにニューラルネットワークを使う手法が進化してきています(超解像と言うそうな)。
AIを画像の拡大・補間に使ってみましょう。
うっすらぼやけた画像を拡大・補間して鮮明にする過程はなにやら「ブレードランナー」の一場面を連想してしまいます。
今回は、waifu2xを使ってみます(MIT License)。
waifu2xはWebサービスとして公開されていますが、制限がかけられています。
幸いGithubでオープンソースコードとしても公開されていますので、GPUを積んだPCをお持ちなら、自前で構築できます。OSはubuntuを使います。
また、Windows版でCaffeモデルを使ったものもあります。これならCPUのみでも動くそうです。(やってみました)
使ってみました。
サイズの拡大はx2が最大だったので、2段階で拡大し、VR Viewで使う場合サイズは2のべき乗にする必要があるので最後に2048に縮小しています。
832×416の画像をwaifu2xで拡大・補間したものー>2048×1024の画像
比較
エッジなどが割とシャープに出ています。
Windows Caffeモデルでやってみました。
環境
Windows 7 (64bit) 3.10GHz 4GB CPU only
WisteriaHillのPCにはGPUは積んでないので、動作設定でCPUのみにしておきます。
480×360の画像を1/10に縮小
単純に元サイズに拡大するとジャギーな画像になります。
この48x36をwaifu2xで拡大・補間して元の画像を推測してみます。
この程度のサイズならCPUのみでも演算時間は10秒くらいです。
こんな感じ。
CGの場合
この画像はSketchUpで作成した屋内モデルをVray for SketchUpでエクイレクタンギュラー形式に変換したものです。
画像サイズは1000×500
以下はwaifuで4096×2048に拡大補間したものです。
単純拡大したものとの比較
Appendix
Appendix 2
深層学習による360度コンテンツの高品質化
Leave a Reply