PyTorch3Dは、Windows 10にインストールできます。
実際にインストールして、動作確認もできています。
この記事では、PyTorch3DをWindows 10にインストールする方法を解説しています。
本記事の内容
- PyTorch3Dとは?
- PyTorch3Dのシステム要件
- PyTorch3Dのインストール
- PyTorch3Dの動作確認
それでは、上記に沿って説明していきます。
PyTorch3Dとは?
PyTorch3Dは、深層学習と3Dに関するツールキットを提供しています。
その目的は、深層学習と3Dが交差する分野の研究を加速させることです。
どちらかと言うと、研究者向けのPythonライブラリと言えます。
そして、PyTorchの開発元であるFacebookがPyTorch3Dの開発を主導しています。
3Dを対象にした機械学習を行う場合には、PyTorch3Dが役に立つということです。
しかし、PyTorch3Dはそこまで普及していません。
Google Trendでも、「PyTorch3D」のデータが収集できないレベルです。
そうだとしても、3Dは必ず来る分野と言えます。
それにPyTorchは、勢いのある機械学習のフレームワークですからね。
以下は、「PyTorch」の検索ボリュームにおける傾向となります。
その意味でも、PyTorch3Dは遅かれ早かれ、もっと普及していくでしょう。
以上、PyTorch3Dについて説明しました。
次は、PyTorch3Dのシステム要件を確認します。
PyTorch3Dのシステム要件
現時点(2021年8月)でのPyTorch3Dの最新バージョンは、0.4.0となります。
この最新バージョンは、2021年2月10日にリリースされています。
PyTorch3Dのシステム要件は、少し複雑です。
以下の点に絞って説明します。
- OS
- Python
- PyTorch
それぞれを下記で説明します。
OS
サポートOSに関しては、以下を含むクロスプラットフォーム対応です。
- Windows
- macOS
- Linux
Windows未対応の時期もあったようです。
最新の0.4.0では、Windowsもサポート対象に入っています。
Python
サポート対象となるPythonのバージョンは以下。
- Python 3.6
- Python 3.7
- Python 3.8
- Python 3.9
上記は、下記のPythonの公式開発サイクルに準じています。
バージョン | リリース日 | サポート期限 |
3.6 | 2016年12月23日 | 2021年12月 |
3.7 | 2018年6月27日 | 2023年6月 |
3.8 | 2019年10月14日 | 2024年10月 |
3.9 | 2020年10月5日 | 2025年10月 |
対応状況を見ると、PyTorch3Dは適切にメンテナンスされていると言えますね。
PyTorch
PyTorch3Dは、PyTorchに依存しています。
名前に「PyTorch」と入っているぐらいですからね。
そのため、PyTorchのインストールは必須となります。
PyTorch3Dのインストール前に事前にインストールしておきます。
インストールするPyTorchは、現時点(2021年8月)での最新バージョン1.9.0で問題ありません。
PyTorchのインストールは、次の記事で解説しています。
利用マシンがGPU搭載であれば、GPU対応版のPyTorchをインストールしましょう。
PyTorch3Dの公式でも、そのことを薦めています。
まとめ
PyTorch3Dの公式のインストール手順
https://github.com/facebookresearch/pytorch3d/blob/master/INSTALL.md
上記ページでは、要件がいろいろと記載されています。
しかし、どうも不親切です。
例えば、「gcc & g++ ≥ 4.9」です。
これが記載されていれば、必要と思いますよね。
ただ、インストール(動作確認)の段階では不要です。
どの段階で必要になるのか、イマイチわかりません。
必要になったら、その時にインストールしましょう。
もしかしたら、OSによって異なるのかもしれません。
少なくとも、Windows 10では不要でした。
あと、次のモノは個別にインストール不要です。
PyTorch3Dをインストールすれば、自動的にインストールされます。
- fvcore
- ioPath
以上、PyTorch3Dのシステム要件を説明しました。
次は、PyTorch3Dをインストールしていきます。
PyTorch3Dのインストール
まずは、現状のインストール済みパッケージを確認しておきます。
PyTorch(GPU版)をインストールしただけの状況です。
>pip list Package Version ----------------- ------------ numpy 1.21.1 Pillow 8.3.1 pip 21.2.2 setuptools 57.4.0 torch 1.9.0+cu111 torchaudio 0.9.0 torchvision 0.10.0+cu111 typing-extensions 3.10.0.0
次にするべきことは、pipとsetuptoolsの更新です。
pipコマンドを使う場合、常に以下のコマンドを実行しておきましょう。
python -m pip install --upgrade pip setuptools
では、PyTorch3Dのインストールです。
PyTorch3Dのインストールは、以下のコマンドとなります。
pip install pytorch3d
通常であれば、このコマンドで最新版(0.4.0)がインストールできます。
しかし、なぜかバージョン0.0.1(2019年11月14日リリース)がインストールされることになります。
これは、環境(OSやIDE)によるのかもしれません。
このような場合は、GitHubから直接インストールしましょう。
pip install "git+https://github.com/facebookresearch/pytorch3d.git@stable"
「@stable」を付けることで、安定版が選択されます。
なお、Windowsの場合に、gitコマンドに関しては次の記事が参考になります。
インストールに話を戻しましょう。
PyTorch3Dのインストールは、かなり時間がかかります。
気長に待ちましょう。
インストールが完了したら、インストールされたパッケージを確認します。
>pip list Package Version ----------------- ------------------ colorama 0.4.4 fvcore 0.1.5.post20210730 iopath 0.1.9 numpy 1.21.1 Pillow 8.3.1 pip 21.2.2 portalocker 2.3.0 pytorch3d 0.4.0 pywin32 301 PyYAML 5.4.1 setuptools 57.4.0 tabulate 0.8.9 termcolor 1.1.0 torch 1.9.0+cu111 torchaudio 0.9.0 torchvision 0.10.0+cu111 tqdm 4.62.0 typing-extensions 3.10.0.0 yacs 0.1.8
そこまで多くのパッケージが、インストールされるわけではないようです。
でも、仮想環境を利用する方がいいでしょうね。
Pythonでの仮想環境の利用は、次の記事でまとめています。
案外簡単にできます。
以上、PyTorch3Dのインストールの説明でした。
最後は、PyTorch3Dの動作確認を行います。
PyTorch3Dの動作確認
PyTorch3Dの動作確認を行います。
わかりやすように、3Dモデルを表示しましょう。
そのためには、以下の2点の準備が必要となります。
- 3Dモデル(objファイル)の用意
- matplotlibのインストール
それぞれを以下で説明します。
3Dモデル(objファイル)の用意
サンプルとして用意されている3Dモデルをダウンロードします。
https://dl.fbaipublicfiles.com/pytorch3d/data/dolphin/dolphin.obj
dolphin.objというファイル名で保存します。
matplotlibのインストール
3Dモデルを表示するために、matplotlibを利用します。
matplotlibのインストールは、次の記事で説明しています。
まとめ
準備が整ったら、次のコードを実行しましょう。
import os import torch from pytorch3d.io import load_obj, save_obj from pytorch3d.structures import Meshes from pytorch3d.utils import ico_sphere from pytorch3d.ops import sample_points_from_meshes from pytorch3d.loss import ( chamfer_distance, mesh_edge_loss, mesh_laplacian_smoothing, mesh_normal_consistency, ) import numpy as np from tqdm.notebook import tqdm from mpl_toolkits.mplot3d import Axes3D import matplotlib.pyplot as plt import matplotlib as mpl mpl.rcParams['savefig.dpi'] = 80 mpl.rcParams['figure.dpi'] = 80 # デバイスのセット if torch.cuda.is_available(): device = torch.device("cuda:0") else: device = torch.device("cpu") print("WARNING: CPU only, this will be slow!") # メッシュファイルの読み込み trg_obj = os.path.join('dolphin.obj') # 頂点と面とauxの取得 verts, faces, aux = load_obj(trg_obj) faces_idx = faces.verts_idx.to(device) verts = verts.to(device) # (0,0,0)を中心とする半径1の球にフィットするように正規化・中心化 center = verts.mean(0) verts = verts - center scale = max(verts.abs().max(0)[0]) verts = verts / scale # ターゲットメッシュの生成 trg_mesh = Meshes(verts=[verts], faces=[faces_idx]) # ソースメッシュの生成 src_mesh = ico_sphere(4, device) # メッシュのプロット def plot_pointcloud(mesh, title=""): points = sample_points_from_meshes(mesh, 5000) x, y, z = points.clone().detach().cpu().squeeze().unbind(1) fig = plt.figure(figsize=(5, 5)) ax = Axes3D(fig) ax.scatter3D(x, z, -y) ax.set_xlabel('x') ax.set_ylabel('z') ax.set_zlabel('y') ax.set_title(title) ax.view_init(190, 30) plt.show() # ターゲットメッシュのプロット plot_pointcloud(trg_mesh, "Target mesh") # ソースメッシュのプロット(今回のサンプルでは無効にしておく) # plot_pointcloud(src_mesh, "Source mesh")
上記を実行すると、次のような画面が表示されます。
この画面が見えたら、とりあえず動作確認はOKでしょう。
3Dであるため、マウスで角度を変えて見ることも可能です。
以上、PyTorch3Dの動作確認についての説明でした。