6

卷积神经网络(CNN):如何高效的识别图像?

 7 months ago
source link: https://www.woshipm.com/ai/5987823.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

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

b6fdcf88-daa1-11ed-aaf8-00163e0b5ff3.png

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

一、图像识别的痛点问题

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

  • 图像需要处理的数据量太大:图片是由像素构成的,每个像素又由颜色(R、G、B三个数值)构成,用720p的手机摄像头随便拍张照片,就是1280*720*3=276.48万个参数,计算量无疑是巨大的。
  • 图片内容多变,导致准确率不高:如果对同一物体做翻转、位置变换等处理,使物体以不同的姿态显示在图片中,虽然物体本身并没有太大变化,但却大大提升了图片识别的难度。

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

二、人类的视觉原理

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

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

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

这就是CNN的基础思路。

三、CNN的基本原理

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

  • 卷积层(Convolutional Layer):卷积层负责提取图像中的局部特征。
  • 池化层(Pooling Layer):池化层负责大幅降低参数量级,在保留重要特征信息的同时,降低计算复杂度。
  • 全连接层(Fully Connected Layer):全连接层类似传统神经网络的作用,根据卷积层和池化层处理过的数据,计算出最终的结果。

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

86cc2940-c047-11ee-8f88-00163e0b5ff3.gif

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

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

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

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

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

9c1246d6-c047-11ee-8e46-00163e0b5ff3.gif

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

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

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

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

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

四、应用场景

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

  • 图像分类:可以将图像分为不同的类别,如识别手写数字、识别动物、识别物体等。
  • 目标检测:可以在图像中定位和识别多个目标。这在自动驾驶、视频监控、人脸识别等领域有重要应用。
  • 图像分割:可以用于图像分割,即将图像中的每个像素分配到不同的类别。这在医学图像分析、自然语言处理等领域有广泛应用。
  • 图像生成:可以用于图像生成,例如生成逼真的图像、图像风格转换、图像超分辨率等。
  • 视频分析:可以用于视频分析,例如动作识别、行为识别、视频内容理解等。
  • 医学图像分析:可以用于医学图像分析,例如病理图像识别、肺部结节检测、疾病预测等。

五、优缺点

CNN的优点:

  • 局部感知性:CNN通过卷积操作可以捕捉输入数据的局部空间关系,能够有效地提取图像、语音等数据中的局部特征。
  • 参数共享:CNN中的卷积核在整个输入数据上共享参数,这样可以大大减少网络的参数数量,降低过拟合的风险,并提高模型的训练效率。
  • 平移不变性:CNN具有平移不变性,即对输入数据的平移操作不会改变网络的输出。这使得CNN在处理图像等数据时具有一定的鲁棒性。
  • 多层次的特征学习:CNN通过堆叠多个卷积层和池化层,可以逐层地学习更加抽象和高级的特征表示,从而提高模型的表达能力。
  • 并行计算:CNN中的卷积操作可以并行计算,适合在GPU等硬件上进行高效的计算,加速模型的训练和推理过程。

CNN的缺点:

  • 数据需求量大:CNN通常需要大量的标注数据来训练模型,特别是在复杂任务和大规模数据集上,需要更多的数据来获得良好的性能。
  • 计算资源要求高:由于CNN模型的复杂性,训练和推理过程需要大量的计算资源,特别是在深层网络和大规模数据上。
  • 可解释性较差:由于CNN的复杂结构和参数共享机制,模型的决策过程不太容易解释和理解,这在一些应用场景中可能会受到限制。
  • 对输入数据的变形敏感:CNN对输入数据的变形、旋转等变化较为敏感,这可能导致模型在处理具有变形或扭曲的图像时性能下降。

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

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

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

题图来自 Unsplash,基于 CC0 协议

该文观点仅代表作者本人,人人都是产品经理平台仅提供信息存储空间服务。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK