神经网络学习

最近在看一些医疗信息学的论文,需要通过神经网络的学习来对肿瘤进行分割,这里我简单总结一下接触到的这些网络结构.

RNN

RNN(Recurrent Neural Network 循环神经网络)。它跟普通的连接神经网络有什么不同呢,即这个循环是什么意思呢?这里,简单举一个例子:当我们在理解一句话意思时,孤立的理解这句话的每个词是不够的,我们需要处理这些词连接起来的整个序列; 当我们处理视频的时候,我们也不能只单独的去分析每一帧,而要分析这些帧连接起来的整个序列。也即处理序列化的信息需要用到RNN。
下面这个就生动地展示了它的结构。
在这里插入图片描述
其中X,S,O表示该层的值,U,V表示连接权重值,而W就是隐藏层上一次的值作为这一次输入的权重。上面这个抽象图的具体表示如下:
在这里插入图片描述
总结RNN循环神经网络可以画成下面这个样子:
在这里插入图片描述

CNN(卷积神经网络)

正如其名字一样,这里卷积就是在学校上的那门《数字图像处理》的卷积是一样的,就是通过一个卷积核kernel逐步对与一张图片进行点乘运算来平滑,锐化,求边界等操作。
而CNN正是通过学习来得出这些kernel进行对图片特征进行提取。

1、CNN的基本概念
(1)padding填白

我们可以知道,原图像在经过filter卷积之后,变小了,从(8,8)变成了(6,6)。假设我们再卷一次,那大小就变成了(4,4)了。
这样有什么问题呢

  • 每次卷积,图像都缩小,这样卷不了几次就没了;
  • 相比于图片中间的点,图片边缘的点在卷积中被计算的次数很少。这样的话,边缘的信息就易于丢失。
    为了解决这个问题,我们可以采用padding的方法。我们每次卷积前,先给图片周围都补一圈空白,让卷积之后图片跟原来一样大,同时,原来的边缘也被计算了更多次。
(2)stride步长
(3)pooling池化

这个pooling,是为了提取一定区域的主要特征,并减少参数数量,防止模型过拟合。
比如下面的MaxPooling,采用了一个2×2的窗口,并取stride=2:
在这里插入图片描述

(4)对多通道(channels)图片的卷积
2、CNN的组成
(1)convolutional layer(卷积层–conv)

由滤波器和激活函数构成。
一般要设置的超参数包括filters的数量、大小、步长,以及padding是“valid”还是“same”。当然,还包括选择什么激活函数。

(2)Pooling layer (池化层–POOL)

这里面没有参数需要我们学习,因为这里面的参数都是我们设置好了,要么是Maxpooling,要么是Averagepooling。
需要指定的超参数,包括是Max还是average,窗口大小以及步长。
通常,我们使用的比较多的是Maxpooling,而且一般取大小为(2,2)步长为2的filter,这样,经过pooling之后,输入的长宽都会缩小2倍,channels不变。

(3)Fully Connected layer(全连接层–FC)

这个前面没有讲,是因为这个就是我们最熟悉的家伙,就是我们之前学的神经网络中的那种最普通的层,就是一排神经元。因为这一层是每一个单元都和前一层的每一个单元相连接,所以称之为“全连接”。
这里要指定的超参数,无非就是神经元的数量,以及激活函数。
接下来,我们随便看一个CNN的模样,来获取对CNN的一些感性认识:
在这里插入图片描述

FCN(全卷积神经网络)

