百度不收录哪些网站,最新wordpress电商主题,个人网页是什么,搜索引擎营销的优缺点及案例【点云配准】【深度学习】Windows11下PCRNet代码Pytorch实现与源码讲解 提示:最近开始在【点云配准】方面进行研究,记录相关知识点,分享学习中遇到的问题已经解决的方法。 文章目录 【点云配准】【深度学习】Windows11下PCRNet代码Pytorch实现与源码讲解前言PCRNet模型运行环境…【点云配准】【深度学习】Windows11下PCRNet代码Pytorch实现与源码讲解 提示:最近开始在【点云配准】方面进行研究,记录相关知识点,分享学习中遇到的问题已经解决的方法。 文章目录 【点云配准】【深度学习】Windows11下PCRNet代码Pytorch实现与源码讲解前言PCRNet模型运行环境搭建PCRNet模型运行数据集与模型权重下载PFNet训练与测试 总结 前言
PCRNet是由卡内基梅隆大学的Sarode, Vinit等人在《PCRNet: Point Cloud Registration Network using PointNet Encoding【2019】》【论文地址】一文中提出的模型使用PointNet对点云提取全局特征不需要计算点云之间的一一对应关系快速实现了点云的配准。 在详细解析PCRNet网络之前首要任务是搭建PCRNet【Pytorch-demo地址】所需的运行环境并完成模型训练和测试工作展开后续工作才有意义。 博文使用的代码是其他作者用pytorch改写的非原论文作者源码 PCRNet模型运行环境搭建
在win11环境下安装anaconda环境参考方便搭建专用于PCRNet模型的虚拟环境。
查看主机支持的cuda版本(最高)# 打开cmd,执行下面的指令查看CUDA版本号
nvidia-smi安装GPU版本的torch【官网】PyTorch的cuda版本与系统自带的cuda版本必须一致。 其他cuda版本的torch在【以前版本】找对应的安装命令。博主安装环境参考# 创建虚拟环境
conda create -n PCRNet python3.10
# 查看新环境是否安装成功
conda env list
# 激活环境
activate PCRNet
# githup下载MiVOS源代码到适合目录内,解压文件
# 分别安装pytorch和torchvision
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
# 通过清华源安装PCRNet所需的第三方包(博主这里因为已经安装了torch,因此删除了requirements中的的torch1.4.0)
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt
# 安装open3d,这里适合博主的是0.9以上
python -m pip install open3d0.16
# 安装自定义的包emd loss
cd loss/cuda/emd_torch python setup.py install
# 查看所有安装的包
pip list
conda list安装自定义的包 emd loss 过程中可能出现的问题 解决方法只安装了CUDA的运行环境需要再安装开发环境因此按照下图进行了安装。 正确安装成功 部分错误的解决可能需要安装ninja【参考】但是也会引入新的错误博主在安装 emd loss 过程中不需要安装ninja。 PCRNet模型运行
数据集与模型权重下载
名称下载地址说明modelnet40数据集【下载地址】ModelNet40是一个常用的三维物体识别数据集用于训练和评估三维深度学习模型。预训练模型权重【Complete: c4z7】 【Paritial: pcno】在modelnet40数据集训练好的权重
将下载好的modelnet40数据集解压并拷贝到当前工程目录下(建议)这里博主对数据集文件夹进行了重命名。 将下载好的预训练权重(训练好的)拷贝到当前工程目录下(建议)这里博主对预训练权重文件进行了重命名。
PFNet训练与测试 训练可以根据硬件条件修改代码中部分训练参数epochs和batch-size修改训练次数和训练的batchsize等详细的代码内容将在后续博文中介绍。 # 源码参考命令 root:数据集的位置 CUDA_VISIBLE_DEVICES:使用gpu 0
CUDA_VISIBLE_DEVICES0 python modelnet40_train.py --root your_data_path/modelnet40_ply_hdf5_2048
# 博主执行命令 root的modelnet40_ply_hdf5_2048是原始文件名,博主这里是因为重命名
python modelnet40_train.py --root modelnet40 windows下在custom_train.py文件开头添加os.environ[‘CUDA_VISIBLE_DEVICES’] ‘0’不在命令行使用CUDA_VISIBLE_DEVICES0。 正在训练 训练权重保存在work_dirs\models\checkpoints目录下分别单独保存三个指标下最理想的权重文件 测试分别对比了深度学习模型配准、icp配准和fgr配准方法。 # 深度学习模型配准
# 源码参考命令 root:数据集的位置 checkpoint:预训练权重的位置 cuda:使用cuda
python modelnet40_evaluate.py --root your_data_path/modelnet40_ply_hdf5_2048 --checkpoint your_ckpt_path/test_min_loss.pth --cuda
# 博主执行命令 root的modelnet40_ply_hdf5_2048是原始文件名,博主这里是因为重命名了,checkpoint同理
python modelnet40_evaluate.py --root modelnet40 --checkpoint Complete_test_min_loss.pth --cuda# 深度学习模型配准
# 源码参考命令,root:数据集的位置 checkpoint:预训练权重的位置 show:展示结果
python modelnet40_evaluate.py --root your_data_path/modelnet40_ply_hdf5_2048 --checkpoint your_ckpt_path/test_min_loss.pth --show
# 博主执行命令,root的modelnet40_ply_hdf5_2048是原始文件名,博主这里是因为重命名了,checkpoint同理
python modelnet40_evaluate.py --root modelnet40 --checkpoint Complete_test_min_loss.pth --show其中绿色点云为源点云红色点云为参照点云蓝色点云为配准后的源点云可以看到蓝色点云与红色点云完全对齐这表明训练效果极佳。 上述俩个指令的没有什么区别下面命令只是可视化展现了每个点云的配准效果。 # icp配准
# 源码参考命令,root:数据集的位置 method:使用的方法(默认是深度学习的)
python modelnet40_evaluate.py --root your_data_path/modelnet40_ply_hdf5_2048 --method icp
# 博主执行命令,root的modelnet40_ply_hdf5_2048是原始文件名,博主这里是因为重命名了,checkpoint同理
python modelnet40_evaluate.py --root modelnet40 --method icp# icp配准
# 博主执行命令,root的modelnet40_ply_hdf5_2048是原始文件名,博主这里是因为重命名了,checkpoint同理
python modelnet40_evaluate.py --root modelnet40 --method icp --show可以看到蓝色点云与红色点云没有完全对齐这表明效果不是很理想。 # fgr配准
# 源码参考命令,root:数据集的位置 method:使用的方法(默认是深度学习的)
python modelnet40_evaluate.py --root your_data_path/modelnet40_ply_hdf5_2048 --method fgr --normal
# 博主执行命令,root的modelnet40_ply_hdf5_2048是原始文件名,博主这里是因为重命名了,checkpoint同理
python modelnet40_evaluate.py --root modelnet40 --method fgr --normal# fgr配准
# 博主执行命令,root的modelnet40_ply_hdf5_2048是原始文件名,博主这里是因为重命名了,checkpoint同理
python modelnet40_evaluate.py --root modelnet40 --method fgr --normal --show可以看到蓝色点云与红色点云完全对齐这表明效果极佳。
可能出现的问题1 open3d版本问题。 解决方法 将icp.py中的o3d.registration更改成o3d.pipelines.registration。 可能出现的问题2 open3d版本问题。 解决方法 将fgr.py中的o3d.pipelines.registration.registration_fast_based_on_feature_matching更改成o3d.pipelines.registration.registration_fgr_based_on_feature_matching。
暂时没有个人数据集可以训练 总结
尽可能简单、详细的介绍了PCRNet的安装流程以及PCRNet的使用方法。后续会根据自己学到的知识结合个人理解讲解PCRNet的原理和代码。