zoukankan      html  css  js  c++  java
  • 卷积神经网络(一)卷积神经网络基础

    1、Edge detection(边缘检测):

    (1)卷积计算:

    有一个6*6*1的灰度图像,‘*’表示卷积(convolution),过滤器(filter)为3*3矩阵.

    卷积的结果为 4*4的矩阵:

    左上角的第一块是通过图像矩阵的左上角3*3区域计算而来.

    3*1 + 1*1 + 2*1 +0*0 + 5*0 + 7*0 + 1*-1 +8*-1 +2*-1 = -5

     来自:

    移动3*3矩阵,计算第1行第2列:

    来自:

    最终得到结果(一张4*4图片):

    卷积计算所用函数:

    python:conv_forward

    tensorflow:tf.nn.conv2d 

    输入的图像矩阵:n*n

    过滤器矩阵:f*f(f 一般是奇数)

    输出的图像矩阵:(n-f+1)*(n-f+1)

    (2)垂直边缘检测:

         

    检测结果的白色宽带为垂直边界,但由于图像规模较小,检测结果看上去不够精确,若换为1000*1000的图片,则会更准确.

    (3)其它过滤器:

    水平过滤器:

    Sobel过滤器:

    Scharr过滤器:

    2、Padding:

    (1)举例说明:

     在矩阵被压缩过程中,中间区域的元素会被多次使用到,而边缘的元素则使用次数很少, 图像的边缘信息会丢失. 解决方法之一是填充一层像素:将6*6图像填充为8*8

    在压缩后得到的图像依然是6*6.

    输出的图像矩阵:(n-f+2p+1)*(n-f+2p+1)(其中p是添加的层数)

    (2)Valid and Same convolution:

    Valid卷积是指不使用Padding;

    Same卷积是指使用Padding,使得输出的大小和输入的大小一致,p = (f-1)/2.

    3、卷积步长:

    输出矩阵大小: (其中 s 是步长)

    如果相除的结果不是整数,则向下取整.

     4、对RGB图像进行卷积:

    RGB图像有三层,假设图像的大小为 6*6*3,过滤器大小为 3*3*3,输出矩阵代销为 4*4*1.

    通常情况下,当图片数据含有“高”时,过滤器也要含有相同的“高”(即channels),过滤器可以只关注单层(其余层全为0),也可以把所有层都设置成相同的参数. 

    如果想同时识别出垂直和水平边界,可以使用两个过滤器,获得两个4*4*1的输出图像,再合并为4*4*2的输出立方体.

     总结:

    输入图形:n*n*nc (nc 为channel数)

    过滤器:f*f*nc

    输出图形: (n-f+1)*(n-f+1)*nc' (其中nc'为过滤器个数)

    5、单层卷积神经网络:

    (1)举例:

    (2)参数定义:

    如果第 l 层是卷积层:

    f[l] = filter size

    p[l] = padding

    s[l] = stride

    nc[l] = number of filters

    input shape: nH[l-1] * nW[l-1] * nC[l-1]   

    output shape: nH[l] * nW[l] * nC[l]   

    filter shape: f[l] * f[l] * nC[l-1]

    weights shape: f[l] * f[l] * nC[l-1] * nC[l]

    activations shape (a[l]):  nH[l] * nW[l] * nC[l]   

    nH[l] = (nH[l-1] + 2p[l] - f[l]) / s[l] + 1 取下整数

    nW[l] = (nW[l-1] + 2p[l] - f[l]) / s[l] + 1 取下整数

    6、简单卷积神经网络示例:

    第0层:nH[l0] = nW[0] = 0,nC[0] = 3. 即输入为一个 39*39*3 的图像.

    第1层:采用10个过滤器,f[1] = 3,s[1] = 1,p[1] = 0,则下一个激活值规格为37*37*10.

    第2层:采用20个过滤器,f[2] = 5,s[2] = 2,p[2] = 0,则下一个激活值规格为17*17*20.

    第3层:采用40个过滤器,f[3] = 5,s[3] = 2,p[3] = 0,则下一个激活值规格为7*7*40.

     将最后7*7*40个元素展开成长度1960的向量,采用logistic或者softmax得出结果y^.

    7、Pooling Layer(池化层):

    (1)Max pooling(最大池化):

    最大池化:f = 2,s = 2

     

     最大池化的作用:如果过滤器中提取到某个特征,则保留其最大值.

    (2)Average pooling(平均池化):

    (条件同上)

    8、多层卷积神经网络示例:

  • 相关阅读:
    c#文件操作
    c#关于udp远程关闭一个连接问题
    c#面向对象之多态
    在Eclipse上安装Activiti插件
    引入Activiti配置文件activiti.cfg.xml
    mysql笔记(暂时)
    MySQL创建用户与授权方法
    javaweb学习总结(五)——Servlet开发(一)
    Linux常用命令1
    Eureka注册中心高可用集群配置
  • 原文地址:https://www.cnblogs.com/orangecyh/p/11844894.html
Copyright © 2011-2022 走看看