NICP学习:(117条消息) 激光slam理论与实践 - 第四章 前端配准(ICP)_ppipp1109的博客-CSDN博客

(117条消息) 激光SLAM:ICP升级版本NICP(Normal ICP)原理+法向量即曲率计算代码_月照银海似蛟龙的博客-CSDN博客

1.nicp pytorch版编译:  GitHub - wuhaozhe/pytorch-nicp: GPU Accelerated Non-rigid ICP for surface registration

2.按照说明,先安装pyotorch3d: pytorch3d/INSTALL.md at main · facebookresearch/pytorch3d · GitHub ,执行以下语句:

conda create -n pytorch3d python=3.9

conda activate pytorch3d

conda install -c pytorch pytorch=1.9.1 torchvision cudatoolkit=10.2

conda install -c fvcore -c iopath -c conda-forge fvcore iopath

conda install -c bottler nvidiacub

conda install pytorch3d -c pytorch3d

3.安装依赖项:pip install -r requirements.txt

其中:sklearn>=0.24.2 应改成:scikit-learn>=0.24.2

环境要求open3d最低的版本为0.14.1,于是open3d==0.14.1

4.运行python demo_nicp.py

(1)报错:libc10_cuda.so: cannot open shared object file: No such file or directory

ImportError: libc10_cuda.so After installing using Intall.MD guide · Issue #1152 · facebookresearch/pytorch3d · GitHub,这个回答用的pytorch==1.10.0,删除环境安装conda install -c pytorch pytorch=1.10.0 torchvision cudatoolkit=11.1,还是报错

(2)报错找不到pytorch3d 模型,根据pip install --no-index --no-cache-dir pytorch3d -f https://dl.fbaipublicfiles.com/pytorch3d/packaging/wheels/py38_cu113_pyt1110/download.html 安装pytorch3d,配置环境为:python=3.8,conda install -c pytorch pytorch=1.11.0 torchvision cudatoolkit=11.3,还是报错:libc10_cuda.so: cannot open shared object file

(3)ImportError: libc10_cuda.so: cannot open shared object file: No such file or directory · Issue #1060 · facebookresearch/pytorch3d · GitHub的回答,pytoch不应该是conda-forge,应该这样:

pytorch 1.6.0  py3.8_cuda10.2.89_cudnn7.6.5_0  pytorch

而我是:

pytorch   1.11.0    cpu_py38h39c826d_1    conda-forge

于是下载touch源码安装:下载

torch-1.11.0+cu113-cp38-cp38-linux_x86_64.whl和torchvision-0.12.0+cu113-cp38-cp38-linux_x86_64.whl

