1. HOME»
  2. グラフィック»
  3. 3D Photo Inpaintingの使い方。2D画像が超簡単に3Dに!

3D Photo Inpaintingの使い方。2D画像が超簡単に3Dに!

画像を3Dにする技術が話題となっております。
この技術を使えば、写真やイラストなど、2Dのものが、簡単に3Dになってしまいます。

今回はその技術の使い方を紹介していこうと思います。

目次
  1. 3D Photo Inpaintingについて
  2. ブラウザ上で作る。3D Photo Inpaintingの使い方
  3. ローカルで作る。3D Photo Inpaintingの使い方(Mac)
  4. まとめ

3D Photo Inpaintingについて

まず、3D Photo Inpaintingを使うとどのようなものができるのでしょうか。
以前に描いたイラストで試してみました。

こちらのイラストも動かしてみました。

英語ページですが、詳しくはこちらをご確認ください。
3D Photography using Context-aware Layered Depth Inpainting

3D Photo Inpaintingで3Dに変換するには、大きく分けて、ブラウザ上で行う方法と、ローカルで行う方法があります。

ブラウザで行う場合は簡単な手順で3Dに変換することができ、操作も分かりやすいです。
ローカルで行う場合はちょっとだけ難しいかもしれません。

ブラウザ上で作る。3D Photo Inpaintingの使い方

では、まずは2D画像を、ブラウザ上で3Dに変換する方法を紹介します。

まずは3D-Photo-Inpainting.ipynbにアクセスしましょう。

3d photo inpainting

Googleドライブに「3D-Photo-Inpainting.ipynb」のコピーを保存してから変換する方法にしようと思うので、Googleにログインする必要があります。
右上の「ログイン」から、ログインします。
3d photo inpainting

では、ドライブにコピーしてみましょう。
ファイル」 → 「ドライブにコピーを保存」 をクリックします。
3d photo inpainting

すると新しいタブが開かれるので、そこで作業を行なっていきます。

では、「Prepare environment」の項目から始めていきましょう。
「Prepare environment」の下にある、▶︎ボタンをクリックします。
もしも▶︎ではなく、[]になっていたら、項目部分全体をクリックすると、▶︎に切り替わります。
3d photo inpainting

動きはじめたら、しばらく待ちます。
3d photo inpainting

続いて、 「Download script and pretrained mobel」の項目の下にある、▶︎ボタンをクリックします。
3d photo inpainting

再び、しばらく待ち、完了してから次へいきましょう。

次は、「Switch off off-screen rendering」の項目の下にある、▶︎ボタンをクリックします。
3d photo inpainting

こちらはすぐに完了するようです。
次にいきましょう。

「Please upload .jpg files to /content/3d-photo-inpainting-master/image/」の項目の下にある、▶︎ボタンをクリックします。
3d photo inpainting

すると画像がアップロードできるようになるので、3D化したい画像を選択します。
▶︎ボタンをクリックしたあと、すぐに画像を選択してください。
3d photo inpainting

最後に、「Execute the 3D Photo Inpainting」の項目の下にある、▶︎ボタンをクリックします。
3d photo inpainting

画面左のメニューのフォルダマークをクリックし、「video」の中を見ると、4つのファイルが作られています。
もしもない場合は、「更新」をクリックします。
3d photo inpainting

作成したファイルは、右クリックからダウンロードすることできます。
3d photo inpainting

実際に作ってみたのがこちらです。
こちらも私が以前描いたイラストです。

ローカルで作る。3D Photo Inpaintingの使い方(Mac)

2D画像を、ローカルで3D画像に変換する方法です。
今回はMacを使用した方法を紹介します。

Anacondaのインストール

Anacondaを使いますので、インストールしていない方はしていきしましょう。
ただ、Anacondaをインストールすると、Macの環境が変わってしまうので注意です。
(私の場合ですが、Anacondaをアンインストールして、.bash_profileに自動的に書き込まれたものを削除すれば、元に戻りました。これは人によって違うかもしれません)

Anaconda
anaconda

上のサイトの右上の「Download」をクリックし、インストーラーをダウンロードし、インストールします。
anaconda

途中、インストール先を選択しますが、私は「自分専用にインストール」を選びました。
anaconda

この方法だと、Anacondaは、ホームディレクトリのoptにインストールされるようです。

パスを通す

次は、パスを通していきます。
私は普段、fish shellを使っているので、ターミナルに以下のコマンドを打ち込みました。

