以前、「【大迫力】stable diffusion の Depth機能で3D化した画像をQuest 2/3で楽しもう!」の記事で、2D写真を疑似3D化(立体化)して、Quest 2/3の大画面で楽しむ方法をご紹介しました。
あの記事では、stable diffusion web ui がインストールされていることが前提でしたが、実は stable diffusion web ui をインストールしていなくても、全く同じことが出来るんです!
今回は、stable diffusion web ui を使っていない人向けに、2D写真から疑似3D写真を作成し、Quest 2/3で楽しむ方法をご紹介します。
2D写真を疑似3D化するツール「depthmap-script」とは
depthmap-script は git で公開されている無料ツールであり、通常の2D写真をもとにdepth map(深度マップ)を推定し、そこからサイドバイサイドやアナグリフ形式の3D画像を生成してくれる優れものです。
stable diffusion web ui の拡張機能として作られていますが、stable diffusion web ui をインストールしていなくても、単体で動作してくれます。
depthmap-scriptの詳しい説明は、「【大迫力】stable diffusion の Depth機能で3D化した画像をQuest2/3で楽しもう!」で紹介していますので、本記事では depthmap-script を単独でインストールして使う方法について紹介します。
インストール方法
自分のパソコンにインストールして動作させるには、Pythonの実行環境が必要になります。既にPython環境がある方はそれを使っていただければ結構ですが、本記事ではPCにインストールせず使えるポータブル版のPython環境を使って説明しています。
Pythonを使ったことが無い方には少々難しいかもしれませんが、手順に従って操作して頂ければインストールできますので、頑張って挑戦して下さい。
depthmap-script が使えるまでの手順は次の通りです。
Python環境を既に構築済みの方は、2と3を実行して下さい。
ポータブル版Pythonのインストール
ポータブル環境は「【お手軽】WinPython+Portable Gitでお手軽Python環境を構築しようよ」の記事に手順を詳しく記載しています。
公式サイトから自己解凍形式の圧縮ファイルをダウンロードの上、任意のフォルダに解凍するだけなので超お手軽です。
この手順で構築したPython環境のことを、以降は「WinPython+PortableGit」環境と呼ぶことにします。
depthmap-script のダウンロードと展開
最初にdepthmap-script 一式をダウンロードする必要があります。
「WinPython+PortableGit」環境の場合は @CommandPrompt.exe を実行し、開いたコマンドプロンプトから下記のコマンド実行して下さい。
これで、「WinPython+PortableGit」環境と同じ場所にインストールされます。
cd ..
git clone https://github.com/thygate/stable-diffusion-webui-depthmap-script.git
別の場所にインストールしたい場合は、コマンドプロンプト上でインストールしたいフォルダにカレントディレクトリを移動し、次のコマンドを入力します。
git clone https://github.com/thygate/stable-diffusion-webui-depthmap-script.git
以下は、Gitをインストールしていない方のために、直接Gitのサイト(下記URL)からZip圧縮されたファイルをダウンロードし、任意のフォルダに展開する方法です。
https://github.com/thygate/stable-diffusion-webui-depthmap-script
成功すると、次のファイルがダウンロードされます。
stable-diffusion-webui-depthmap-script-main.zip
これを任意のフォルダに展開して下さい。フォルダ名が長いので適宜変更して頂いて結構ですが、本記事では長い名前のままフォルダ展開した状態で説明します。
ダウンロードしたZipファイルを展開すると、下記のフォルダとファイルが出来上がります。
モジュールのインストール
「WinPython+PortablGit」環境をお使いの場合は、@CommandPrompt.exe を実行し、開いたコマンドプロンプトから、depthmap-script の解凍フォルダにカレントディレクトリを移動します。
今回の例では、O:\WPy64-31090\stable-diffusion-webui-depthmap-script-main に展開したという想定をしています。
従って、実行すべきコマンドは次のようになりますが、ドライブやフォルダは人それぞれなので、皆さんの環境に読み替えて実行して下さい。
O:
CD O:\WPy64-31090\stable-diffusion-webui-depthmap-script-main
カレントフォルダに移動したら、下記のコマンドを実行していきます。
pip install -r requirements.txt
pip install gradio
pip install einops
pip install vispy
以上でインストールは完了です。
使い方
ここでは、起動方法と2D写真を3D写真に変換するための操作方法について説明します。
起動方法
depthmap-script の解凍フォルダで main.py を実行する必要があります。
「WinPython+PortablGit」環境をお使いの場合は、@CommandPrompt.exe を実行後、開いたコマンドプロンプト上で、depthmap-script の解凍フォルダにカレントディレクトリを移動し、次のコマンドを実行して下さい。
O:
CD O:\WPy64-31090\stable-diffusion-webui-depthmap-script-main
続けて、次のコマンドを実行します。
python main.py
しばらくすると、コマンドプロンプトに下記の内容が表示されます。
Running on local URL: http://127.0.0.1:7860 と表示されているので、これをお使いのブラウザのアドレス欄に入力し、エンターキーを押してください。
http://127.0.0.1:7860
末尾の7860 は、お使いの状況によって 7861 や7862 など別の値になっている可能性がありますので、ご注意ください。
成功するとブラウザに下記の画面が表示されます。あとは、この画面を操作して2D写真を3D化していきます。
画面説明
画面には様々な機能が用意されていますが、初期状態のままでも問題なく3D画像が生成できます。
深度推定モデルを使って深度マップを生成しますが、初期値として res101 が選択されています。これ以外にも選択は可能ですが、res101が一番精度が高いので、特に理由が無い限りこのままでOKです。
ちなみに、私が使っているGPU(RTX-4070 12GB)の場合、dpt_beit_xxxx (=midas ver3)はメモリ不足で動作しませんでした。
3D化された画像の出力先
2D画像を3D化すると、depthmap-script を展開したフォルダ内に output フォルダが自動生成され、そこに3D化した画像(深度マップとサイドバイサイド)が保存されます。
2D画像を3D化する方法(1枚ごとの変換)
変換方法は簡単で、以下の3つの手順を実行するだけです。
- ①に2D写真をドラッグ&ドロップする
- ②Generate stereoscopic image(s) にチェックを入れる
- ③Generateボタンをクリックする
下記が生成された画像になります。1枚目は元画像と深度マップを合体させた画像です。このように、Combine input and depthmap into one image にチェックを入れておくと、元画像と深度マップを1枚の画像に収めてくれます。
2枚目(下記)はサイドバイサイドの3D画像です。初期値では、サイドバイサイドとアナグリフの2種類のフォーマットで3D画像が生成されます。
Quest 2/3で3D画像を楽しみたい方は、アナグリフは使わないので、チェックを外しておくと良いでしょう。
2D画像を3D化する方法(複数画像の一括変換)
複数の画像を纏めて一括変換したい場合、まず Batch Processタブを選択します。以降は先ほどと同じ手順で、複数の画像をまとめてドラッグ&ドロップし、Generateボタンをクリックするだけです。
まとめ
今回は depsmap-script を使って2D写真から3D写真を生成(変換)する方法について紹介しました。
Git が使える方は git clone を使い、Gitをインストールしていない方は、直接 depsmap-script のZIPファイルをダウンロードした後、お手持ちのPython環境にpip で必要なモジュールをインストールすれば利用できるようになります。
depsmap-scriptは stable diffusion web ui の拡張機能として作成されていますが、それ単体(スタンドアロン)でも動作するように設計されています。
画像生成に興味は無いけど、Quest 2/3を持っていて、手元にある2D画像を3D化したい方は、この方法をお試しください。
コメント