深度学习笔记

您所在的位置:网站首页 卷积池化层作用是什么原理 深度学习笔记

深度学习笔记

2024-03-26 07:48| 来源: 网络整理| 查看: 265

目录

1.什么是三维卷积

1.1 三维卷积简介

1.2 三维卷积的工作原理

2,三维卷积核多通道卷积的区别

2.1 多通道卷积

 2.2 三维卷积和多通道卷积之间的区别

2.3 总结

3,三维卷积的应用

3.1 视频分类

3.2 点云分类

3.2.1 PointNet网络亮点

3.2.2  PointNet网络结构

3.3 图像分割(U-Net)

3.3.1 二维的U-Net

3.3.2 三维的U-Net

1.什么是三维卷积 1.1 三维卷积简介

      二维卷积是在单通道的一帧图像上进行滑窗操作,输入是高度H*宽度W的二维矩阵。三维卷积输入多了深度C这个维度,输入是高度H*宽度W*深度C的三维矩阵。在卷积神经网络中,网络每层的宽度是由每一层特征图图的通道数绝决定的。多通道卷积看起来和三维卷积有一样的深度,但两者之间是有本质的区别的。

      下面就是 3D 卷积,其过滤器深度小于输入层深度(核大小C2

       用两个7*7*3的3D卷积核对5个channels分别进行卷积,获得两个系列,每个系列5个channels(7*  7表示空间维度,3表示时间维度,也就是每次操作3帧图像),同时,为了增加特征maps的个数,在这一层采用了两种不同的3D卷积核,因此C2层的特征maps数量为:(((7-3)+1)*  3+((6-3)+1)*  2)*  2=23*  2。这里右乘的2表示两种卷积核。特征maps的大小为:((60-7)+1)*  ((40-7)+1)=54 * 34。然后为卷积结果加上偏置套一个tanh函数进行输出。(典型神经网。)

C2—>S3

   2x2池化,下采样。下采样之后的特征maps数量保持不变,因此S3层的特征maps数量为:23 *2。特征maps的大小为:((54 / 2) *  (34 /2)=27  *17

S3—>C4

   为了提取更多的图像特征,用三个7*6*3的3D卷积核分别对各个系列各个channels进行卷积,获得6个系列,每个系列依旧5个channels的大量maps。

我们知道,从输入的7帧图像获得了5个通道的信息,因此结合总图S3的上面一组特征maps的数量为((7-3)+1) * 3+((6-3)+1) * 2=23,可以获得各个通道在S3层的数量分布:

前面的乘3表示gray通道maps数量= gradient-x通道maps数量= gradient-y通道maps数量=(7-3)+1)=5;

后面的乘2表示optflow-x通道maps数量=optflow-y通道maps数量=(6-3)+1=4;

假设对总图S3的上面一组特征maps采用一种7 6 3的3D卷积核进行卷积就可以获得:

((5-3)+1)* 3+((4-3)+1)* 2=9+4=13;

三种不同的3D卷积核就可获得13* 3个特征maps,同理对总图S3的下面一组特征maps采用三种不同的卷积核进行卷积操作也可以获得13*3个特征maps,

因此C4层的特征maps数量:13* 3* 2=13* 6

C4层的特征maps的大小为:((27-7)+1)* ((17-6)+1)=21*12

然后加偏置套tanh。

C4—>S5

3X3池化,下采样。此时每个maps的大小:7* 4。通道maps数量分布情况如下:

gray通道maps数量= gradient-x通道maps数量= gradient-y通道maps数量=3

optflow-x通道maps数量=optflow-y通道maps数量=2;

S5—>C6

      进行了两次3D卷积之后,时间上的维数已经被压缩得无法再次进行3D卷积(两个光流channels只有两个maps)。此时对各个maps用7*42D卷积核进行卷积,加偏置套tanh(烦死了!),获得C6层。C6层维度已经相当小,flatten为一列有128个节点的神经网络层。

C6—>output

      经典神经网络模型两层之间全链接,output的节点数目随标签而定。  

3.2 点云分类

     点云是一些三维点的集合,长使用N*3的矩阵便是,N表示的是点云的点数,在集合上,点的顺序不影响它在空间中对整体形状的表示。点云具有无序性,在几何上,点的顺序不影响它在空间中对整体形状的表示。所以对点云的输入不做处理,很难设计模型来完成分类的任务。最具代表的对点云处理的神经网络为PointNet,下面详细介绍该网络的工作原理。 

3.2.1 PointNet网络亮点

1)空间变换网络解决旋转问题:三维的STN(空间变换网络)可以通过学习点云本身的位姿信息学习到一个最有利于网络进行分类或分割的DxD旋转矩阵(D代表特征维度,pointnet中D采用3和64)。至于其中的原理,我的理解是,通过控制最后的loss来对变换矩阵进行调整,pointnet并不关心最后真正做了什么变换,只要有利于最后的结果都可以。pointnet采用了两次STN,第一次input transform是对空间中点云进行调整,直观上理解是旋转出一个更有利于分类或分割的角度,比如把物体转到正面;第二次feature transform是对提取出的64维特征进行对齐,即在特征层面对点云进行变换。