> set -U fish_user_paths $HOME/opt/anaconda3/bin $fish_user_paths

以下のコマンドを入力して、バージョンが表示されれば成功です。

> conda -V
conda 4.8.3

Pythonのインストール

続いて、Pythonをインストールしていきます。
PythonはHomebrewを使ってインストールします。
Homebrewインストールしていない場合は、こちら(Homebrewの使い方。よく使うコマンド一覧と詳しい解説まとめ)の記事をご覧ください。

> brew install python

以下のコマンドを入力して、Pythonのバージョンが表示されれば、インストール完了です。

> python -V
> Python 3.7.7

3D Photo Inpaintingを使う

では、3D Photo Inpaintingを使っていきますので、適当な名前のディレクトリを作り、cdコマンドでそのディレクトリに移動しておいてください。

> mkdir 3dtest
> cd 3dtest/

続いて、3d-photo-inpaintingをGitHubからcloneします。
もし、gitを使ったことがない場合は、こちら(【Gitの使い方 – その2】GitをMacにインストールする方法!)の記事を見てインストールしましょう。

> git clone https://github.com/vt-vl-lab/3d-photo-inpainting
Cloning into '3d-photo-inpainting'...
remote: Enumerating objects: 21, done.
remote: Counting objects: 100% (21/21), done.
remote: Compressing objects: 100% (19/19), done.
remote: Total 224 (delta 6), reused 10 (delta 2), pack-reused 203
Receiving objects: 100% (224/224), 110.86 MiB | 3.99 MiB/s, done.
Resolving deltas: 100% (116/116), done.
Checking out files: 100% (21/21), done.

完了したら、3d-photo-inpaintingに移動します。

> cd 3d-photo-inpainting/

以下のコマンドをターミナルに入力していきます。

> conda create -n 3DP python=3.7 anaconda
Proceed ([y]/n)? y
〜 省略 〜
> conda activate 3DP
> pip install -r requirements.txt
Collecting opencv-python==4.2.0.32
  Using cached opencv_python-4.2.0.32-cp37-cp37m-macosx_10_9_x86_64.whl (47.9 MB)
〜 省略 〜
> conda install pytorch torchvision cudatoolkit -c pytorch
Collecting package metadata (current_repodata.json): done
Solving environment: failed with initial frozen solve. Retrying with flexible solve.
〜 省略 〜
Proceed ([y]/n)? y
〜 省略 〜

続いて、download.shを実行していきたいのですが、download.shにはwgetコマンドが書かれています。
wgetを入れていない場合はHomebrewで入れておきましょう。

もしもwgetが入っていない場合、以下のコマンドを入力します。

> brew install wget

wgetが入っている状態で、以下のコマンドを入力します。

> chmod +x download.sh
> ./download.sh
--xxxx-xx-xx xx:xx:xx--  https://filebox.ece.vt.edu/~jbhuang/project/3DPhoto/model/color-model.pth
〜 省略 〜

ここで、変換したい画像ファイルを3d-photo-inpainting/の、image/に入れました。


3d-photo-inpainting/
  image/
    変換したい画像ファイル.jpg

以下のコマンドを入力しますが、もしかすると次のようなエラーが出てしまうかもしれません。

> python main.py --config argument.yml
〜 省略 〜
RuntimeError: Attempting to deserialize object on a CUDA device but torch.cuda.is_available() is False. If you are running on a CPU-only machine, please use torch.load with map_location=torch.device('cpu') to map your storages to the CPU.

そんなときは、argument.ymlの21行目を編集します。
編集するのはgpu_idsの値です。0となっている部分を消してしまいます。
argument.yml

〜 省略 〜
#gpu_idsの0を削除
#gpu_ids: 0
gpu_ids:
〜 省略 〜

これでもう一度以下のコマンドを実行してみましょう。

> python main.py --config argument.yml
  0%|                                                                                                          Current Source ==>  snipe
initialize
device: cpu
start processing
  processing image/snipe.jpg (1/1)
torch.Size([1, 3, 384, 288])
finished
Start Running 3D_Photo ...
〜 省略 〜

私の環境では、かなり時間がかかり、止まったのではないかと思うほどでしたが、気長に待っていれば進みました。

そして完成したのが、こちらになります。

まとめ

3D Photo Inpaintingを使うことで、写真やイラストを簡単に3Dにすることができます。
変換に時間がかかるのですが、待っている間は、画像がどのように動くんだろう、と楽しみになります。

以上、2D画像を3Dにする技術の紹介でした。

オリジナルゲーム.com