返回顶部
首页 > 资讯 > 后端开发 > Python >点云补全算法汇总
  • 809
分享到

点云补全算法汇总

python机器学习深度学习算法3d 2023-09-08 12:09:57 809人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

文章目录 点云补全概念点云补全(PF-Net)点云补全网络模型骨骼点逐级恢复点云最远点采样特征提取分层预测Chamfer DistanceGANBCELoss损失模块 点云补全项目应

文章目录

点云补全概念

点云补全就是希望基于观察到的残缺不全的点云生成完整的 3D 点云。由于扫描或者距离的原因导致点云局部缺失,对其进行补全,传统算法可能会补不完整,也可能会补的过于完整。

点云补全(PF-Net)

今天这里要讲的是PF-Net: Point Fractal Network for 3D Point Cloud Completion,整体网络模型:
PF-Net整体网络模型

点云补全网络模型

骨骼点逐级恢复点云

最远点采样

  • 利用骨骼点来逐级恢复点云
  • 在构建标签时依旧选择最远点采样

PF-Net最远采样法

特征提取

  • 特征提取,融合多尺度特征,信息更丰富
    PF-Net特征提取模块

PF-Net特征提取代码实现如下:

def forward(self,x):        print(x.shape)        x = torch.unsqueeze(x,1)        print(x.shape)        x = F.relu(self.bn1(self.conv1(x)))        print(x.shape)        x = F.relu(self.bn2(self.conv2(x)))        print(x.shape)        x_128 = F.relu(self.bn3(self.conv3(x)))        print(x_128.shape)        x_256 = F.relu(self.bn4(self.conv4(x_128)))        x_512 = F.relu(self.bn5(self.conv5(x_256)))        x_1024 = F.relu(self.bn6(self.conv6(x_512)))        print(x_1024.shape)        x_128 = torch.squeeze(self.maxpool(x_128),2)        print(x_128.shape)        x_256 = torch.squeeze(self.maxpool(x_256),2)        x_512 = torch.squeeze(self.maxpool(x_512),2)        x_1024 = torch.squeeze(self.maxpool(x_1024),2)        print(x_1024.shape)        L = [x_1024,x_512,x_256,x_128]        x = torch.cat(L,1)        print(x.shape)        return x
  • 输出各阶段预测点,还考虑骨骼之间的关系
    PF-Net输出模块

分层预测

PF-Net分层预测代码实现如下:

def forward(self,x):        print(np.array(x).shape)        x = self.latentfeature(x)        print(x.shape)        x_1 = F.relu(self.fc1(x)) #1024        print(x_1.shape)        x_2 = F.relu(self.fc2(x_1)) #512        print(x_2.shape)        x_3 = F.relu(self.fc3(x_2))  #256        print(x_3.shape)                        pc1_feat = self.fc3_1(x_3)        print(pc1_feat.shape)        pc1_xyz = pc1_feat.reshape(-1,64,3) #64x3 center1        print(pc1_xyz.shape)                pc2_feat = F.relu(self.fc2_1(x_2))        print(pc2_feat.shape)        pc2_feat = pc2_feat.reshape(-1,128,64)        print(pc2_feat.shape)        pc2_xyz =self.conv2_1(pc2_feat) #6x64 center2        print(pc2_xyz.shape)                pc3_feat = F.relu(self.fc1_1(x_1))        print(pc3_feat.shape)        pc3_feat = pc3_feat.reshape(-1,512,128)        print(pc3_feat.shape)        pc3_feat = F.relu(self.conv1_1(pc3_feat))        print(pc3_feat.shape)        pc3_feat = F.relu(self.conv1_2(pc3_feat))        print(pc3_feat.shape)        pc3_xyz = self.conv1_3(pc3_feat) #12x128 fine        print(pc3_xyz.shape)                pc1_xyz_expand = torch.unsqueeze(pc1_xyz,2)        print(pc1_xyz_expand.shape)        pc2_xyz = pc2_xyz.transpose(1,2)        print(pc2_xyz.shape)        pc2_xyz = pc2_xyz.reshape(-1,64,2,3)        print(pc2_xyz.shape)        pc2_xyz = pc1_xyz_expand+pc2_xyz        print(pc2_xyz.shape)        pc2_xyz = pc2_xyz.reshape(-1,128,3)         print(pc2_xyz.shape)                pc2_xyz_expand = torch.unsqueeze(pc2_xyz,2)        print(pc2_xyz_expand.shape)        pc3_xyz = pc3_xyz.transpose(1,2)        print(pc3_xyz.shape)        pc3_xyz = pc3_xyz.reshape(-1,128,int(self.crop_point_num/128),3)        print(pc3_xyz.shape)        pc3_xyz = pc2_xyz_expand+pc3_xyz        print(pc3_xyz.shape)        pc3_xyz = pc3_xyz.reshape(-1,self.crop_point_num,3)         print(pc3_xyz.shape)                return pc1_xyz,pc2_xyz,pc3_xyz #center1 ,center2 ,fine