空间变换网络STN,可有参考微博:

https://accounts.google.com/b/0/AddMailService

2)maxpooling解决无序性问题:网络对每个点进行了一定程度的特征提取之后,maxpooling可以对点云的整体提取出global feature。特征网络提取到的特征是n*1024,通过最大池化变为1*1024;

3.2.2  PointNet网络结构

      其中,mlp是通过共享权重的卷积实现的,第一层卷积核大小是1x3(因为每个点的维度是xyz),之后的每一层卷积核大小都是1x1。即特征提取层只是把每个点连接起来而已。经过两个空间变换网络和两个mlp之后,对每一个点提取1024维特征,经过maxpool变成1x1024的全局特征。再经过一个mlp(代码中运用全连接)得到k个score。分类网络最后接的loss是softmax。

   上图中 STN的作用是为了学习点云本身的位姿信息,得到旋转矩阵。在该网络中,有两次这样的学习过程,第一次是输入转换,它对空间中的点云进行旋转调整后得到更有利于任务的角度,如把物体转到正面,变换矩阵是3*3。第二次是特征转换,它将提取的64维的特征对齐,在特征层对点云进行变换,变换举证是64*64.但是由于变换矩阵过大,通过添加正则项,可以使变换矩阵近似正交矩阵,因此大大降低参数数量。

变换矩阵部分STN的代码实现:

3.3 图像分割(U-Net)

    除了分类任务,三维卷积还可以用于三维图像,视频,点云的分割,这些任务同样可以采用U-Net结构,只需要将二维的卷积和反卷积全部替换成三维的即可。

3.3.1 二维的U-Net

     U-Net的U形结构如下图所示。网络是一个经典的全卷积网络(即网络中没有全连接操作)。网络的输入是一张572*572的边缘经过镜像操作(见下面的解释)的图片(input image tile),网络的左侧(红色虚线)是由卷积和Max Pooling构成的一系列降采样操作,论文中将这一部分叫做压缩路径(contracting path)。压缩路径由4个block组成,每个block使用了3个有效卷积和1个Max Pooling降采样,每次降采样之后Feature Map的个数乘2,因此有了图中所示的Feature Map尺寸变化。最终得到了尺寸为 32*32 的Feature Map。

       网络的右侧部分(绿色虚线)在论文中叫做扩展路径(expansive path)。同样由4个block组成,每个block开始之前通过反卷积将Feature Map的尺寸乘2,同时将其个数减半(最后一层略有不同),然后和左侧对称的压缩路径的Feature Map合并,由于左侧压缩路径和右侧扩展路径的Feature Map的尺寸不一样,U-Net是通过将压缩路径的Feature Map裁剪到和扩展路径相同尺寸的Feature Map进行归一化的(即图1中左侧虚线部分)。扩展路径的卷积操作依旧使用的是有效卷积操作,最终得到的Feature Map的尺寸是 388*388 。由于该任务是一个二分类任务,所以网络有两个输出Feature Map。是因为U-Net采用了与FCN完全不同的特征融合方式:拼接!

