一、学习目标
1.了解CNN的历史发展
2.学习CNN的基本结构和训练过程
3.知道各种典型的CNN模型
4.了解CNN在视觉领域的应用
二、CNN的历史发展
CNN主要模拟的就是人对于视觉信号的处理过程:
在最开始的CNN模型中,就定义各种层:卷积层、池化层、全连接层来模拟该过程:
之后,根据不同的任务,CNN在不同方向上都得到了发展:
三、CNN的基础结构
1.卷积层
卷积听上去很牛逼,但实际上是一个很简单的运算:
(图中:1*0+6*1+5*0+2*1+7*0...+3*0=20)看似很简单的操作,但在这样的卷积核的影响下,可以发现其对图像进行了一个过滤:
在卷积层中,除了设置不同的卷积核外,还可以设置填充和步长:(这些操作都是有可能影响结果的因素,实验时需要人工调试)
关于通道:由于有三个通道,在一些展示中,会经常看到将一张图片分为三个加入卷积层中,然后,由于卷积核有多个,那么就会有多个卷积结果
总而言之,卷积的作用如下:
2.激活函数
上面卷积层展示了卷积的操作,但在卷积之后,还需要添加一个激活函数以得到真正得特征值。和激活函数是一些非线性函数,主要有:
根据任务的不同,选择不同的激活函数也会影响实验结果。
3.池化层
池化层一般接在一个卷积层后面,分最大池化和平均池化,实际实验中,最大池化的结果普遍更优:
池化层的作用相比于卷积层更为重要,其能很好的提取特征并减少计算量:
4.全连接层
全连接层就是前馈神经网络的结构,主要任务是汇集所有特征去得到最后的结果,从而能够让模型去预测结果,其过程如下:
5.训练过程
CNN的训练过程其实与前馈神经网络并无不同,其主要难点在于卷积层和池化层的反向传播。但实际上,卷积层和池化层的操作是可以写成数学公式的,那么误差就能反传回来:(注意,卷积核的参数并不会由于误差而变化,误差只是在这些层传递而言)
四、典型的CNN
1.LetNet
始祖CNN,用于手写数字识别和字母识别,结构为:卷积->池化->卷积->池化->卷积->全连接。结构简单。
2.AlexNet
划时代的CNN,创新采用ReLu作为激活函数,首次使用Dropout技术避免过拟合,首次使用了CUDA加速技术。结构如下:
五、CNN的主要应用
1.目标检测
主要目标是将图像或视频中的目标物体用边框标记,可进一步识别出舞台的类别。
a)区域卷积神经网络R-CNN
实现过程与图解:
b)Yolo系列
图解如下:
2,图像分割
主要目标是将图片中某个物体所占据的像素给标记,将该物体与其他分离。主要的技术有FCN、SegNet、Unet,大体的思想是一致的,即提出上采样的概念,让深层的特征图片还原到原始图片的大小。即:
在这样的一个”还原“的过程中,可以使用到原始的一些信息,例如池化层、卷积层的结果进行计算:
3.姿态估计
两种实现方法的对比:
4.人脸识别
a)DeepFace模型
b)FaceNet
六、总结
本章只是简单介绍CNN的内容,以掌握基础知识为主,主要的知识会在后续讲解。