Chamfer Distance

  • Chamfer Distance来衡量预测效果与GT之间的差异
    CD

GAN

BCELoss损失模块

BCELoss模块代码实现如下:

import mathr11 = 0 * math.log(0.8707) + (1-0) * math.log((1 - 0.8707))r12 = 1 * math.log(0.7517) + (1-1) * math.log((1 - 0.7517))r13 = 1 * math.log(0.8162) + (1-1) * math.log((1 - 0.8162))r21 = 1 * math.log(0.3411) + (1-1) * math.log((1 - 0.3411))r22 = 1 * math.log(0.4872) + (1-1) * math.log((1 - 0.4872))r23 = 1 * math.log(0.6815) + (1-1) * math.log((1 - 0.6815))r31 = 0 * math.log(0.4847) + (1-0) * math.log((1 - 0.4847))r32 = 0 * math.log(0.6589) + (1-0) * math.log((1 - 0.6589))r33 = 0 * math.log(0.5273) + (1-0) * math.log((1 - 0.5273))r1 = -(r11 + r12 + r13) / 3#0.8447112733378236r2 = -(r21 + r22 + r23) / 3#0.7260397266631787r3 = -(r31 + r32 + r33) / 3#0.8292933181294807bceloss = (r1 + r2 + r3) / 3 print(bceloss)

判别模块代码实现如下:

 def forward(self, x):        x = F.relu(self.bn1(self.conv1(x)))        x_64 = F.relu(self.bn2(self.conv2(x)))        x_128 = F.relu(self.bn3(self.conv3(x_64)))        x_256 = F.relu(self.bn4(self.conv4(x_128)))        x_64 = torch.squeeze(self.maxpool(x_64))        x_128 = torch.squeeze(self.maxpool(x_128))        x_256 = torch.squeeze(self.maxpool(x_256))        Layers = [x_256,x_128,x_64]        x = torch.cat(Layers,1)        x = F.relu(self.bn_1(self.fc1(x)))        x = F.relu(self.bn_2(self.fc2(x)))        x = F.relu(self.bn_3(self.fc3(x)))        x = self.fc4(x)        return x

点云补全项目应用

如果需要本文完整代码,以上算法论文或者点云数据资源的小伙伴可以私信我哦!

来源地址:https://blog.csdn.net/denny_data/article/details/129472080

--结束END--

本文标题: 点云补全算法汇总

