码迷,mamicode.com
首页 > 其他好文 > 详细

CNN之间的计算

时间:2017-11-11 11:42:51      阅读:308      评论:0      收藏:0      [点我收藏+]

标签:通道数   检测   lte   易云   情况   vol   基于   sam   margin   

参考内容

1、网易云课堂微专业——深度学习—04第一周:http://mooc.study.163.com/smartSpec/detail/1001319001.htm

2、CNN基础介绍:http://blog.csdn.net/fengbingchun/article/details/50529500



 卷积神经网络(Convolutional Neural Networks,CNN)

1、基本计算原理

  技术分享

  动态过程:

技术分享

  滤波器(过滤器:filter)的权值是根据你要检测的特征来决定的,在深度学习中,也即是要经过训练得到。检测的特征不同,权值就不一样。

  如上单层的图像一般表示的是灰白图,既是没有颜色的,有颜色的RGB图像,会包含三个相同大小的图层,这时对应的滤波器也要变成三层,滤波器的层数(通道数)必须时刻与图像层数保持一致。。。

  技术分享

  注意输出的是一个单层图

  技术分享

  因为当一个三通道的过滤器与图像进行卷积时,是直接对9个数去加权计算它们的和得到一个结果,而不是分层计算。

2、卷积输出的大小计算

   如上两个例子,5*5的图像经过3*3的滤波器得到一个3*3的结果,6*6*3d的图像经过3*3*3d的滤波器得到一个4*4*1d的结果,从单层的例子我们大概已经知道了是怎么计算的了,那么接下来转换成公式来表示一下。

   技术分享

  由计算可知,每次卷积图像都会变小,以上还只是步长为1的情况(也即是每次只移动一个),有两个缺点:

    1、每次卷积之后图像都会缩小,多次卷积之后呢, 可能会变得很小很小

    2、会丢掉角落边缘像素的重要信息,看下面图像

  技术分享

    在上面的边缘,从左到右像素检测的次数分别为1、2、3、2、1,可见角落边缘只被检测了一次,而中间可以被检测多次,这就会导致边角信息丢失。解决的办法是加入Padding。

3、加入Padding以及之后的计算

  加入Padding的意思是在卷积之前,在原图像边缘上加入一层像素(也可以多层),一般也叫做补零(因为大多数时候我们添加的元素都是0)。

   技术分享

  由上图可知,如果卷积之后要得到与原图像相同大小的图像,那么加入的Padding层数应该是(f - 1) / 2,也由此可见,我们用的过滤器 f 一般也是奇数的,这样才能整除计算,获得对称填充,还有一个原因是奇数的滤波器会有一个中心点,有时候在计算机视觉计算时,有个中心点会方便很多。

  附:

    Padding = 0的卷积被称为Valid Convolution

    为了得到与原图像大小相同图像而加入Padding的卷积称为Same Convolution

3、加入卷积步长(Stride)

  以上运算都是基于步长为1的情况,下面看看步长为2的情况:

  技术分享

  如果在卷积运算时,滤波器超出了图像框,一般的操作是不进行运算。

 

CNN之间的计算

标签:通道数   检测   lte   易云   情况   vol   基于   sam   margin   

原文地址:http://www.cnblogs.com/huangtao36/p/7818072.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!