李宏毅机器学习12—Convolution Neural Network1

Convolution Neural Network卷积神经网络用神经网络直接做图像处理。将图片的像素排成一个很长的矢量。作为输入。输出就是属于什么类别。每一个神经元就是一个分类,比如说第一层里代表黑色、红色和斜条纹。第二层里代表各种花纹,之后下去每层越来越复杂。那么问题就是,直接用神经网络来做,参数太多,这样就需要CNN。CNN的做法:简化神经网络的参数,去掉网络中的一些没用的参数。用CNN识别图像有三种情况:1.整张图片识别参数过多,通常识别某个图案是小于某个整个..
摘要由CSDN通过智能技术生成

Convolution Neural Network 卷积神经网络

用神经网络直接做图像处理。

将图片的像素排成一个很长的矢量。作为输入。输出就是属于什么类别。

每一个神经元就是一个分类,比如说第一层里代表黑色、红色和斜条纹。

第二层里代表各种花纹,之后下去每层越来越复杂。那么问题就是,直接用神经网络来做,参数太多,这样就需要CNN。

CNN的做法:简化神经网络的参数,去掉网络中的一些没用的参数。

 

CNN识别图像有三种情况:

1.整张图片识别参数过多,通常识别某个图案是小于某个整个图像的,所以不需要看到整个图像来识别这个图案。

检测是不是鸟嘴只需要看红色框里的一部分就足够了。

2.同样的图案会出现在不同的区域,虽然出现在不同的区域,但是识别的神经元的参数是相同的

同样时识别鸟嘴,左上角出现鸟嘴和中间出现鸟嘴,做的是类似的工作,可以使用相同的参数。

3.subsamping(子抽样,缩小图像)不会改变识别的对象。我们可以通过subsamping使图像变小,这样参数就变得更少了。

缩小图像可以使图像的像素更小,参数更少,但是不影响图像的识别。

 

CNN的整个流程

首先对输入的像素进行卷积,池化(这个过程可以重复多次,重复次数时实现决定的),

然后对处理完的像素进行一维展开,作为全连接前馈神经网络的输入,之后输出的结果就是图像属于的类别。

 

 

Convolution 卷积

黑白图像,0是白色,1是黑色

首先选取一个6*6的图像,然后有一组给定的filter。Filter就相当于神经网络中的神经元。Filter中的0和1就相当于神经网络中的参数,是靠训练得到的。3.3的filter意味着filter侦测整张图像的3.3的一部分,而不是整个图像。

将filter移到左上角,做内积,然后依次向右,向下移动stride距离(步长,自己设定的)

这样一个6*6的图像就变成了一个4*4的图像。

这样做的目的:

可以看到filter1的左上到右下对角线上都是1,当filter与图像做内积时,可以在与filter同样形状的地方上得到最大值3,也就是在6*6的图像中筛选出与filter类似的形状。

同样filter2也是一样的道理,当filter2走完之后,就识别出中间列为111的图像位置。

有多少filter就有多少层,这些图像层加在一起,就叫做feature map 特征图。

 

对于彩色的图像,由于像素是由三个值决定的,所以filter也变成3维度

Filter同时就考虑了不同channel的图像,将filter中的9个值与图像中的9个值直接做内积。(并没有将不同的channel分开来算)

 

卷积与全连接神经网络之间的关系:

特征图的输出其实就是全连接神经网络的一层的输出

Filter的作用就是用神经元进行分类

Filter就相当于神经网络中的神经元。Filter中的0和1就相当于神经网络中的参数,是靠训练得到的。

将6*6的图像的前三排18个像素拿出来进行编号,1~18.

filter1在第一个位置上就是与编号123.789.131415进行连接,得到3.

filter1在第二个位置上就是与编号234.8910.141516进行连接,得到-1

这里编号的数值就相当于神经网络中的weight。在不同的位置上,也会有重复的编号出现,也就是共用同一个weight,这样就减少了参数。相当于全连接神经网络拿掉了一些参数。

 

Max pooling 池化

也就是将feature map进行分块,每块中选出最大值保留下来。

做完一次convolution和maxpooling之后,一个6*6的图像就变成了2*2的图像。像素的深度为两层,有多少深度取决于有多少filter。这样就的到了一个比之前图像小的图像,重复进行convolution和maxpooling还可以使图像变得更小。

 

Flatten

将convolution和maxpooling之后得到的图像像素进行拉直成一维,作为全连接前馈神经网络的输入值。

 

Cnn in keras

25.3.3.代表有25个3*3的filter,

1,28,28代表是黑白图像,像素为28*28、

2,2代表取feature map里面2*2的像素,在其中选出最大值进行保留。

输入一个28*28像素的图片,通过25个3*3的filter的卷积(filter只有一层,有3*3=9个参数),得到25层26*26的特征图,经过2*2的池化,得到25层13*13像素的特征图。

再经过50个3*3的filter的卷积(filter有25层,有3*3*25=225个参数)得到50层11*11的特征图,经过2*2的池化,得到最终50层5*5像素的特征图。

将50*5*5=1250的像素拉成矢量,作为全连接前馈神经网络的输入。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值