吴恩达.深度学习系列-C4卷积神经网络-W1卷积神经网络基础

本文详细介绍了卷积神经网络(CNN)的基础知识,包括计算机视觉应用、边缘检测、padding、卷积步长、卷积在RGB图像上的应用,以及卷积网络的参数计算。此外,还探讨了卷积层的优势,如参数共享、稀疏连接和平移不变性,并介绍了池化层的作用。文章最后讨论了卷积核的数学意义,包括拉普拉斯算子和边缘检测算子,以及卷积和池化的编程实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

学习目标

  • Understand the convolution operation
  • Understand the pooling operation
  • Remember the vocabulary used in convolutional neural network (padding, stride, filter, …)
  • Build a convolutional neural network for image multi-class classification

1.计算机视觉

应用方式:
- Image Classification
- Object detection
- Neural Style Transfer
在大图片上进行深度学习。普通学习图片可以达到1000*1000*3(通道数)的级别。将是一个有3,000,000(3 million)特征数的输入。

2.边缘检测示例

这里写图片描述
垂直边缘检测,在课堂的实例中其实是使用了一个Prewitt的filter(filter过滤器,【图像处理】滤波器模板,神经网络的卷积核kernel指的都是一个意思)。参考本笔记12.2。

数学里,星号是卷积的标准符号,×是乘号。但是一般编程语言里星号 表示乘法。卷积操作是矩阵求内积。

Horizontal101101101Vertical:111000111 H o r i z o n t a l : [ 1 1 1 0 0 0 − 1 − 1 − 1 ] V e r t i c a l : [ 1 0 − 1 1 0 − 1 1 0 − 1 ]

3.其他边缘检测

这里写图片描述
如上图上下所示。
颜色由深变浅,产生正边缘。颜色由浅入深,产生负边缘。
更据filter的不同数值填入,检测器会具备一些独特的边缘检测,除了水平、垂直检测,还有可能45度检测,75度检测,72度检测等等等等。

卷积神经网络的独特之处:将filter中的元素当作参数去学习,并通过反向传播让模型自己去学习该设置什么值。而这将生成更加善于捕捉你的数据的统计学特征的过滤器。并且很有可能超过CV专业人员精心设计的filter数值。简而言之,训练CNN在相当意义上是在训练每一个卷积层的滤波器。让这些滤波器组对特定的模式有高的激活,以达到CNN网络的分类/检测等目的。

这里写图片描述

在单层卷积后,通常能提取出横向、纵向、斜向的边缘这样的简单特征。经过多次卷积后,filter能通过学习提取出复杂的组合特征。例如眼睛、鼻子等等由多种线条组合而成的图形,这些高维特征是一系列低维特征的组合。在一些论文中有将这些卷积后的图片显示出来供研究人员观察,观察卷积网络学习到的是些什么图像。“反卷积”是不是这种应用的定义?

4.Padding

不padding的情况下:(n×n)的图片,用(f×f)的filter卷积,产生的输出大小(n-f+1)×(n-f+1)

不进行padding的缺点:

  • 输入图片的边缘像素,因为不处于对称中心点,被卷积遍历运算引用的次数比图像中心区域的像素点少的多。即我们会丢失图像靠近边界的信息。
  • 每一次卷积图片都会缩小,多次卷积图片将变得非常的小。

所以,有必要进行padding(补白)。比如输入图片是(6×6)padding成(8×8)的图片后,再进行kernel=(3×3)的卷积,输出将还是一个(6×6)的图像。

Padding/Not Cool
“Valid” convolution no Padding 会忽略图像边缘的信息
“Same” convolution Pad so that output size is the same as the input size. 单侧padding的像素个数p=(f-1)/2时
输出图片与输入图片同样大小

5.卷积步长 strided convolution

就是filter每次移动的步长。通常情况下,步长=1。如果设定步长=2,前后两次filter的起始位置相距2个像素(水平方向移动是相距2个像素,换行时也是下降两像素)。下图示例就是strided=2的情形。
这里写图片描述
filter大小是(f×f),加上Strided(s)、padding(p是单侧补上的像素宽度)后,输入图片(n×n)与输出图片大小间的关系是:

:h=w=n+2pfs+1 输 出 图 片 : h = w = ⌊ n + 2 p − f s + 1 ⌋
,即向下取整 floor() f l o o r ( )

互相关(cross-correlation)与卷积

在数学教材书籍上,卷积操作需要对卷积核先做水平与垂直翻转,再求卷积。这会产生一种性质:(A卷积B)* 卷积C = A卷积 *(B卷积C) ,这一性质在数学上叫结合率(associativity),这一性质在信号处理领域很有用 但对深度神经网络而言,它并不重要 。从数学定义上,我们现在进行的“无翻转卷积核”操作最好称之为交叉相关。

但在机器学习的约定中, 我们通常忽略掉翻转的操作,并将这称之为卷积。

6.在三维图像(RGB)上进行卷积

在二维(W×H)图像上的卷积示意图:
这里写图片描述
Convolutions over Volume
这里写图片描述
对于一个多通道图片,以RGB图片举例是3通道,要建立一个对等通道数的filter,即RGB图片要3个filter。这3个filter分别与原始图片的三个通道进行卷积操作。合计求和成一个值填入输出图像上。
所以虽然输入图像有3层,但输出图像是单层的。
如何在应用中应用多个过滤器
这里写图片描述
应用两个过滤器,那么输出就是两层。这两层也是下一层的输入。实际上你可以在同一层应用很多个filter来捕捉原始图片上各种各样的特征。
summary:
n×n×ncfilter(f×f×nc)(nf+1)×(nf+1)×nc 原 始 图 片 ( n × n × n c ) ∗ f i l t e r ( f × f × n c ) → ( n − f + 1 ) × ( n − f + 1 ) × n c ′
nc n c ′ ,是下一层的 nc n c ,等于应用过滤器的数量

7.单层式卷积网络one Layer of a Convolution Network

这里写图片描述
如上图所示,一层完整卷积层,包括

  1. 使用n个filter进行卷积,
  2. 每个filter输出的卷积结果加上各自的偏置量,得出Z(一个卷积核共享一个b)
  3. 对这个Z进行激活操作,比如relu。
  4. 最终的输出结果有n层(depth=n)

卷积网络的参数数量计算
If you have 10 filters that are 3×3×3 in one layer of a neural network,how many parameters does that layer have?
NumberParameters=kernel+1×filter=[(3×3×3)+1]×10=280 N u m b e r P a r a m e t e r s = ( 单 个 k e r n e l 的 参 数 量 + 1 个 偏 置 量 ) × f i l t e r 总 数 = [ ( 3 × 3 × 3 ) + 1 ] × 10 = 280

优点:无论输入层多大(输入的图片多大),参数量恒定。相比普通神经网络输入有多少个特征就至少有

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值