CNN基础:
实现对图像的高准确率识别离不开一种叫做卷积神经网络的技术。卷积神经网络主要是应用于计算机视觉任务当中,但是他处理的任务不只是局限于图像,其实语音识别是也可以使用卷机神经网络。
什么是卷积?
我们人眼看到的和计算机看到的是不一样的,我们看到是图上左边的狗狗,而计算机看到的是右边的一堆数字(像素值)。当我们人类对图像进行分类的时候,这些数字毫无用处,可他们确实计算机可以获得唯一输入。
现在的问题是:当你提供给计算机这一组数据后,他将输出描述该图像的某一特定分类的概率(比如:80%是猫、15%是狗、5%是年)。
我们人类是通过特征来区分猫和狗,现在用计算机来区分猫和狗的图片,就要计算机搞清楚猫猫狗狗各自的特征。计算机可以通过寻找诸如边缘和曲线之类的低级特点来分类图片,继而通过一系列卷积层构建出更为抽象的概念。这是CNN(卷积神经网络)工作方式的大体描述。
为什么叫卷积:CNN的确是从视觉皮层的生物学上启发的。简单地来说,视觉皮层上有小部分细胞对特定部分的视觉区域敏感。列如:一些神经元只对垂直边缘兴奋,另一些对水平或者对角边缘兴奋。
CNN工作描述指的是你挑一张图像,让他经历一系列的
卷积层、
非线程层
池化(下采样(downsamping))层、
和全连接层、
最终得到输出,正如之前所说,输出可以是最好的描述了图像内容的一个单独的分类或者一组分类的概率。
什么是卷积?
卷积是将卷积核应用到某个张量的所有点上,通过将卷积核在输入的张量上滑动而生成滤波处理的张量。
一个卷积提取特征的例子:图像的边缘检测
一个卷积核:
总结起来一句话:
卷积完成的是 对图像特征的提取或者说信息的匹配
我们训练区分猫狗的图像的时候,卷积核会被训练,训练的结果就是,卷积核会对不用的猫狗的特征敏感,输出不同的结果,从而达到图像识别的目的。
CNN架构:
卷积层 conv2d
非线程变换层 relu/sigmoid/tanh
池化层 pooling2d
全连接层 w*x +b
如果没有这些层,模型很难与复杂模式匹配,因为网络有过多的信息填充,也就是其他那些层的作用就是突出重要信息,降低噪声。
卷积层
三个参数:
ksize 卷积核的大小
strides 卷积核移动的跨度
padding 边缘填充
非线性变换层(也就是激活函数):
relu
sigmoid
tanh
池化层:
池化分为最大池化 和平均池化
全连接层:
将最后的输出与全部特征链接,我们要使用全部的特征,为最后的分类做出决策,最后配合softmax进行分类
整体结构: