卷积神经网络

卷积神经网络(CNN)在计算机视觉中起着关键作用,有效解决了大图像分类中的过拟合问题。边缘检测通过卷积操作实现,通过不同过滤器检测图像的垂直和水平边缘。Padding用于保持图像尺寸不变,避免信息丢失。卷积步长影响输出图像大小。CNN的层包括卷积层、池化层和全连接层,通过参数共享和稀疏连接减少参数数量,提高网络效率。

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

计算机视觉

计算机视觉可以应用到许多问题中,比如图片分类器,物体检测,图片风格转化。目前计算机视觉发展得非常迅速,这些问题都能够得以解决。

以前使用神经网络对图像进行分类,使用的图像都比较小,比如64*64*3,特征向量长度有12288,这个特征向量已经很大了。我们更希望能对大的图像进行分类,但是图像大小是1000*1000*3,特征向量长3000000,对应的神经网络就非常大,这就很容易出现过拟合现象。幸运的是,卷积神经网络可以解决这一问题。

边缘检测

图像边缘是指图像中明暗变化的区域。
图像的垂直边缘和水平边缘
上图右侧明亮的地方表示原图的边缘,分别是垂直边缘和水平边缘。

边缘检测的方法是对图像进行卷积操作,图像与一个过滤器(或者称为核)进行卷积,得到新的矩阵表示图像的边缘检测结果。
卷积运算1
上图是卷积操作的其中一步,中间的“*”表示卷积操作,左边的矩阵表示图像(灰度图),中间的矩阵是过滤器。把过滤器移动到图像上作为掩膜,计算卷积值,3×1+1×1+2×1+0×0+5×0+7×0+1×1+8×1+2×1=53×1+1×1+2×1+0×0+5×0+7×0+1×−1+8×−1+2×−1=−5,-5就是这个区域的值。接着移动过滤器
卷积运算2
计算新区域的卷积值为-4。计算完第一行后,向下移动过滤器,继续计算第二行
卷积运算3
最后得到的结果是
卷积运算4

来看一个特殊的例子,
垂直边缘检测1
上图下方的方块可以直观地表现出图像的边缘部分。原图中间部分是黑白的分界线,进行垂直边缘检测后,得到的结果中间是白色,两边是灰色,说明原图中间部分是边缘。

把过滤器垂直翻转,重新进行卷积运算,得到的结果是
垂直边缘检测2
结果的中间黑色的部分才表示原图的边缘。所以一般把卷积的结果再取绝对值。

水平边缘检测和垂直边缘检测一样,只是过滤器不一样。水平边缘检测的过滤器是在水平方向上取值,比如

101101101[111000−1−1−1]

水平边缘检测例子:
水平边缘检测

过滤器有许多种,有Sobel过滤器、Scharr过滤器等。
过滤器
过滤器的参数不同,可以实现不同的过滤器,实现不同的边缘检测,比如45°、70°边缘检测。

编程语言实现的卷积操作函数有许多,在python中是conv_forward,在tensorflow中是tf.nn.conv2d,在keras中是Conv2D。

Padding

上述所说的卷积操作会缩小图片的大小,本来是6××6的图片,卷积之后变成4××4的图片。缩小图片会丢掉图片边界的边缘信息。而且,深度网络通常有100多层,图片每经过一层,便会缩小,最后得到一幅非常小的图片,这不符合实际需求。我们可以使用Padding来使得卷积后图片不变小。

Padding就是在卷积之前扩大原来的图片
Padding图片
扩大6××6的图片1个像素,然后使用3××3的过滤器进行卷积,最后得到与原图一样大小的6××6的图片。可以使用0来填充添加的像素。

假设原图大小为n××n,过滤器大小为f××f,卷积后的图片大小为(nf+1)×(nf+1)(n−f+1)×(n−f+1)。设原图Padding后四周添加p个像素,原图变为(n+2p)×(n+2p)(n+2p)×(n+2p)则Padding卷积的图片大小为(n+2pf+1)×(n+2pf+1)(n+2p−f+1)×(n+2p−f+1)。为了保证卷积后的图片与原图一样大,则2pf+1=02p−f+1=0p

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值