§10.5 卷积神经网络的层结构
卷积神经网络最初为解决图像识别问题而提出,目前广泛应用于图像,视频,音频和文本数据,可以当做深度学习的代名词。
常见的经典神经网络结构:LeNet、 AlexNet、 ResNet、VggNet。前图像分类中的ResNet, 目标检测领域占统治地位的FasterR-CNN,分割中最牛的Mask-RCNN,UNet和经典的FCN都是以这些常见网络为基础发展起来的。
1、典型的卷积神经网络层
最典型的卷积神经网络层主要由卷积层、 池化层、 全连接层组成. 其中卷积层与池化层配合, 组成多个卷积组, 逐层提取特征, 最终通过若干个全连接层完成分类.
卷积层(ConvolutionLayer)
卷积的目的是为了得到物体的边缘形状特征提取,卷积层进行的处理就是卷积运算,卷积运算相当于图像处理中的“滤波器运算”。
池化层(PoolingLayer)
在构建卷积神经网络时,通常在每个卷积层之后插入一个池化层,以减小表示的空间大小,减少参数数量,从而降低计算复杂度。此外,池化层也有助于解决过度拟合问题。
全连接层(fullyconnectedlayers)
全连接层中的每个神经元与其前一层的所有神经元进行全连接,两层之间所有神经元都有权重连接。全连接层在整个卷积神经网络中起到“分类器”的作用,可以整合卷积层或者池化层中具有类别区分性的局部信息。
2、卷积神经网络可视化
卷积神经网络CNN对于大型图像处理有出色表现。 通过卷积、 池化、激活等操作的配合,卷积神经网络能够较好的学习到空间上关联的特征。对于卷积神经网络CNN的计算过程则可以利用数据可视化工具把每一个步骤呈现出来。
利用Keras观察 CNN 到底如何理解我们送入的训练图片的. 下面示例使我们能形象直观地看到输入图像经过 CNN 卷积层和池化层处理之后的结果, 帮助理解卷积核的作用。

从不同卷积层可视化输出的特征图大概可以总结出一点规律:
1. 浅层网络( 例如第一层)具有图像边缘检测功能,提取轮廓、形状等特征,特征数据与原始的图像数据比较接近。
2. 相对而言,层数越深,卷积核输出的内容也越来越抽象,保留的信息也越来越少,图像的分辨率是越来越小。
3、深度学习框架
深度学习框架已被广泛应用于计算机视觉、 语音识别、自然语言处理与生物信息学等领域, 并获取了极好的效果。 每一类框架都以不同的方式进行构建, 具有不同的特点。
1、TensorFlow
TensorFlow是机器学习和深度学习的最流行工具之一,是由谷歌公司开发的开源库,它拥有多层级结构,可部署于各类服务器 、PC 终端和网页并支持 GPU 和 TPU 高性能数值计算,被广泛应用于产品开发和各领域的科学研究。TensorFlow功能强大,执行效率高,支持各种平台。然而,TensorFlow 属于较底层的机器学习库,学习门槛高,对于初学者不容易上手。2019年3月已发布最新的 TensorFlow2.0版本。
官方网站: https://www.tensorflow.org
2、Keras
Keras是一个基于 Python 的深度学习库,Keras 提供一致而简洁的 API,以减少认知困难,支持快速实验做为宗旨,对学习者的门槛低,可以较容易地建立深度学习模型,利用keras只要十几行代码就能写出一个简单的神经网络训练模型,是作为深度学习开发者的编程利器。
Keras的核心数据结构是“模型”,模型是一种组织网络层的方式。Keras 中主要的模型是Sequential 模型, Sequential是一系列网络层按顺序构成的栈,完全可配置的模块可以用最少的代价自由组合在一起。
Keras的底层库使用Theano或TensorFlow,这两个库也称为 Keras 的后端( backend),后端指的是 Keras 依赖于完成底层的张量运算的软件包,可以选择其中之一使用。
官方网站: https://keras.io/
3、PyTorch
PyTorch于2016年10月发布,Facebook 人工智能研究院对 PyTorch提供了强力支持。
PyTorch简洁易用,更少的抽象,更直观的设计,建模过程简单透明,所思即所得,代码易于理解可以为使用者提供更多关于深度学习实现的细节,如反向传播和其他训练过程,支持动态计算图,为更具数学倾向的用户提供了更低层次的方法和更多的灵活性,目前许多新发表的论文都采用 PyTorch作为论文实现的工具,成为学术研究的首选解决方案。
官方网站: https://pytorch.org/



