【3D Photo Inpainting】AI技術で1枚の画像から3D画像を作成する
昨今、人工知能(AI)が一昔前に比べかなり身近な存在となってきました。
現在では音声認識や言語翻訳、自動運転など様々なものに利用され、我々の生活をより便利にしてくれています。
そんな中、少し前に1枚の画像データから、3D画像を作り出す技術が話題になりました。
画像の隠れた部分の色や深度をAIのディープラーニング(深層学習)によって自動生成し、3D画像として書き出すいう画期的なシステムです。
今回はそんなシステムを搭載した「3D Photo Inpainting」の使い方を紹介していきます。
「3D Photo Inpainting」はデモ版が無料公開されており、誰でも利用が可能となっています。
また操作方法もボタンを数回クリックするだけの非常にシンプルなものなのでAI知識も不要です。
実際に3D画像を作成してみて「AI技術を使ったものづくり」に触れてみましょう。
3D Photo Inpainting
まずは「3D Photo Inpainting」で作成される3D画像がどのようなものかを確認しておきましょう。以下の動画を見ればイメージがつかめると思います。
「3D Photo Inpainting」を使うことで出力されるのは動画にでてきたような3D画像(実際は6秒ほどの動画ファイル[.mp4])です。
また動画のような写真以外にもイラストや絵画といったものまで3D画像にすることができます。
「3D Photo Inpainting」では、入力した画像の「RGB-D」(色と奥行き)をAIが判断し、隠れた部分の背景を自動生成して動画に合成するという処理が行われています。
本来であればRGB-Dの判断などをディープラーニング(深層学習)でAIに学習させる必要がありますが、「3D Photo Inpainting」ではすでに学習済みのAIをそのまま使わせてもらえるのでこちらがやることはただコードを実行していくだけの単純作業となっています。
3D Photo Inpaintingの使い方
それでは実際に「3D Photo Inpainting」を使って好きな画像を3D画像にしてみましょう。
事前準備
まずは以下の2つを準備して下さい。
・3D画像にしたい画像ファイル(.jpg) ※1
・Googleアカウント
※1 拡張子は[.jpg]以外のものは使えなので[.png][.bmp]などの場合は[.jpg]に変換して下さい。
また直接拡張子を書き換えたものもうまく実行できないので変換サイト等で変換して下さい。
上記の2つが準備できたら下記リンク先ページへ行き「Demo」をクリックします。
「3D Photography using Context-aware Layered Depth Inpainting」
Demoをクリックすると下画像のような「3D-Photo-Inpainting.ipynb」が開きます。
※ このときウィンドウ右上のGoogleアカウントが自分のものであるかを確認します。
もし別アカウントの場合はここで自分のものに切り替えておきましょう。
現在、読み取り専用で開かれているためコードの実行ができない状態です。
[ファイル]>「ドライブにコピーを保存」をクリックし自身のGoogleドライブにコピーを作成します。
コピーが作成されると新規タブで「3D-Photo-Inpainting.ipynb のコピー」が開きます。
(新しいタブで開くかを聞かれる場合がありますが、そのまま指示に従い新しいタブを開いて下さい)
これでログインしているGoogleアカウントのドライブに「3D-Photo-Inpainting.ipynb」が保存できたので、コードを順に実行していきます。
コードの実行
はじめに「3D-Photo-Inpainting.ipynb」の構成を確認しておきましょう。
色々英語やコードが書かれていますが、大きく分けて以下の5つの項目で構成されています。
1.Prepare environment (環境の準備)
2.Download script and pretrained model (スクリプトと事前学習モデルのダウンロード)
3.Switch off off-screen rendering (レンダリングをオフにする)
4.Please upload .jpg files to ~ (.jpgファイルのアップロード)
5.Execute the 3D Photo Inpainting (3Dフォトインペイントの実行)
ページには上記の項目が上から順に並んでいます。
我々ユーザーはこれらのコードを上から順に実行していくだけです。
1.Prepare environment
まずはページ最上部にある「Prepare environment」のコードを実行します。
ここでは3D画像作成のための環境を作るための処理が行われます。
▷ボタンをクリックすればコードが実行されます。
アイコンが[]になっている場合もカーソルを合わせクリックすれば実行できます。
(アイコンが□に変わっていないと実行ができていない状態なので注意)
コードを実行するとコードの下側で処理が行われていきます。
コードが終了する(アイコンが再び▷になる)まで少しの間待ちます。(約2~3分ほど)
2.Download script and pretrained model
「Prepare environment」の終了後、
すぐ下にある「Download script and pretrained model」のコードを実行します。
ここではスクリプトと事前に学習済みのAIモデルをダウンロードします。
先ほどと同じく▷ボタンをクリックしてコードを実行します。
再び処理を待ちます(約1~2分ほど)
3.Switch off off-screen rendering
「Download script and pretrained model」の終了後、
すぐ下にある「Switch off off-screen rendering」のコードを実行します。
ここではレンダリングをオフにするという処理が行われます。
実行したら処理を待ちます(約2~5秒ほど)
4.Please upload .jpg files to ~
「Switch off off-screen rendering」の終了後、
すぐ下にある「Please upload .jpg files to ~」のコードを実行します。
ここでは3D画像の元となる画像ファイルのアップロードを行います。
実行後はすぐにファイルを選択します。
※コード実行中にファイルを選択しないとアップロードができません。
ファイルを選んでいる時もコードは実行され続けているので終了する前に選択しましょう。
うまく選択できなかった場合は以下のように表示されます。
もう一度コードを実行し、ファイルを選択し直してください。
うまく選択できた(アップロードができた)場合は以下のように表示されます。
つまり最終的に以下のように表示されていればOKです。
5.Execute the 3D Photo Inpainting
画像ファイルのアップロードが完了したら、
すぐ下にある「Execute the 3D Photo Inpainting」のコードを実行します。
ここでは3D画像(実際はMP4ファイル)に書き出す処理が行われます。
今まで同様、処理が終了するまで待ちます。(約5~20分)
コードを実行すると以下の赤部にアップロードした画像ファイルの名前が表示されます。
場合によっては「moon」と表示されている時がありますが、これはデモファイルが先に処理されてしまっている状態です。デモファイル「moon」の処理が終わり次第、アップロードした画像ファイルの処理が行われるのでしばらくの間待ちましょう。
デモ版ということもありデモファイル「moon」も同時に処理されてしまいます。
もしデモファイルより先にアップロード画像の処理が終わればコードを中断しても問題ありません。
2つのファイルの書き出し処理の境目は以下のとおりです。
以下の「Current Source ==> moon」の部分で処理の対称が切り替わっているので、この文が見えたら中断してもOKです。(□アイコンをクリックすれば処理が中断されます)
はじめのうちは時間はかかりますが両方(デモ、アップロードした画像)の処理が終了するまで待っていれば確実です。
以上で3D画像の書き出しは完了です。
3D画像のダウンロード
最後に書き出した3D画像をダウンロードします。
3D画像はウィンドウ左側の「3d-photo-inpainting」>「video」の中に書き出されています。
表示されていない場合は左側にあるフォルダマークをクリックしてください。
また、書き出したはずの動画が見当たらない場合は上の[更新]をクリックしてください。
書き出されるデータは1つの画像に対して4つです。
それぞれの違いは後述しているのでそちらを参照ください。
ダウンロードするにはファイルを右クリックし、ダウンロードをクリックするだけです。
「moon_~.mp4」はデモファイルなので無視してOKです。
これですべて終了です。
書き出される4種類の違い
オリジナル画像(アップロードした画像)
○○_circle.mp4
○○_dolly-zoom-in.mp4
○○_swing.mp4
○○_zoom-in.mp4
まとめ
実際に3D画像は作れたでしょうか?
今回のように無料で公開されているAI技術は他にも様々あるので、いろいろ調べてみるとAIやディープラーニングに興味が出てくると思います。
個人的にはDeepFakeという技術が映像作品に大きく関わってくると思います。
この技術により俳優/女優の方が歳をとったり、亡くなったりしても映像作品の中のキャラクターは常に変わらず生き続けることができます。
気になった方は是非調べてみて下さい。