2个人理解与观点总结:

详细知识点摘要:






MLP和FC:全连接网络,常用于分类问题:

交叉熵损失函数(数学原理:信息论的知识点)

交叉熵的作用?为什么引入交叉熵:
解决分类问题中的损失函数的定义。
在回归问题中:
真实值 y_star 和网络输出值 y 都是标量,因此损失函数可以方便地定义为均方差的形式,但是在分类问题中:
真实值(或称标签) y_star 的形式为[1; 0; 0 ],分别表示 [狗; 猫; 其他] 的概率。
全连接网络的输出值y 的形式为[ 3.2; 5.7; -1.7] 的向量形式,
很明显很难用均方差的形式y_star 和y的误差(即损失函数)。
引入softmax,将网络输出y=[ 3.2; 5.7; -1.7] 转为概率输出 [0.13; 0.87; 0] (和等于1);
引入交叉熵,解决p=[1; 0; 0 ]与q= [0.13; 0.87; 0] 的误差定义,即损失函数Loss=H(p,q)=交叉熵损失函数。
交叉熵损失函数例子:

为什么要引入 非线性激活函数??:解决梯度消失,梯度爆炸
MLP,FC可以拟合任意线性或非线性函数,并可以证明:

如何训练MLP??:梯度下降
反向传播:是一种更加高效的梯度下降!

有了CNN使得神经网络在图像处理中大放异彩!!:
什么是CNN: 卷积运算!!乘法和加法!
一维的卷积:下图中,X是输入,w是卷积核,y是输出:

感知域??
为什么选CNN而不是MLP??

padding

stride: 卷积核挪动的步长,影响感知域。

二维的卷积:


多卷积核的情况:

pooling 池化:

pointNet算法的用途:分类,分割,语义分割
pointNet网络结构:

或者

解析:
1.对每个点进行mlp运算:
和 
算法核心:max pool (要求:改变点的顺序不会影响输出的结果,mean或min也能做到但max更好)


核心算法可以概括为:
pointNet = shared MLP + max pool
pointNet 可以模拟任何的函数!
到这步后,想怎么玩就怎么玩:


除了做分类(整幅点云图的分类问题),还可以做分割:只要将每个点进行分类,就可以做分割操作!!:

pointnet的鲁棒性,对于噪声的敏感程度??
一些概念:

ponitNet++
pointNet缺少特征提取,因此pointNet的作者又创建了pointnet++算法 :
pointnet++ = pointnet + CNN

set abstraction是pointNet++特征提取的基本组成单元,用set abstraction来实现多重特征提取:

已知:点云经过pointNet后的特点变为如下关系,其中N表示点数:

在set abstraction中主要精力以下3个步骤:
第一步,下采样(Sampling):主要是点数发生了变化,N0C ~~> N1C,N1
第二步,Grouping:以采样点为中心,取K邻域点,得到一个区域,则一共有N1个这样的区域,每个区域有K个点(包括采样点在内)。

第三步,将N1个grouping区域,分别输入到一个pointNet网络里,由于每个区域都有K个点,即每个grouping区域当作单独的点云用pointNet网络处理:

所以有:

即:

需要注意的是,在第三步的pointNet处理中,在输入pointNet网络之前要将每个grouping区域中的点进行归一化处理,避免点的绝对位置对结果造成影响,即:

除了set abstraction 之外的其他多重特征提取的方法:
方法1. 在grouping的K邻域选择时选择多个半径然后将经过pointNet后得到的特征向量组合起来。

方法2. 感知域变宽,考了了上一层sampling得到的特征:

训练之前,点云的预处理:
【1】深蓝学院