本文链接: https://lsjlt.com/news/399939.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 点云补全算法汇总
    文章目录 点云补全概念点云补全(PF-Net)点云补全网络模型骨骼点逐级恢复点云最远点采样特征提取分层预测Chamfer DistanceGANBCELoss损失模块 点云补全项目应...
    99+
    2023-09-08
    python 机器学习 深度学习 算法 3d
  • 算法题汇总
    关于力扣刷题注意事项:有些题目要求原数据上修改,就没必要返还任何数值 不要怀疑程序为什么给你报错,肯定你逻辑措了 一.难度一般 力扣题目汇总(机器人返回原点,按奇偶排序,数字的补数) 力扣题目汇总(重复N次元素,反转字符串,斐波那契数) ...
    99+
    2023-01-31
    算法
  • 8种ETL算法汇总大全!看完你就全明白了
    > 算法应用场景概览 以上共计累积了8种ETL算法,其中主要分成4大类,增量累加、拉链算法是更符合数据仓库历史数据追踪的算法,但现实中基于业务及性能考虑,往往存在全删全插、增量累全算法的数据表应用。 2 全删全插模型 即Dele...
    99+
    2020-09-10
    8种ETL算法汇总大全!看完你就全明白了
  • 阿里云代理返点多少 全渠道汇总
    首先,阿里云代理商的返点政策是其重要的收入来源之一。阿里云提供多种返点政策,以吸引合作伙伴加入阿里云平台。以下是阿里云代理商的主要返点政策: 服务年费返还:合作伙伴购买阿里云的服务年费,阿里云将根据其购买时间、服务质量等因素给予一定的返...
    99+
    2023-10-28
    阿里 返点 渠道
  • 数学建模算法汇总(全网最全,含matlab案例代码)
    数学建模常用的算法分类   全国大学生数学建模竞赛中,常见的算法模型有以下30种: 最小二乘法数值分析方法图论算法线性规划整数规划动态规划贪心算法分支定界法蒙特卡洛方法随机游走算法遗传算法粒子群算法神经网络算法人工智能算法模糊数学时间序列...
    99+
    2023-10-05
    算法 matlab 开发语言
  • Reacthooks使用方法全面汇总
    目录1. 前言2. useState3. useEffect4. useLayoutEffect5. useMemo6. useCallback7. useRef8. useRedu...
    99+
    2022-11-13
    React hooks使用 React hooks
  • Java运算符的知识点与代码汇总
    一:算术运算符 1.算术运算符有哪些 ①基本四则运算符:+ - * / % ②增量赋值运算符:+= -= *= /= %= ③自增/自减运算符++ – 2.如何使用算术运算符 ...
    99+
    2024-04-02
  • 图像数据增强算法汇总(Python)
    一、数据增强概述 数据增强是一种通过使用已有的训练样本数据来生成更多训练数据的方法,可以应用于解决数据不足的问题。数据增强技术可以用来提高模型的泛化能力,减少过拟合现象。比如在狗猫识别项目中,通过随机...
    99+
    2023-10-26
    1024程序员节 深度学习 计算机视觉 人工智能 机器学习
  • 云服务器相关知识点汇总
    云服务器是一种虚拟的、共享的、高可用的计算资源,通常用于远程服务器环境。作为云计算的重要组成部分之一,云服务器的管理、运维和性能优化是非常重要的。以下是一些常见的云服务器相关知识点: 数据备份和恢复:云服务器提供数据备份和恢复的功能,可...
    99+
    2023-10-26
    知识点 服务器
  • Vue3的路由传参方法超全汇总
    目录1. name + params2. name + query3. path + query4. 路径字符串?拼接参数5. 路径字符串 / 拼接参数总结下面方法刷新参数都不会丢失...
    99+
    2023-05-17
    vue3路由传参params vue3路由传参 vue3路由传参数
  • 云服务器相关知识点汇总表
    一、云服务器的技术特点 高可用性:云服务器采用高可用技术,能够在不同的物理节点之间实现快速的数据同步和故障切换,确保服务器的正常运行。 弹性扩展:云服务器可以按需扩展存储和计算资源,根据用户需求动态调整计算能力和存储容量,实现弹性扩展。...
    99+
    2023-10-28
    知识点 汇总表 服务器
  • pandas提升计算效率的一些方法汇总
    前言 Pandas是为一次性处理整个行或列的矢量化操作而设计的,循环遍历每个单元格、行或列并不是它的设计用途。所以,在使用Pandas时,你应该考虑高度可并行化的矩阵运算。 一、避...
    99+
    2024-04-02
  • C/C++ 常用排序算法整理汇总分享
    目录(伪)冒泡排序算法:(真)冒泡排序算法:选择排序算法:直接插入排序:(分组)希尔排序:归并排序算法:迭代归并排序:迭代归并排序2:技巧01:冒泡排序技巧02:选择排序技巧03:直...
    99+
    2024-04-02
  • python人工智能tensorflow优化器Optimizer算法汇总
    目录前言tensorflow常见的Optimizer1 梯度下降法2 Adagrad下降法3 动量优化法4 RMSProp算法5 Adam算法例子1 梯度下降法2 Adagrad下降...
    99+
    2024-04-02
  • Python文件相关操作和方法汇总大全
    目录os.path文件文件读写文件删除文件复制移动目录创建目录删除目录复制目录枚举目录遍历(游走)目录文件名模式匹配fnmatchglob临时文件与目录前言:  Pytho...
    99+
    2024-04-02
  • 解决java.sql.SQLException: validateConnection false问题的方法汇总(最全)
    目录现象解决方案1(治标不治本)解决方案2解决方案3总结现象 由空指针导致的validateConnection false 解决方案1(治标不治本) 解决方案1(治标不治本): ...
    99+
    2023-03-06
    java.sql.sqlexception java.sql.sqlexception报错
  • 云计算面试题知识汇总,云计算面试经验讲解
    云计算岗位面试其实并没有很多人想的那么复杂,主要是电话面试,估计是面试的人比较少,简单的问了一些技术问题,在问了有一些商务对接方面的问题第一轮,技术面的时候,问了云计算的3个层面,云计算现在发展情况,商务面的时候,问了商务对接如何有效进行;...
    99+
    2023-06-04
  • C++数据结构与算法的基础知识和经典算法汇总
    目录算法分析的本质时间复杂度概念计算方法空间复杂度概念认识递归方法概念递归的本质基本的数据结构线性表顺序表链表栈与队列栈队列重要算法概念贪心法分治法搜索法宽度优先搜索分支限界法总结算...
    99+
    2024-04-02
  • 计算机三级数据库知识点汇总附思维导图
    目录 第一章:数据库应用系统开发方法 第二章:需求分析 第三章:数据库结构设计 第四章:数据库应用系统功能设计与实施 第五章:UML与数据库应用系统 第六章:高级数据查询 第七章:数据库及数据库对象 第八章:数据库后台编编址技术 第九章:...
    99+
    2023-09-21
    数据库 mysql
  • Python求算数平方根和约数的方法汇总
    一、求算术平方根 a= x=int(raw_input('Enter a number:')) if x >= : while a*a < x: a = a + if a*a != x: ...
    99+
    2022-06-04
    约数 平方根 方法
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作