总结

U-Net是比较早的使用多尺度特征进行语义分割任务的算法之一,其U形结构也启发了后面很多算法。但其也有几个缺点:

有效卷积增加了模型设计的难度和普适性;目前很多算法直接采用了same卷积,这样也可以免去Feature Map合并之前的裁边操作其通过裁边的形式和Feature Map并不是对称的,个人感觉采用双线性插值的效果应该会更好。

镜像操作: 

 U-Net对输入数据做了镜像操作,下面看看镜像操作是什么。

镜像操作即是给输入图像加入一个对称的边如下图所示,那么边的宽度是多少呢?一个比较好的策略是通过感受野确定。因为有效卷积是会降低Feature Map分辨率的,但是我们希望512*512  的图像的边界点能够保留到最后一层Feature Map。所以我们需要通过加边的操作增加图像的分辨率,增加的尺寸即是感受野的大小,也就是说每条边界增加感受野的一半作为镜像边。

3.3.2 三维的U-Net

        生物医学影像(biomedical images)很多时候都是块状的,也就是说是由很多个切片构成一整张图的存在。如果是用2D的图像处理模型去处理3D本身不是不可以,但是会存在一个问题,就是不得不将生物医学影像的图片一个slice一个slice成组的(包含训练数据和标注好的数据)的送进去设计的模型进行训练,在这种情况下会存在一个效率问题,因而很多时候处理块状图的时候会让任感到不适,并且数据预处理的方式也相对比较繁琐(tedious)。

     所以,论文的作者就提出来了3D -Net模型,模型不仅解决了效率的问题,并且对于块状图的切割只要求数据中部分切片被标注即可(可参考下图说明)。

      整个3D U-Net的模型是基于之前U-Net(2D)创建而来,同样包含了一个encoder部分和一个decoder部分,encoder部分是用来分析整张图片并且进行特征提取与分析,而与之相对应的decoder部分是生成一张分割好的块状图。论文中使用的输入图像的大小是132 * 132 * 116,整个网络的结构前半部分(analysis path)包含及使用如下卷积操作:

a. 每一层神经网络都包含了两个 3 * 3 * 3的卷积(convolution)

b. Batch Normalization(为了让网络能更好的收敛convergence)

c. ReLU

d. Downsampling:2 * 2 * 2的max_polling,步长stride = 2

而与之相对应的合成路径(synthesis path)则执行下面的操作:

a. upconvolution: 2 * 2 * 2,步长=2

b. 两个正常的卷积操作:3 * 3 * 3

c. Batch Normalization

d. ReLU

e. 于此同时,需要把在analysis path上相对应的网络层的结果作为decoder的部分输入,这样子做的原因跟U-Net博文提到的一样,是为了能采集到特征分析中保留下来的高像素特征信息,以便图像可以更好的合成。

       整体的一个网络结构如上图所示,其实可以看出来跟2D结构的U-Net是基本一样,唯一不同的就是全部2D操作换成了3D,这样子做了之后,对于volumetric image就不需要单独输入每个切片进行训练,而是可以采取图片整张作为输入到模型中(PS:但是当图像太大的时候,此时需要运用random crop的技巧将图片随机裁切成固定大小模块的图片放入搭建的模型进行训练,当然这是后话,之后将会在其他文章中进行介绍)。除此之外,论文中提到的一个亮点就是,3D U-Net使用了weighted softmax loss function将未标记的像素点设置为0以至于可以让网络可以更多地仅仅学习标注到的像素点,从而达到普适性地特点。

总结

论文针对肾脏的生物医学影像的分割结果达到了IoU=86.3%的结果。3D U-Net的诞生在医学影像分割,特别是那些volumetric images都是由很大帮助的,因为它很大程度上解决了3D图像一个个slice送入模型进行训练的尴尬局面,也大幅度的提升训练效率,并且保留了FCN和U-Net本来具备的优秀特征。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3