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という名前で仮想環境を作成したのですが、その設定はやらなくて良いのでしょうか
実行ボタンを押してごらん
あっ上部に使用できる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.学習
セルの実行を上から順にクリックしていけばできる[省略]
4.テクスチャレンダリングによるメッシュとテクスチャの予測
あれ?生成したモデルfinal_model.objのv(頂点)がnanだ
よくわかんないから保留!