1. 知识点
对于小尺寸图片,可以用深度神经网络模型学习预测。但对于大尺寸图片,输入数据规模大,用深度神经网络会有非常多的参数需要学习,不再合适。
卷积神经网络,在计算机视觉上是个很好的网络结构。
垂直边缘检测:用filter依次对输入图片和filter相同大小的块内各元素进行运算,对应元素相乘后求和。所得结果为输出图片元素。由例图可以看出,垂直边缘检测filter能运算出输入图像人在垂直方向上的轮廓。
多种边缘检测:垂直边缘检测、水平边缘检测、更复杂的边缘检测(将fliter看作需要学习的参数)
数学上的卷积和深度学习的卷积:数学上,卷积操作需要先将卷积核filter在水平和垂直方向上进行翻转,构成一个卷积核的镜像,然后使用该镜像再和前面的矩阵进行移动相乘求和操作。深度学习上,没有卷积核变换为镜像的这一步。
没有Padding存在的问题:每次卷积操作图片会缩小。角落和边缘位置的像素进行运算的次数少,信息会丢失。
加Padding:输入图片n*n大小,Padding大小为p,filter大小为f,输出图片为(n+2p-f+1)*(n+2p-f+1)
不加Padding:输入图片大小为n*n,输出图片大小(n-f+1)*(n-f+1)
输出图片和输入图片大小相同:n+2p-f+1=n,即p=(f-1)/2
输入图片大小为n*n,输出图片大小[(n+2p-f)/s+1]*[(n+2p-f)/s+1]
卷积核的通道数:R、G、B三个颜色通道
多卷积核:不同的filter分别提取图片的不同特征,比如垂直边缘和水平边缘
多卷积核输入图片和输出图片大小:
(n*n*nc)*(f*f*nc)——>(n-f+1)*(n-f+1)*nc',其中nc'是下一层通道数,也是本层filter的个数。
其中,参数W的个数为3*3*3=27,加上偏置,参数个数为28个,假设有10个卷积核,参数个数共280个。相对于普通神经网络,卷积神经网络的参数个数少了很多。
2. 应用实例
import numpy as np import h5py import matplotlib.pyplot as plt %matplotlib inline plt.rcParams['figure.figsize'] = (5.0, 4.0) plt.rcParams['image.interpolation'] = 'nearest' plt.rcParams['image.cmap'] = 'gray' #ipython很好用,但是如果在ipython里已经import过的模块修改后需要重新reload就需要这样 #在执行用户代码前,重新装入软件的扩展和模块。 %load_ext autoreload #autoreload 2:装入所有 %aimport 不包含的模块。 %autoreload 2 np.random.seed(1) #指定随机种子