ディープラーニングでGTA5を実写にする


[FortniteをPUBGにする](https://qiita.com/rana_kualu/items/a8b5b9c58bef45564a33) / [GTA5を実写にする](https://qiita.com/rana_kualu/items/9b371adfd74cae11ddd5)

GTAシリーズはまともに遊んだことがありませんし、実写からはおさらばしたいですね。
ということで以下は[How to create realistic Grand Theft Auto 5 graphics with Deep Learning](https://medium.freecodecamp.org/how-to-create-realistic-grand-theft-auto-5-graphics-with-deep-learning-cc092c4a69f0)の日本語訳です。

<blockquote class="twitter-tweet" data-lang="ja"><p lang="en" dir="ltr">Before you judge me, let’s admit it, we have all done this in GTA. <a href="https://t.co/wBEoorwGZe">pic.twitter.com/wBEoorwGZe</a></p>&mdash; ラナ・クアール (@rana_kualu) <a href="https://twitter.com/rana_kualu/status/1028962472198266883?ref_src=twsrc%5Etfw">2018年8月13日</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>


# How to create realistic Grand Theft Auto 5 graphics with Deep Learning

この記事は[前回の記事](https://qiita.com/rana_kualu/items/a8b5b9c58bef45564a33)の続きです。
前回は、CycleGANを使用してFortniteのグラフィックをPUBGにする方法を解説しました。

CycleGANは[Generative Adversarial Network](https://elix-tech.github.io/ja/2017/02/06/gan.html)の一種で、あるドメインのビジュアルスタイルを、別ドメインのビジュアルスタイルに変換することができます。
ゲームのグラフィックを別のゲームのようにしたり、実写のように見せかけることができるということです。

この記事では、前回も使った[CycleGAN](https://junyanz.github.io/CycleGAN/)アルゴリズムを使用して、さらに異なる結果を共有したいと思います。
まずはGTA5のグラフィックを実写に見えるように改善してみます。
次に、GTA5のグラフィックをレンダリングすることなく、いきなり実写のようなものを得る方法について解説します。

![02.png](https://qiita-image-store.s3.amazonaws.com/0/26088/f98e2c57-c23f-ad9f-1cea-4d63df609844.png)

最初のタスクは、ソースドメインのスクリーンショットをターゲットドメインの映像に変換することです。
ソースドメインとしてはゲームのスクリーンショットを使用し、ターゲットドメインには実際の都市景観データセットからゲーム画面に似ているものを取り出して使いました。

## CycleGAN results

https://cdn-images-1.medium.com/max/800/1*3ZD4OtDtLVqQWExjydt6OA.gif

GTAを現実っぽい見た目にする仕事について、3日間100エポックのトレーニングを経た結果、CycleGANは非常に良い結果を出すようになりました。
小さい出力においても細かなディテールが失われず、画像が鮮明さを保っていることは驚きの結果です。

最大の欠点は、GTAから実写へのほぼ完璧な変換を台無しにするように、どこに行ってもメルセデスのロゴが映り込んでしまっていることです。
これは都市景観データセットがメルセデスの所有者によって集められたためです。

## How to achieve the same photo-realistic graphics with less effort

このアプローチはゲームのグラフィックを改善する方法として有望でしょうか。
私はこの手順に可能性があるとはあまり考えていません。
いったん非常に詳細なグラフィックをレンダリングし、そしてそれを別の見た目に変換するという現在の方法は、あまり現実的ではないように思います。

最初にゲームの画像を作るところをもっと省力化し、それでいて同等の品質の画像を出力することはできないでしょうか？
ニューラルネットの本当の可能性は、ディテールの荒いオブジェクトから高精細な最終画像を合成できるところにあるのではないかと考えています。

![04.png](https://qiita-image-store.s3.amazonaws.com/0/26088/e3744bcc-db85-3237-808f-4b2a3ceafc64.png)

まずはGTAのスクリーンショットを、都市景観データセットで利用可能なセマンティックラベルで分割して、細部のほぼ残っていないグラフィックに変換しました。
道路、車、家、空などほんの少数のオブジェクトのみが、詳細な設計を全く考えずにレンダリングされました。
できあがったセマンティック画像を、ゲーム本来の詳細なスクリーンショットのかわりにCycleGANの入力へと流し込みます。

CycleGANが、このセマンティック画像からどのような出力画像を生成したかを確認してみましょう。

## Results of image synthesis from semantic maps

![05.gif](https://qiita-image-store.s3.amazonaws.com/0/26088/0eb5ebf2-8a62-6f59-cf2a-42fcd6fd7105.gif)

セマンティック画像からGTAグラフィックを再生成した例をいくつか提示します。
このセマンティック画像は手作業で作ったものではないことに注意してください。
その作業は本当に面倒だったので、都市景観データセットを使ってセマンティック画像に変換するように訓練した別のCycleGANモデルを作って変換を行いました。

この結果は、遠目にはとてもよく変換できたように見えますが、しかし近くでよく確認してみると明らかに異常であり、細部が誤魔化された画像であることが明白です。

![06.png](https://qiita-image-store.s3.amazonaws.com/0/26088/37384614-6354-7cfa-cffb-25d2ec7dbf01.png)

上記の結果は256ピクセルで、8GBのメモリを搭載したGPUで生成しました。
しかし、元論文の著者たちは、24GBのメモリを使って2048*1024ピクセルの画像を生成可能であることを示しています。
この作業を行うように訓練された[pix2pixHD](https://github.com/NVIDIA/pix2pixHD)という、CycleGANの特別なバージョンを使っています。
生成された画像は、本物と見まごうほどのできばえとなっています。

![07.png](https://qiita-image-store.s3.amazonaws.com/0/26088/46ffe8e8-d187-c022-400d-2630571684a9.png)

## Conclusion

エンターテイメント業界が今後どのようにコンテンツを制作していくかについて、GANは大きな可能性を秘めています。
GANには、人間よりずっと短時間で、はるかに良い結果を生み出すポテンシャルがあります。

同じことがゲーム業界にも当てはまります。
私は、数年後にゲームグラフィックの生成方法に革命が起こると確信しています。
全てを一から作っていくよりも、現実を模倣する方がはるかに簡単です。

この技術がうまくいけば、新しいゲームの開発はもっと加速することでしょう。
ディープラーニングと共に進歩する時代が、すぐにやってきます。


### More results in video format

以上の結果は全て、私の[Youtubeチャンネル](https://www.youtube.com/c/DeepGamingAI)で動画にしています。
気に入ったら、最新情報を受け取るために[チャンネルを購読](http://www.youtube.com/subscription_center?add_user=DeepGamingAI)してください。

<blockquote class="twitter-tweet" data-lang="ja"><p lang="en" dir="ltr"><a href="https://t.co/0j9cbBTW8b">https://t.co/0j9cbBTW8b</a><br>Creating photorealistic GTA 5 graphics with Deep Learning</p>&mdash; ラナ・クアール (@rana_kualu) <a href="https://twitter.com/rana_kualu/status/1028962178156584962?ref_src=twsrc%5Etfw">2018年8月13日</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

----------------------

読んでくれてありがとう。
[Medium](https://medium.com/@chintan.t93)、[GitHub](https://github.com/ChintanTrivedi)、[Youtube](http://youtube.com/c/DeepGamingAI)も見てね。


# 感想

pix2pixHDではないほうはサイズが小さいのでわかりにくいですが、よく見ると異形が混ざっていて明らかに実写ではありません。
ただキャプション無しでYoutubeに流したら、実写と間違える人がいてもおかしくはない程度には雰囲気が出ていますね。
pix2pixHDのほうはもう、本当によく見ないとわからないくらいです。

とはいえゲームグラフィックの全てがGANに置き換わるかというと懐疑的です。
BFナンバリングやPUBGなら是非ともこれでグラフィックをさらに進化させてくれと思いますが、BFBCやFortniteにこれを適用させられても困るってものですよ。
もっとも見た目の方向性は、学習をうまくコントロールすることで制御できるかもしれません。
GANでプロトタイプを出力して人力でブラッシュアップしていく、という開発方針になっていくのでしょうか。

将来的には人力も排除して、学習済みモデルさえ完成してしまえば、それ以降は全てのグラフィックを完全自動生成できるようになるかもしれませんね。
許されざる倉庫も立派な土蔵に生まれ変わることでしょう。

よし、それじゃあ次はディープラーニングでスリルドライブを実車にしよう。