• 即将更新编译原理,机器学习,JavaScript,HTML/CSS等文章,谢谢关注~
  • 由于算法限制,搜索时注意简化关键字,谢谢支持~
  • 网站不兼容IE5.0及以下,请使用主流浏览器访问.
  • 卷积神经网络CNN概述上(黑白图像卷积)

    1.边界检测

    检测图像的物体可以有垂直边缘和水平边缘检测。

    如下是一个6*6的灰度图像,构造一个3*3的矩阵,在卷积神经网络中通常称之为filter,对这个6*6的图像进行卷积运算,以左上角的-5计算为例

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

    其它的以此类推,让过滤器在图像上逐步滑动,对整个图像进行卷积计算得到一幅4*4的图像。

    为什么这种卷积计算可以得到图像的边缘,下图0表示图像暗色区域,10为图像比较亮的区域,同样用一个3*3过滤器,对图像进行卷积,得到的图像中间亮,两边暗,亮色区域就对应图像边缘。

    通过以下的水平过滤器和垂直过滤器,可以实现图像水平和垂直边缘检测。

    以下列出了一些常用的过滤器,对于不同的过滤器也有着不同的争论,在卷积神经网络中把这些过滤器当成我们要学习的参数,卷积神经网络训练的目标就是去理解过滤器的参数。

    2. padding

    在上部分中,通过一个3*3的过滤器来对6*6的图像进行卷积,得到了一幅4*4的图像,假设输出图像大小为n*n与过滤器大小为f*f,输出图像大小则为

    (n−f+1)∗(n−f+1)

    这样做卷积运算的缺点是,卷积图像的大小会不断缩小,另外图像的左上角的元素只被一个输出所使用,所以在图像边缘的像素在输出中采用较少,也就意味着你丢掉了很多图像边缘的信息,为了解决这两个问题,就引入了padding操作,也就是在图像卷积操作之前,沿着图像边缘用0进行图像填充。对于3*3的过滤器,我们填充宽度为1时,就可以保证输出图像和输入图像一样大。

    padding的两种模式:

    ①Valid:no padding

    输入图像n*n,过滤器f*f,输出图像大小为:

    (n−f+1)∗(n−f+1)

    ②Same:输出图像和输入图像一样大

    3.卷积步长

    卷积步长是指过滤器在图像上滑动的距离,前两部分步长都默认为1,如果卷积步长为2,卷积运算过程为:

    加入stride后卷积图像大小的通用计算公式为:
    输入图像:n*n,过滤器:f*f步长:s,padding:p
    输出图像大小为:⌊(n+2p−fs+1))⌋∗⌊(n+2p−fs+1)⌋⌊(n+2p−fs+1))⌋∗⌊(n+2p−fs+1)⌋,⌊⌋⌊⌋表示向下取整

    以输入图像6*6,过滤器3*3,步长为2,padding模式为valid为例输出图像大小为:⌊(6+2∗0−32+1)⌋∗⌊6+2∗0−32+1)⌋=3∗3

    彩色图像卷积及单层神经网络请参考:

    卷积神经网络CNN概述下(RGB图像卷积与单层神经网络)

    转载自:https://blog.csdn.net/ice_actor/article/details/78648780

    读者评分
    [评分人数: 5 平均分: 4.6]

    评论

    OmegaXYZ