深度学习——3D点云

深度学习点云综述文章

Deep Learning for 3D Point Clouds: A Survey中文翻译 - lakaka - 博客园 (cnblogs.com)

一文尽览 | 首篇Transformer在3D点云中的应用综述(检测/跟踪/分割/降噪/补全) - 知乎 (zhihu.com)

物体三维表达方式

img

点云应用

img

imgimg

点云处理任务

img

img

数据集

img

img

img

点云数据特征

img

  • 无序性:只是点而已,排列顺序不影响
  • 近密远疏的特性: 扫描与视角不同导致
  • 非结构化数据:直接CNN有点难

点云深度学习模型

Point cloud is converted to other representations before it’s fed to a deep neural network

img

体素化方法 Volumetric-based Methods

体素化方法将点云转换为致密的三维体素模型, 并对其应用三维卷积,以模仿和复制卷积神经网络在平面图像分析上的成功.然而三维卷积的计算量过大,这限制了处理模型的分辨率,使得在数据转换过程中损失了大量的模型细节

img

[1]

ZHOU Y, TUZEL O. VoxelNet: End-to-End Learning for Point Cloud Based 3D Object Detection[M]. arXiv, 2017.

img

多视角图像渲染 Multi-view based Methods

  • 多视角图像渲染将三维数据渲染为多个视角下观察到的平面图像, 巧妙地解决了模型自遮挡的问题,但依然无法保证三维模型的全部细节不被遮挡,且计算量较大

  • img

  • [1]

SU H, MAJI S, KALOGERAKIS E, 等. Multi-view Convolutional Neural Networks for 3D Shape Recognition[M]. arXiv, 2015.

img

直接在点云上特征学习 Point-based Methods

Challenges

The model has to respect properties of point clouds:

• Unordered point set as input

Model needs to be invariant to N! permutations.

img

• Invariance under geometric transformations

Point cloud rotations should not alter classification results.

img

PointNet

img

img

PointNet++

img

点云数据可视化

CloudCompare

CloudCompare是一款3D点云处理软件(例如用激光扫描仪获得的点云)。它还可以处理三角形网格和校准图像。

MeshLab

MeshLab是三维立体网格处理软体,为自由软体,首先发布于2005年年底。此软体可显示及处理大量的非结构化网格,并提供编辑、清理、修复及查核等功能,可对模型进行渲染转档

三维点云深度学习是指利用深度学习技术处理和分析由三维坐标数据(通常是XYZ坐标)构成的点云数据。这种技术在计算机视觉、机器人学和自动驾驶等领域有广泛应用,例如物体识别、场景理解、形状分析等。典型的三维点云深度学习任务可能包括点云分类、点云语义分割或生成3D模型。 在编写此类代码时,通常会使用深度学习框架如TensorFlow、PyTorch或MMDetection3D,它们提供了针对点云数据特性的专用层,如PointNet、PointCNN或Graph Convolutional Networks (GCNs)。以下是一个简化示例,展示如何使用PyTorch构建一个简单的基于PointNet的模型: ```python import torch from torch_geometric.nn import PointConv class PointCloudModel(torch.nn.Module): def __init__(self): super(PointCloudModel, self).__init__() self.conv1 = PointConv(torch.nn.Linear(3, 64), aggr='max') self.conv2 = PointConv(torch.nn.Linear(64, 128)) self.pool = torch.nn.MaxPool1d(num_points=5) self.fc1 = torch.nn.Linear(128 * 5, 256) self.fc2 = torch.nn.Linear(256, num_classes) # 根据实际任务调整类别数 def forward(self, x, pos): x = self.conv1(x, pos) x = torch.relu(x) x = F.dropout(x, training=self.training) x = self.conv2(x, pos) x = torch.relu(x) x = self.pool(x, dim=-2) # 对每个局部区域池化 global_feat = x.view(-1, 128 * 5) global_feat = torch.relu(self.fc1(global_feat)) global_feat = F.dropout(global_feat, training=self.training) out = self.fc2(global_feat) return out # 使用模型 model = PointCloudModel() input_pointcloud = torch.randn(batch_size, num_points, 3) # 三维点特征 input_pos = torch.randn(batch_size, num_points, 3) # XYZ坐标 output = model(input_pointcloud, input_pos) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ROJS

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值