实现对图像的高准确率识别离不开一种叫做卷积神经网络CNN)的深度学习技术。卷积神经网络主要应用于计算机视觉相关任务,但它能处理的任务并不局限于图像,其实语音识别也是可以使用卷积神经网络。

卷积神经网络CNN的概述

尽管前面的神经网络已经能实现图像的识别,但是那是针对28*28的像素。针对现实中的一些图片,往往都是2000像素X2000像素的。这时使用普通的神经网络就会出现问题,因为输入数据量太大会导致网络太大并且计算困难。

如果用全连接神经网络处理大尺寸图像具有三个明显的缺点:

(1)首先将图像展开为向量会丢失空间信息;

(2)其次参数过多效率低下,训练困难;

(3)同时大量的参数也很快会导致网络过拟合。

而使用卷积神经网络可以很好地解决上面的三个问题。

当计算机看到一张图像(输入一张图像)时,它看的是一大堆像素值,当我们人类对图像进行分类时,这些数字毫无用处,可它们却是计算机可获得的唯一输入。现在的问题是:当你提供给计算机这一数组后,它将输出描述该图像属于某一特定分类的概率的数字(比如:80%是猫、15%是狗、5%是鸟)。

人眼看到的和计算机看到的

我们人类是通过特征来区分猫和狗,现在想要计算机能够区分开猫和狗图片,就要计算机搞清楚猫猫狗狗各自的特有特征。计算机可以通过寻找诸如边缘和曲线之类的低级特点来分类图片,继而通过一系列卷积层级建构出更为抽象的概念。这是CNN(卷积神经网络)工作方式的大体概述。

为什么叫卷积神经网络呢?CNN的确是从视觉皮层的生物学上获得启发的。简单来说:视觉皮层有小部分细胞对特定部分的视觉区域敏感。例如:一些神经元只对垂直边缘兴奋,另一些对水平或对角边缘兴奋。

CNN 工作概述指的是你挑一张图像,让它历经一系列卷积层、非线性层、池化(下采样(downsampling))层和全连接层,最终得到输出。正如之前所说,输出可以是最好地描述了图像内容的一个单独分类或一组分类的概率。

什么叫做卷积?

卷积是指将卷积核应用到某个张量的所有点上,通过将卷积核在输入的张量上滑动而生成经过滤波处理的张量。

其实在学习OpenCV的时候,就提到过卷积这个东西:例如在OpenCV For Python入门23 平滑处理之高斯滤波及中值滤波文章中,有3X3的卷积核案例:

卷积的案例

现在以提取边缘为目标,进行卷积计算,有一个卷积算子,最终得到一个提取边缘的效果:

OpenCV For Python入门35 图像轮廓之矩特征

在一个复杂的案例中,例如:

提取边缘效果

简单来说,卷积完成的是对图像特征的提取或者说信息匹配,当一个包含某些特征的图像经过一个卷积核的时候,一些卷积核被激活,输出特定信号。我们训练区分猫狗的图像的时候,卷积核会被训练,训练的结果就是,卷积核会对猫和狗不同特征敏感,输出不同的结果,从而达到了图像识别的目的。


博主个人公众号
版权声明 ▶ 本网站名称:陶小桃Blog
▶ 本文链接:https://www.52txr.cn/2022/CNN0914.html
▶ 本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行核实删除。
▶ 转载本站文章需要遵守:商业转载请联系站长,非商业转载请注明出处!!

最后修改:2022 年 09 月 14 日
如果觉得我的文章对你有用,请随意赞赏