ふるお〜と!- FullAuto

AI・ロボットが普及しBI(ベーシックインカム)が早急に実現されることを願う元ニートのブログ

ふるお〜と!-FullAuto

【ふるお〜と!】フィットレンダリングを試してみる【PyTorch3D】

nullpo24.hatenablog.com

PyTorch3Dのdocを見ても高校生にはちょっとキツい英文だったから、日本語に訳してみんだけどさ...やっぱり意味不明だったわ

じゃあ順を追って実際に試してみましょうか

pytorch3d/fit_textured_mesh.ipynb at main · facebookresearch/pytorch3d · GitHub

3D再構成にはまず

ふむふむ

3Dのデータが必要だわ。具体的には.objと.mtlと.png(テクスチャ)ファイルよ

なるほど

1.データの用意

ちょっと待って。それ作るのちょーめんどくさいじゃん

3Dスキャナを使うという方法があるわ

おお!

でも今は持ってないから、どこかからダウンロードしてきてね

※cowの在処 Keenan Crane - 3D Model Repository

ガク

とりあえず、Skechfabでバナナのスキャンデータをダウロードして、Webサイトでobjファイルに変換してみました

Banana - Download Free 3D model by matousekfoto (@matousekfoto) [4d4c8d8] - Sketchfab

オッケー

mtlファイルとpngファイルがないのですが、大丈夫でしょうか

以下はPyTorch3Dのサンプルcowのmtlファイルよ

newmtl material_1
map_Kd cow_texture.png

# Test colors

Ka 1.000 1.000 1.000  # white
Kd 1.000 1.000 1.000  # white
Ks 0.000 0.000 0.000  # black
Ns 10.0

newmtl:マテリアルの開始を示すキーワード
material_1:マテリアル名
map_Kd:テクスチャ名

Ka:アンビエントカラー(環境光 0.0~1.0)
Kd:ディフューズカラー(拡散光 0.0~1.0)
Ks:スペキュラーカラー(鏡面光 0.0~1.0)
Ns:スペキュラ指数(鏡面反射角度 0.0~128.0)

以上のことからこの牛さんは普通に光を当てられて、普通に光を反射している、鏡面特性がないごく普通の牛さんだということがわかるわ

同じ設定にしましょう

banana.mtl

newmtl material_2

Ka 1.000 1.000 1.000  # white
Kd 1.000 1.000 1.000  # white
Ks 0.000 0.000 0.000  # black
Ns 10.0

3.データの作成

fit_textured_mesh.ipynbはJupyter Note Book形式で書かれているので、Visual Studio CodeにJupyterをインストールして実行していきましょう

ちょっと待ってください。Anacondaでpytorch3dという名前で仮想環境を作成したのですが、その設定はやらなくて良いのでしょうか

実行ボタンを押してごらん

f:id:nullpo24:20210818231126p:plain

あっ上部に使用できるenvが表示されました...めっちゃ優秀ですね

obj_filenameは適切に変更してセットしてね

RuntimeError: CUDA out of memory. Tried to allocate 3.75 GiB (GPU 0; 7.93 GiB total capacity; 4.22 GiB already allocated; 1.95 GiB free; 4.29 GiB reserved in total by PyTorch)

GPUのメモリが足りないようです。

オブジェクトファイルが2.2MB テクスチャファイルが15.8MBか...

とりあえず、扱いやすいようにテクスチャファイルをpngへ変換して、mtlのテクスチャファイル名をtiffからpngへ変更して、pngファイルを縮小してみよっか

4098×4098もあるけど640×640でも見た目変わらないわ。

テクスチャ画像を縮小したらうまいくいきました

3.学習

セルの実行を上から順にクリックしていけばできる[省略] f:id:nullpo24:20210910204328p:plain

4.テクスチャレンダリングによるメッシュとテクスチャの予測

あれ?生成したモデルfinal_model.objのv(頂点)がnanだ

f:id:nullpo24:20210825222555p:plain

よくわかんないから保留!


nullpo24.hatenablog.com