赞
踩
首先感谢前人的经验文章,使我少走不少弯路。最近三维视觉的文章越来越多,CVPR2022的三维视觉文章已经有了很大的比重。而最近关于点云的文章越来越多的使用pytorch3D来直接训练,要复现这些文章,无疑pytorch3D更加方便。
参考这篇文章以及pytorch3D的指引,我们首先使用anaconda3新建一个虚拟环境:
conda create -n pytorch3d python=3.8
conda activate pytorch3d
然后安装对应版本的包:
conda install -c pytorch pytorch=1.7.1 torchvision=0.8.2 cudatoolkit=10.2
其中,cudatoolkit版本要和自己的cuda版本一致。
然后进入地址,下载1.10.0的cub版本,解压,在电脑的系统变量中创建 CUB_HOME,将其值设为 你的解压地址/cub-1.10.0
然后安装fvcore和ioPath:
conda install -c fvcore -c iopath -c conda-forge fvcore iopath
然后就是安装gcc与g++:
首先进入MinGW官网,下载最新版的MinGW,安装依赖包:
安装完之后添加环境变量到安装位置:
图片来源于文章
都安装完成之后,才开始正式安装pytorch3D。首先下载文件,然后在刚刚创建的pytorch3d环境中运行下载文件中的setup.py:
python setup.py install > log.txt
进入下载位置,找到log.txt文件,找到第一个error(有很多warning,可以忽略)。查看错误位置。我的错误位置在:D:/Software/Anaconda3/envs/test/lib/site-packages/torch/include\torch/csrc/jit/ir/ir.h(1347): error: member "torch::jit::ProfileOptionalOp::Kind" may not be initialized
按照给定的位置去找ir.h
文件,把第1347行代码注释掉,再运行
python setup.py install > log.txt
安装完成,pytorch3D官方文档中的测试代码:
from pytorch3d.utils import ico_sphere
from pytorch3d.io import load_obj
from pytorch3d.structures import Meshes
from pytorch3d.ops import sample_points_from_meshes
from pytorch3d.loss import chamfer_distance
#Use an ico_sphere mesh and load a mesh from an .obj e.g. model.obj
sphere_mesh = ico_sphere(level=3)
verts, faces, _ = load_obj("model.obj")
test_mesh = Meshes(verts=[verts], faces=[faces.verts_idx])
#Differentiably sample 5k points from the surface of each mesh and then compute the loss.
sample_sphere = sample_points_from_meshes(sphere_mesh, 5000)
sample_test = sample_points_from_meshes(test_mesh, 5000)
loss_chamfer, _ = chamfer_distance(sample_sphere, sample_test)
结束。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。