以下のページではDepth情報を利用して奥行きを立体化するなどしました。3Dプリントなどすることでスタチュー化、オブジェ化ができるかと思います。生成AI技術を利用した、Unique3Dを利用して3D立体化について深堀してみようと思います。

比較検証
どのような方のどのような画像が立体化するのに向いているのか試してみました。
ボディビルダー男性
ぱくたそさまの画像を利用しました。https://www.pakutaso.com/

- 結果:筋肉がキレすぎており、上腕などは切れ込みがすごいです。

外国人女性(スポーツウェア)

- 結果:後ろ側の髪が白くなってしまいました。色を塗れば何とかなりそうではあります。キレのある男性の身体よりも多少丸みのある女性の方が得意なのでしょうか。


日本人女性(グラビアポーズ?)
ぱくたそさまの画像を利用しました。https://www.pakutaso.com/

- 結果:お鼻の横辺りで立体に溝が出来てしまいました。奥行きで差が出来てしまったのでしょう。

日本人女性(立ち姿)

- 結果:シンプルではありますが背中側が自動生成されたとは思えないレベルで補完されてます。


得意なアングル
公式ドキュメントにもあるのですが、以下のようなシチュエーションが得意なようです。
- 被写体を真正面から見た画像であること
- 隠れてるものが少ない画像であること (隠れているものを何とかしようと頑張って、質が落ちるとか)
- 高解像度の画像であること
さらに、検証結果から以下のような画像が得意そうに思われました。
- 前傾姿勢などではなく直立した画像
- ライティングで白飛びなどがない画像
- (もしかしたら)顔は正面で、身体を少し斜めにしているポーズの画像
白飛びについては奥行きが取れなくなったり、外国人女性の写真のように髪の毛が白くなってしまうなどの影響が出たように思います。
身体を少し斜めにすると奥行きを出しやすくなるのでは?と疑っています。
また試したら追加します。

Google Colabへのインストール時のエラー対応
順番が前後しますが、Google Colabへのインストール時のエラー対応を書いておきます。Proプランで実行しており、もし無料プラン利用など非課金状況だとメモリやディスク容量管理のため、それは個別の工夫が必要だと思います。
2025年1月時点では動きましたが、最新では動かないかもしれないことご留意ください。
Google Colabは環境更新が早く、Python3.11系になっていたのでコマンドパレットから古いランタイムを選択してPython3.10系 を利用することにしました。 (「代替ランタイムバージョンを使用する」を選択します)

これでバージョン確認をすると、以下のように出ます。
!python -V
# 結果
Python 3.10.12
Google Colabにはディスプレイ環境などがないので各種メディア系ライブラリが不足していたりするので、入れます。
!sudo apt-get update
!sudo apt-get install -y libegl1-mesa-dev libgles2-mesa-dev libegl1-mesa-dev
Tensor RTがないので入れます。
!sudo apt-get install -y tensorrt
!export LD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH
コードの書き換え
3つ、エラーが出たのでソースコードを書き換えます。
1. eglInitialize() failed
これもGoogle Colab特有となるかと思うのですが、GLではなく Cudaとします。
# Unique3D/scripts/project_mesh.py
# Unique3D/mesh_reconstruction/render.py
# 上記のコードにあるコレを
self._glctx = dr.RasterizeGLContext(output_db=False, device=device)
# こう
self._glctx = dr.RasterizeCudaContext(device=device)
2. auto を balancedに
# scripts/sd_model_zoo.py
device="auto"
を
device="balanced"
3. You can call reset_device_map() first and then call to().
# scripts/sd_model_zoo.py
pipe.reset_device_map() # これを足す
pipe = pipe.to("cuda")
Gradio
GUIアクセスするために書き換えます。
#Unique3D/app/gradio_local.py
share=False,
を
share=True,
Google Colab側で動いているだけで、ブラウザなどからアクセスするために変更しました。公開状況になるため、利用に注意してください。
実行すると、以下のようなエラーが出ます。ここまで環境を整備したのにonnxruntimeが動かないと出ました。
onnxruntimeがなくてもどうということはないので、このまま続けます。
*************** EP Error ***************
EP Error /onnxruntime_src/onnxruntime/python/onnxruntime_pybind_state.cc:507 void onnxruntime::python::RegisterTensorRTPluginsAsCustomOps(PySessionOptions&, const
Falling back to ['CUDAExecutionProvider', 'CPUExecutionProvider'] and retrying.
****************************************
[E:onnxruntime:Default, provider_bridge_ort.cc:1862 TryGetProviderInfo_CUDA] /onnxruntime_src/onnxruntime/core/session/provider_bridge_ort.cc:1539 onnxruntime::Provider& onnxruntime::ProviderLibrary::Get() [ONNXRuntimeError] : 1 : FAIL : Failed to load library libonnxruntime_providers_cuda.so with error: libcudnn_adv.so.9: cannot open shared object file: No such file or directory
引用と謝辞
研究チームは成果を公開し実行可能なコードをGitHubにて公開しています。この分野を前進させ、その成果をより幅広いコミュニティが利用できるようにする彼らの努力に感謝します。
The original paper ( Unique3D ) is published on arXiv https://arxiv.org/abs/2405.20343. The authors have made their research publicly available, and the codebase can be accessed on GitHub. We appreciate their efforts in advancing this field and making their work accessible to a broader community.
@misc{wu2024unique3d,
title={Unique3D: High-Quality and Efficient 3D Mesh Generation from a Single Image},
author={Kailu Wu and Fangfu Liu and Zhihan Cai and Runjie Yan and Hanyang Wang and Yating Hu and Yueqi Duan and Kaisheng Ma},
year={2024},
eprint={2405.20343},
archivePrefix={arXiv},
primaryClass={cs.CV}
}
オンラインデモ
Hugging Faceにオンラインデモがあります。
https://huggingface.co/spaces/Wuvin/Unique3D
ライブラリの互換性が悪いのか、動いてないときもあります。
