深度学习算法简要总结系列
Posted 我真的太难了啊
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深度学习算法简要总结系列相关的知识,希望对你有一定的参考价值。
今天突发奇想,准备一个总结系列,以备面试只需,嘿嘿,忘了就回来看看,以框架流程为主,不涉及细节、
点云
-
pointnet
代码仓库
https://github.com/yanx27/Pointnet_Pointnet2_pytorch
参考博客
最远点采样(Farthest Point Sampling)介绍
【3D计算机视觉】PointNet++的pytorch实现代码阅读
论文阅读笔记 | 三维目标检测——PointNet++
论文阅读笔记 | 三维目标检测——PointNet
PointNet++详解(一):数据增强方法
一文搞懂PointNet全家桶——强势的点云处理神经网络
3D点云深度学习PointNet源码解析——数据预处理
【3D计算机视觉】从PointNet到PointNet++理论及pytorch代码
【三维目标分类】PointNet++详解(一)
-
数据
代码中的数据处理 provider.py 中
随机顺序 shuffle_data() shuffle_points()
随机旋转 rotate_perturbation_point_cloud_with_normal()
随机噪声 jitter_point_cloud()
随机平移 shift_point_cloud()
随机缩放 random_scale_point_cloud()
随机丢弃 random_point_dropout() -
模型
具体来说,对于每一个N × 3 N\\times 3N×3的点云输入,网络先通过一个T-Net将其在空间上对齐(旋转到正面),再通过MLP将其映射到64维的空间上,再进行对齐,最后映射到1024维的空间上。这时对于每一个点,都有一个1024维的向量表征,而这样的向量表征对于一个3维的点云明显是冗余的,因此这个时候引入最大池化操作,将1024维所有通道上都只保留最大的那一个,这样得到的1 × 1024 的向量就是N 个点云的全局特征。1.输入为一帧的全部点云数据的集合,表示为一个nx3的2d tensor,其中n代表点云数量,3对应xyz坐标。(输入的维度是 nx3 是二维的)
2.输入数据先通过和一个T-Net学习到的转换矩阵相乘来对齐,保证了模型的对特定空间转换的不变性。(T-Net是针对点云旋转不变性设计的网络,目的是将点云旋转到合适的位置)
3.通过多次mlp对各点云数据进行特征提取后,再用一个T-Net对特征进行对齐。(用mlp提取特征是为了将点云升维(到 nx1024),以便后面进行max-pooling,不至于最终特征很少)
4.在特征的各个维度上执行maxpooling操作来得到最终的全局特征。
5.对分类任务,将全局特征通过mlp来预测最后的分类分数;对分割任务,将全局特征和之前学习到的各点云的局部特征进行串联(concat),再通过mlp得到每个数据点的分类结果。
-
-
pointnet++
pointnet++取消了T-Net网络对齐,在点云数据的处理上提出了局部划分(为了获取局部特征)。因为考虑稀疏问题,提出了MSG和MRG(代码似乎没有MRG)
-
数据
pointnet++中,没有了T-Net网络做转换对齐什么的,他直接在全局的数据上进行局部划分,然后在每个局部数据上进行pointnet提取特征(pointnet其实就是一个特征提取器了,里面就是卷积了)。
1、sample_and_group() 局部划分,如名字一样,先sample在group。
2、sample_and_group() 实现步骤- 先用farthest_point_sample函数实现最远点采样FPS得到采样点的索引,再通过index_points将这些点的从原始点中挑出来,作为new_xyz
- 利用query_ball_point和index_points将原始点云通过new_xyz 作为中心分为npoint个球形区域其中每个区域有nsample个采样点
- 每个区域的点减去区域的中心值
- 如果每个点上面有新的特征的维度,则用新的特征与旧的特征拼接,否则直接返回旧的特征
-
模型
数据在做完sample_and_group后,就送到网络去提取特征了。
MSG体现在哪呢,他在局部划分时,有一个半径参数,就是取不同的半径,最后将这些半径不一样的特征拼接在一起。
在分类里没有拼接,在分割里是做了拼接的(cat)
pointnet++的PointNetSetAbstractionMsg层里包括了局部划分和特征提取
pointnet++中的PointNetFeaturePropagation层的实现主要通过线性差值与MLP堆叠完成。
-
pointnet系列就算完结了。
目标检测
- YOLOv1
这是经典中的经典了,总有新的博客出现,而且讲的越来越好了,以往的疑惑都解开了,就总结一个YOLO系列!
以上是关于深度学习算法简要总结系列的主要内容,如果未能解决你的问题,请参考以下文章