飞桨深度学习课程第三周
卷积神经网络基础
计算机视觉作为一门让机器学会如何去“看”的科学学科,具体的说,就是让机器去识别摄像机拍摄的图片或视频中的物体,检测出物体所在的位置,并对目标物体进行跟踪,从而理解并描述出图片或视频里的场景和故事,以此来模拟人脑视觉系统。因此,计算机视觉也通常被叫做机器视觉,其目的是建立能够从图像或者视频中“感知”信息的人工系统。
计算机视觉技术经过几十年的发展,已经在交通(车牌识别、道路违章抓拍)、安防(人脸闸机、小区监控)、金融(刷脸支付、柜台的自动票据识别)、医疗(医疗影像诊断)、工业生产(产品缺陷自动检测)等多个领域应用,影响或正在改变人们的日常生活和工业生产方式。未来,随着技术的不断演进,必将涌现出更多的产品应用,为我们的生活创造更大的便利和更广阔的机会。
本篇介绍计算机视觉的经典模型(卷积神经网络)
卷积神经网络:卷积神经网络(Convolutional Neural Networks, CNN)是计算机视觉技术最经典的模型结构。本教程主要介绍卷积神经网络的常用模块,包括:卷积、池化、**函数、批归一化、Dropout等。
卷积神经网络是目前计算机视觉中使用最普遍的模型结构,它的基础模块包括:
- 卷积(Convolution)
- 池化(Pooling)
- ReLU**函数
- 批归一化(Batch Normalization)
- 丢弃法(Dropout)
图1:卷积神经网络经典结构
图1是一个典型的卷积神经网络结构,多层卷积和池化层组合作用在输入图片上,在网络的最后通常会加入一系列全连接层,ReLU**函数一般加在卷积或者全连接层的输出上,网络中通常还会加入Dropout来防止过拟合。
说明:
在卷积神经网络中,计算范围是在像素点的空间邻域内进行的,卷积核参数的数目也远小于全连接层。卷积核本身与输入图片大小无关,它代表了对空间邻域内某种特征模式的提取。比如,有些卷积核提取物体边缘特征,有些卷积核提取物体拐角处的特征,图像上不同区域共享同一个卷积核。当输入图片大小不一样时,仍然可以使用同一个卷积核进行操作。
卷积是数学分析中的一种积分变换的方法,在图像处理中采用的是卷积的离散形式。这里需要说明的是,在卷积神经网络中,卷积层的实现方式实际上是数学中定义的互相关 (cross-correlation)运算,与数学分析中的卷积定义有所不同,这里跟其他框架和卷积神经网络的教程保持一致,都使用互相关运算作为卷积的定义,具体过程如下:
图2:卷积计算过程
卷积核(kernel)也被叫做滤波器(filter),假设卷积核的高和宽分别为khk_hkh和kwk_wkw,则将称为kh×kwk_h\times k_wkh×kw卷积,比如3×53\times53×5卷积,就是指卷积核的高为3, 宽为5,
- 如图2(a)所示:左边的图大小是3×33\times33×3,表示输入数据是一个维度为3×33\times33×3的二维数组;中间的图大小是2×22\times22×2,表示一个维度为2×22\times22×2的二维数组,我们将这个二维数组称为卷积核。先将卷积核的左上角与输入数据的左上角(即:输入数据的(0, 0)位置)对齐,把卷积核的每个元素跟其位置对应的输入数据中的元素相乘,再把所有乘积相加,得到卷积输出的第一个结果 :
0×1+1×2+2×4+3×5=25 (a)
- 如图2(b)所示:将卷积核向右滑动,让卷积核左上角与输入数据中的(0,1)位置对齐,同样将卷积核的每个元素跟其位置对应的输入数据中的元素相乘,再把这4个乘积相加,得到卷积输出的第二个结果 : 0×2+1×3+2×5+3×6=31 (b)
以此类推,可以知道C、D
卷积核的计算过程可以用下面的数学公式表示,其中 a 代表输入图片, b 代表输出特征图,w是卷积核参数,它们都是二维数组,∑u,v 表示对卷积核参数进行遍历并求和。
没力气写了,先写这么多,后面再补充。