百度飞桨学习心得

本文深入探讨卷积神经网络在计算机视觉中的应用,介绍卷积、填充、步幅和感受野等核心概念,并结合百度飞桨平台进行实践。通过实例解析卷积计算过程,阐述卷积神经网络如何解决图像数据的空间信息丢失和过拟合问题。
摘要由CSDN通过智能技术生成

卷积神经网络


卷积神经网络是目前计算机视觉中使用最普遍的模型结构。本章节主要为读者介绍卷积神经网络的一些基础模块,包括:

卷积(Convolution)
池化(Pooling)
ReLU激活函数
批归一化(Batch Normalization)
丢弃法(Dropout)

回顾一下,在上一章“一个案例带你吃透深度学习”中,我们介绍了手写数字识别任务,应用的是全连接层的特征提取,即将一张图片上的所有像素点展开成一个1维向量输入网络,存在如下两个问题:

  1. 输入数据的空间信息被丢失。 空间上相邻的像素点往往具有相似的RGB值,RGB的各个通道之间的数据通常密切相关,但是转化成1维向量时,这些信息被丢失。同时,图像数据的形状信息中,可能隐藏着某种本质的模式,但是转变成1维向量输入全连接神经网络时,这些模式也会被忽略。

  2. 模型参数过多,容易发生过拟合。 在手写数字识别案例中,每个像素点都要跟所有输出的神经元相连接。当图片尺寸变大时,输入神经元的个数会按图片尺寸的平方增大,导致模型参数过多,容易发生过拟合。

为了解决上述问题,我们引入卷积神经网络进行特征提取,既能提取到相邻像素点之间的特征模式,又能保证参数的个数不随图片尺寸变化。图6 是一个典型的卷积神经网络结构,多层卷积和池化层组合作用在输入图片上,在网络的最后通常会加入一系列全连接层,ReLU激活函数一般加在卷积或者全连接层的输出上,网络中通常还会加入Dropout来防止过拟合。
在这里插入图片描述

一、卷积(Convolution)

这一小节将为读者介绍卷积算法的原理和实现方案,并通过具体的案例展示如何使用卷积对图片进行操作,主要涵盖如下内容:

卷积计算

填充(padding)

步幅(stride)

感受野(Receptive Field)

多输入通道、多输出通道和批量操作

飞桨卷积API介绍

卷积算子应用举例

卷积计算
卷积是数学分析中的一种积分变换的方法,在图像处理中采用的是卷积的离散形式。这里需要说明的是,在卷积神经网络中,卷积层的实现方式实际上是数学中定义的互相关 (cross-correlation)运算,与数学分析中的卷积定义有所不同,这里跟其他框架和卷积神经网络的教程保持一致,都使用互相关运算作为卷积的定义,具体的计算过程如 图7 所示。

在这里插入图片描述
如图7(a)所示:左边的图大小是3×33\times33×3,表示输入数据是一个维度为3×33\times33×3的二维数组;中间的图大小是2×22\times22×2,表示一个维度为2×22\times22×2的二维数组,我们将这个二维数组称为卷积核。先将卷积核的左上角与输入数据的左上角(即:输入数据的(0, 0)位置)对齐,把卷积核的每个元素跟其位置对应的输入数据中的元素相乘,再把所有乘积相加,得到卷积输出的第一个结果
0×1+1×2+2×4+3×5=25 (a)0\times1 + 1\times2 + 2\times4 + 3\times5 = 25 \ \ \ \ \ \ \ (a)
0×1+1×2+2×4+3×5=25 (a)

如图7(b)所示:将卷积核向右滑动,让卷积核左上角与输入数据中的(0,1)位置对齐,同样将卷积核的每个元素跟其位置对应的输入数据中的元素相乘,再把这4个乘积相加,得到卷积输出的第二个结果,
0×2+1×3+2×5+3×6=31 (b)0\times2 + 1\times3 + 2\times5 + 3\times6 = 31 \ \ \ \ \ \ \ (b)
0×2+1×3+2×5+3×6=31 (b)

如图7(c)所示:将卷积核向下滑动,让卷积核左上角与输入数据中的(1, 0)位置对齐,可以计算得到卷积输出的第三个结果,
0×4+1×5+2×7+3×8=43 ©0\times4 + 1\times5 + 2\times7 + 3\times8 = 43 \ \ \ \ \ \ \ ©
0×4+1×5+2×7+3×8=43 ©

如图7(d)所示:将卷积核向右滑动,让卷积核左上角与输入数据中的(1, 1)位置对齐,可以计算得到卷积输出的第四个结果,
0×5+1×6+2×8+3×9=49 (d)0\times5 + 1\times6 + 2\times8 + 3\times9 = 49 \ \ \ \ \ \ \ (d)
0×5+1×6+2×8+3×9=49 (d)

卷积核的计算过程可以用下面的数学公式表示,其中 aaa 代表输入图片, bbb 代表输出特征图,www 是卷积核参数,它们都是二维数组,∑u,v \sum{u,v}{\ }∑u,v 表示对卷积核参数进行遍历并求和。

b[i,j]=∑u,va[i+u,j+v]⋅w[u,v]b[i, j] = \sum_{u,v}{a[i+u, j+v]\cdot w[u, v]}
b[i,j]=
u,v


a[i+u,j+v]⋅w[u,v]

举例说明,假如上图中卷积核大小是2×22\times 22×2,则uuu可以取0和1,vvv也可以取0和1,也就是说:

b[i,j]=a[i+0,j+0]⋅w[0,0]+a[i+0,j+1]⋅w[0,1]+a[i+1,j+0]⋅w[1,0]+a[i+1,j+1]⋅w[1,1]b[i, j] = a[i+0, j+0]\cdot w[0, 0] + a[i+0, j+1]\cdot w[0, 1] + a[i+1, j+0]\cdot w[1, 0] + a[i+1, j+1]\cdot w[1, 1]
b[i,j]=a[i+0,j+0]⋅w[0,0]+a[i+0,j+1]⋅w[0,1]+a[i+1,j+0]⋅w[1,0]+a[i+1,j+1]⋅w[1,1]

读者可以自行验证,当[i,j][i, j][i,j]取不同值时,根据此公式计算的结果与上图中的例子是否一致。

【思考】 当卷积核大小为3×33 \times 33×3时,b和a之间的对应关系应该是怎样的?

二、填充(padding)

在上面的例子中,输入图片尺寸为3×33\times33×3,输出图片尺寸为2×22\times22×2,经过一次卷积之后,图片尺寸变小。卷积输出特征图的尺寸计算方法如下:

H o u t = H − k h + 1 H_{out}=H−k_h+1 Hout=Hkh+

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值