图像语义分割(Semantic Segmentation)是图像处理和是机器视觉技术中关于图像理解的重要一环,也是 AI 领域中一个重要的分支。语义分割即是对图像中每一个像素点进行分类,确定每个点的类别(如属于背景、人或车等),从而进行区域划分。目前,语义分割已经被广泛应用于自动驾驶、无人机落点判定等场景中。
在这里插入图片描述
截止目前,CNN已经在图像分类方面取得了巨大的成就,涌现出如VGG和Resnet等网络结构,并在ImageNet中取得了好成绩。图像分类是图像级别的!
与分类不同的是,语义分割需要判断图像每个像素点的类别,进行精确分割。图像语义分割是像素级别的!但是由于CNN在进行convolution和pooling过程中丢失了图像细节,即feature map size逐渐变小,所以不能很好地指出物体的具体轮廓、指出每个像素具体属于哪个物体,无法做到精确的分割。
针对这个问题,Jonathan Long等人提出了
Fully Convolutional Networks
(FCN)用于图像语义分割。自从提出后,FCN已经成为语义分割的基本框架,后续算法其实都是在这个框架中改进而来。

1、FCN和CNN的区别

对于CNN网络,如VGG,ResNet等,都会在网络最后加上几层全连接层,经过softmax就可以得到多类别的概率信息(如果是二分类,也可以采用sigmoid)。但是这些信息是一维的,即只能标识整个图片的类别,而不能标识每个像素点的类别,因此不能用于图像的分割。
在这里插入图片描述
而FCN将CNN后面的全连接层全部都换成了卷积,这样就可以获得一张2维的feature map,后接softmax获得每个像素点的分类信息,从而解决了分割问题。
在这里插入图片描述

2、FCN的结构
  • image经过多个conv和+一个max pooling变为pool1 feature,宽高变为1/2
  • pool1 feature再经过多个conv+一个max pooling变为pool2 feature,宽高变为1/4
  • pool2 feature再经过多个conv+一个max pooling变为pool3 feature,宽高变为1/8
  • 直到pool5 feature,宽高变为1/32。
    在这里插入图片描述
    在经过前面所有的卷积和池化操作后,就要将这些小的feature map进行放大,得到分割信息。那么我们一一来看一下每个pool在放大到原图像尺寸后的分割图,操作如下:
  • 对于FCN-32s,直接对pool5 feature进行32倍上采样获得32x upsampled feature,再对32x upsampled feature每个点做softmax prediction获得32x upsampled feature prediction(即分割图)。
  • 对于FCN-16s,首先对pool5 feature进行2倍上采样获得2x upsampled feature,再把pool4 feature和2x upsampled feature逐点相加,然后对相加的feature进行16倍上采样,并softmax prediction,获得16x upsampled feature prediction。
  • 对于FCN-8s,首先进行pool4+2x upsampled feature逐点相加,然后又进行pool3+2x upsampled逐点相加,即进行更多次特征融合。具体过程与16s类似,不再赘述。
    作者在原文中给出3种网络结果对比,明显可以看出效果:FCN-32s < FCN-16s < FCN-8s,即使用多层feature融合有利于提高分割准确性
    在这里插入图片描述

U-NET

U-Net是原作者参加ISBI Challenge提出的一种分割网络,能够适应很小的训练集(大约30张图)。U-Net与FCN都是很小的分割网络,既没有使用空洞卷积,也没有后接CRF,结构简单。
在这里插入图片描述
整个U-Net网络结构如上图,类似于一个大大的U字母:首先进行Conv+Pooling下采样;然后Deconv反卷积进行上采样,crop之前的低层feature map,进行融合;然后再次上采样。重复这个过程,直到获得输出388x388x2的feature map,最后经过softmax获得output segment map。总体来说与FCN思路非常类似。

U-NET和FCN的区别

U-NET采用了与FCN完全不同的特征融合方式:拼接
在这里插入图片描述
与FCN的逐点相加不同,U-NET采用将特征在channel维度拼接在一起,形成更厚的特征。
所以:语义分割网络在图像特征融合时也有两种方式:

  • FCN式的逐点相加
  • U-NET式的channel维度拼接融合

总结一下CNN图像语义分割的整体思路:

  • 下采样+上采样:convolution+deconvolution/resize
  • 多尺度和特征融合:特征逐点相加/特征channel维度拼接
  • 获得像素级别的segment map:对每一个像素点判别其类别

参考

1、神经网络前馈传播和反馈传播的理解–通俗易懂

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值