(4)安装后报错:libstdc++.so.6: version `GLIBCXX_3.4.26' not found

这种情况说明libstdc++.so.6连接的版本不够高。

a:查看libstdc++.so.6 运行库,注意大小写:strings /usr/lib64/libstdc++.so.6 |grep GLIBC 没有找到GLIBCXX_3.4.26

b: 直接:wget http://www.vuln.cn/wp-content/uploads/2019/08/libstdc.so_.6.0.26.zip

然后解压:unzip libstdc.so_.6.0.26.zip

c: 先备份libstdc++.so.6 :copy libstdc++.so.6 libstdc++.so.6.copy

d: 然后删除:rm libstdc++.so.6

e: 然后建立软连接: ln -s libstdc++.so.6.0.26 libstdc++.so.6

f: 再次查看:strings /usr/lib64/libstdc++.so.6 |grep GLIBC

包含了GLIBCXX_3.4.26即可解决

(5) 报错:No module named 'face_alignment',直接pip install face_alignment

5.成功:

Mesh2mesh:将一个mesh转换成需要的模型(标准模型)默认是bfm模型,需要*.obj,*.mtl以及uv贴图:扫描模型:216090个点,431544个面,通过nicp可转换成bfm模型:35709个点和70789个面

Mesh2pcl:将一个点云转换成bfm模型,需要点云上68个点的index信息

Demo_4d,通过一段视频流包含深度和彩色的图,生成bfm模型:

Denselandmark的3d点生成的bfm模型:

Denselandmark生成的flam模型:

修改生成自己的模型:demo_nicp.py

device = torch.device('cuda:0')

pcls = io3d.load_ply_as_pointcloud('./test_data/base1.ply', device = device)

norm_pcls, norm_param = normalize_pcl(pcls)

pcl_lm_file = open('./test_data/base1_lmk.txt')

lm_list = []

for line in pcl_lm_file:

line = int(line.strip())

lm_list.append(line)

target_lm_index = torch.from_numpy(np.array(lm_list)).to(device)

lm_mask = (target_lm_index >= 0)

target_lm_index = target_lm_index.unsqueeze(0)

target_lm_index_m = target_lm_index[:, lm_mask]

#bfm_meshes, bfm_lm_index = load_bfm_model(torch.device('cuda:0'))

flame_meshes = io3d.load_obj_as_mesh('./test_data/base_flame.obj', device = device)

flame_meshes, flame_norm_param = normalize_mesh(flame_meshes)

dummy_render = render.create_dummy_render([1, 0, 0], device = device)

target_lm_index_flame, lm_mask_flame = get_mesh_landmark(flame_meshes, dummy_render)

#lm_mask_flame = torch.all(lm_mask, dim = 0)

flame_lm_index_m = target_lm_index_flame[:, lm_mask]

print(target_lm_index_m)

print(flame_meshes[flame_lm_index_m])

coarse_config = json.load(open('config/coarse_grain.json'))

registered_mesh = non_rigid_icp_mesh2pcl(flame_meshes, norm_pcls, flame_lm_index_m, target_lm_index_m, coarse_config)

io3d.save_meshes_as_objs(['test_data/final2.obj'], registered_mesh, save_textures = True)

pytorch_nicp编译相关推荐

  1. go build 编译报错 missing go.sum entry for module providing package

    go build 编译报错 missing go.sum entry for module providing package 解决方法 // 移除未使用的依赖 go mod tidy 再次编译,就可 ...

  2. kotlin重写构造方法编译报错:Primary constructor call expected

    在kotlin中使用construct关键字定义构造方法,如果类定义时已经有构造方法(类名后带括号),需要添加构造方法时,需要使用以下写法: class User(var name,var age){ ...

  3. Myeclipse中项目没有代码错误提示,jsp页面无编译迹象?如何解决

    在使用Myeclipse开发项目时,发现jsp页面中嵌入的java代码没有编译的迹象,错误的get方法没有报错,没有报错信息我们如何知道我们开发的内容是正确的呢? 接下来就演示一下如何解决

  4. 初试linux编译(ubuntu+vim)+玩转智能蛇

    一.初试linux编译(ubuntu+vim) 步骤: ①下载vmware15+ubuntu桌面版映像 ②安装ubuntu ③下载vim+gcc 在ubuntu终端输入: sudo apt-get i ...

  5. java调用clang编译的so_写Java这么久,JDK源码编译过没?编译JDK源码踩坑纪实

    好奇害死羊 很多小伙伴们做Java开发,天天写Java代码,肯定离不开Java基础环境:JDK,毕竟我们写好的Java代码也是跑在JVM虚拟机上. 一般来说,我们学Java之前,第一步就是安装JDK环 ...

  6. Go 编译的可执行文件是否有动态库链接?

    Go 引用了其他包的话,是将引用的包都编译进去.用 ldd 看几个 Go 编译出来的二进制程序有的没有动态链接库的使用.但是有的又有引用动态链接库,这个是为什么? 回答:Go 默认是开启 CGO_EN ...

  7. Go 知识点(18)— 条件编译(编译标签、文件后缀)

    1. 条件编译 Go 能根据所处环境选择对应的源码进行编译.让编译器只对满足条件的代码进行编译,将不满足条件的代码舍弃,这就叫做条件编译. 在 Go 中,也称之为 Build Constraints ...

  8. RPC 笔记(03)— gRPC 概念、安装、编译、客户端和服务端示例

    1. gRPC 概念 gRPC 是 Google 开源的一款高性能的 RPC 框架.GitHub 上介绍如下: gRPC is a modern, open source, high-performa ...

  9. GCC 同时编译多个 C/C++ 文件

    以下这些操作都可以共用一条 gcc 指令: 将多个 C/C++ 源文件加工为汇编文件或者目标文件: 将多个 C/C++ 源文件或者预处理文件加工为汇编文件或者目标文件: 将多个 C/C++ 源文件.预 ...

最新文章

  1. 解决github push错误403 Forbidden while accessing
  2. 如何配置Linux的时钟同步
  3. linux中高并发socket最大连接数的优化详解
  4. Mac安装与配置idea及tomcat
  5. 什么是微型计算机的组成原理,1微型计算机基本组成原理.ppt
  6. Jupyter Notebook——如何快速地以当前文件夹目录打开 Jupyter Notebook
  7. python不能安装的问题_无法安装pythoncolam
  8. 三分钟学会使用Pytorch.scatter函数
  9. 图解机器学习算法(7) | 随机森林分类模型详解(机器学习通关指南·完结)
  10. 学习React基本渲染数据操作(-)
  11. 如何压缩ppt文件,这个方法你该知道
  12. Java作业-圆柱体积
  13. PyTorch - 27 - 带PyTorch的CNN Confusion Matrix - 神经网络编程
  14. python爬虫-喜马拉雅_晚安妈妈睡前故事
  15. Unity学习笔记-通过接入百度语音sdk实现语音唤醒功能
  16. 含protobuf程序运行时与libqgtk3.0.so冲突
  17. 神舟zx8sp7s2装linux,战神ZX8-SP7S2游戏本搭GTX1070+桌面i7芯
  18. dz论坛php5,S!淘专辑 3.0.1 For php5.2 php5.3版 dz插件分享,淘专辑是用户将喜欢的论坛帖子...
  19. 书单推荐 | web前端好书推荐(一)
  20. 慕课网-Java入门第二季实战练习-答答租车系统下载

热门文章

  1. jQuery炫酷3d背景视觉差特效
  2. Ext.net Grid拖动行排序,【最上】【最下】【上移】【下移】按钮排序
  3. xcode连接新的iPhone进行app调试教程
  4. 最近在做的事_2023第一季度
  5. 嵌入式开发(7)系统定时器(SysTick)之延时函数运用
  6. Distilling Object Detectors via Decoupled Features
  7. 制作二维码名片-手机扫描可直接保存到手机通讯录
  8. 安徽大学计算机科学与技术学院施俊,上海大学教授施俊应邀来我院做学术报告...
  9. 【MySQL】6.0 表的增删查改
  10. 心理测评软件的心理测试法的优缺点,使用心理测评软件的意义与重要性