智客公社

标题: 卷积神经网络(CNN):如何高效的识别图像? [打印本页]

作者: 明天·星火    时间: 2024-5-15 20:37
标题: 卷积神经网络(CNN):如何高效的识别图像?

在神经网络的基础上,卷积神经网络(CNN)是如何完成图像识别任务的?本文介绍了其相关基本原理,一起来看看吧。

[attach]830016[/attach]

上文介绍了神经网络的基础概念,今天我们在神经网络的基础上,看看卷积神经网络(CNN)是如何完成图像识别任务的。

一、图像识别的痛点问题

在CNN出现之前,图像识别有两个大难题:

而CNN可以有效的解决这两个问题,它不仅可以大幅减少参数数量,降低复杂度;还可以使用类似视觉处理的方式保留图像特征,即使图像翻转、移动,也可以进行有效的识别。

二、人类的视觉原理

要理解CNN的原理,需要先了解人类的视觉原理。

人类判断物体的大致过程:眼睛看到物体(瞳孔摄入像素),然后发现物体的边缘和方向(初步处理),接着判断物体的形状(抽象)、最后根据形状判定是什么物体(进一步抽象)。

我们可以发现,上述过程其实就是一个神经网络,低层级负责识别图像基础特征,多个基础特征整合后变成上一层的特征,逐层处理,最终在顶层判断出是什么物体。

这就是CNN的基础思路。

三、CNN的基本原理

CNN由卷积层、池化层、全连接层三部分构成,它们各自的作用如下:

我们先来看看卷积层,卷积层提取局部特征的过程,和人类视觉的提取特征类似,如下图所示:

[attach]830017[/attach]

图中的黄色部分是一个滤波器(Filter),我们称它为“卷积核”,它是一个小的矩阵。

卷积核通过滑动窗口的方式在输入数据上进行卷积操作,卷积核的每个元素与输入数据对应位置的元素相乘,然后将所有乘积结果相加,得到卷积操作的输出结果。

不同的卷积核可以捕捉到不同的特征,例如边缘、纹理、形状等。

在训练过程中,卷积神经网络会学习到最优的卷积核参数,使得网络能更好的提取输入数据的局部特征。

因为卷积核比较小,即便我们做完了卷积处理,图像依然很大,这时候需要池化层来对数据进行降维操作:

[attach]830018[/attach]

池化层通过对输入数据的局部区域进行汇聚操作,例如最大池化或平均池化,来减少特征图的大小。

比如原图是20*20,我们用一个10*10的采样窗口对原图进行下采样,最终可以将原图下采样为一个2*2的小图。

这个操作其实就是降低图片的像素,从高清图变成模糊图,这样既保留了主要特征信息,还有效的过滤掉了图片中的干扰信息,减少了向下一阶段传递的数据量。

池化层可以更有效的降低数据维度,大大减少参数和运算量,同时还可以避免过拟合现象的发生。

卷积层和池化层提取出的特征,输入到全连接层进行训练和学习,由于大大减少了参数量,丢弃了干扰特征,使得训练成本和复杂度大大降低。

四、应用场景

CNN在计算机视觉领域有广泛的应用,以下是一些CNN的应用场景:


五、优缺点

CNN的优点:

CNN的缺点:


六、总结

本文介绍了CNN的基本原理和应用场景,CNN非常适合处理图像类任务,在很多领域都有广泛的应用。

下篇文章,我们会介绍循环神经网络(RNN),还会简单介绍它的优化算法,敬请期待。

本文由 @AI小当家 原创发布于人人都是产品经理,未经许可,禁止转载

题图来自 Unsplash,基于 CC0 协议

该文观点仅代表作者本人,人人都是产品经理平台仅提供信息存储空间服务。
作者: xiaoli187    时间: 2024-5-16 07:02
元芳你怎么看?
作者: 麦客卡尔布鲁氏    时间: 2024-5-16 13:16
求沙发
作者: 红颜素手    时间: 2024-5-17 09:26
哈哈哈,楼主求带




欢迎光临 智客公社 (https://bbs.cnaiplus.com/) Powered by Discuz! X3.5