【Python】PyTorch3DをWindowsにインストールする

【Python】PyTorch3DをWindowsにインストールする プログラミング

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.62016年12月23日2021年12月
3.72018年6月27日2023年6月
3.82019年10月14日2024年10月
3.92020年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コマンドに関しては次の記事が参考になります。

windows%e3%82%92%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%ab%e3%81%99%e3%82%8b/

インストールに話を戻しましょう。
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の動作確認についての説明でした。

タイトルとURLをコピーしました