(整理)吊炸天的CNNs,这是我见过最详尽的图解!(上)

news/2024/9/8 3:43:07/

之前在CSDN上看到这篇文章,觉得通俗易懂,写的非常好。不过近来再次查看,发现文章的照片莫名其妙的没有了,没有图就根本看不懂了。找到了之前关注的微信公众号:AI传送门 。

在里面找到了这篇文章,决定再把这篇文章重新整理过来。

导读:卷积神经网络(CNNs)在“自动驾驶”、“人脸识别”、“医疗影像诊断”等领域,都发挥着巨大的作用。这一无比强大的算法,唤起了很多人的好奇心。当阿尔法狗战胜了李世石和柯杰后,人们都在谈论“它”。

但是,

 

“它”是谁?

“它”是怎样做到的?

已经成为每一个初入人工智能——特别是图像识别领域的朋友,都渴望探究的秘密。

本文通过“算法可视化”的方法,将卷积神经网络的原理,呈献给大家。教程分为上、下两个部分,通篇长度不超过7000字没有复杂的数学公式,希望你读得畅快。

 

下面,我们就开始吧!

先提一个小问题:

“你是通过什么了解这个世界的?”

当一辆汽车从你身边疾驰而过,你是通过哪些信息知道那是一辆汽车?

“它的材质,速度,发动机的声响,还是什么?”

你可能说不清所以然,但是当你看到下图时,你会第一时间反应出来,“噢,车! ”

å¾ç

为什么你能猜对它?

 

“轮廓”!

——对,我给你看了它的轮廓。

再给你一些七七八八、大小不一的图片,你总能猜对一些。

你是怎样做到的?

很简单

你读了一张图片  找到了图片的特征 → 进而对图片做出了分类

                                                                    å¾ç

其实,CNNs的工作原理也是这样。

 

先不考虑那些复杂的专有名词:什么卷积(convolution)、池化(pooling)、过滤器(filter) 等等…… 统统抛到一边。

 

CNNs做的就是下面3件事:

 

1. 读取图片;

2. 提取特征;

3. 图片分类。

 

下面,我们逐一来看各步骤的细节。

图片

如果是一张黑白图片,我们看到的,是这个样子的:

 

图片

 

而在计算机的眼里,它看到的,是这个样子的:

图片

好没有情趣……

图片

 

这些数字是哪里来的?

因为图片是由一个又一个的像素点构成。(当你将图片无限放大,你能看到那些像素点)

图片

而每一个像素点,都是由一个0~255的数字组成。

图片

所以,在计算机“看”来,一张图片,就是一个又一个的数字。

图片

 

所以,我们第一步的工作,是将左上图的那只小狗,转换成右上图的那一行行数字。

 

幸运的是,目前在python中,很多第三方库,诸如PIL/Matplotlib等,都可以实现这种转换,我们需要了解的是,后面的所有运算过程,都是基于右上图来完成的,至于具体的转换过程,不需要我们费心来做。

 

图片

在文章开篇的例子中,我们知道,在识别一辆汽车的时候,可以将它的轮廓提取出来,从而判断出那是一辆车。

 

同样的,CNNs在识别图片时,也需要提取图像的特征。

 

在CNNs中,完成这一工作的小伙叫“卷积”。(希望你不要纠结这个极具个性的名字,懂得它的原理就OK)

 

“卷积”在每次工作时,手里都会握着几把“过滤器”。

 

图片

 

过滤器的作用是:寻找图片的特征。

 

仍以小狗为例,过滤器会在图片上从头到尾“滑过”一遍

 

图片

 

每滑到一个地方,就将该地方的图像特征提取出来。

 

那它是怎样提取的呢?

 

别忘了,在计算机的眼里,世界是这个样子的:

图片

(为了简化问题,这里将像素值仅用0和1表示)

 

假设过滤器是这个样子的:

图片

 

 

当橘色的过滤器在绿色矩形框中,缓慢滑过时,

我们用橘色过滤器中的每一个值,与绿色矩形框中的对应值相乘、再相加

 

有点儿拗口,直接看图:

 

图片

(点击图片,查看大图)

 

结果“4”,就是我们从第一个橘色方框中,提取出的特征。

 

如果我们每次将橘色过滤器,向右、向下移动1格,则提取出的特征为:

 

图片

 

你可能会问:

 

我知道绿色矩阵代表一张图片,是计算机“眼中”图片的样子。

 

但是,

经过橘色过滤器提取特征后,得到的粉色矩阵,那是什么?

 

 

图片

 

我们从人类的视角,再重新审视一遍。

 

这次,我们回到之前的例子中。

 

仍以这张萌狗为例,它经过“过滤器”提取特征后,得到的是一张……哦,好吧……看起来有点儿模糊的图。

图片

(点击图片,查看大图)

 

虽然图片模糊了,但是图片中的主要特征,已经被过滤器全部提取出来,单凭这么一张模糊的图,作为人类的我们,足以对它做出判断了。(谁敢说它是一只猫?!)

 

下面,我们再换几个过滤器试试。

 

图片

(点击图片,查看大图)

这些就是经过过滤器提取后,得到的不同“特征图片”。

由此我们可以看出,采用不同的“过滤器”,能够提取出不同的图片特征。

 

你可能又会问:

 

那过滤器里的数值,该如何确定呢?

 

这就涉及到CNNs要做的工作了。每一个过滤器中的数值,都是算法自己学习来的,不需要我们费心去设置。

 

需要我们做的有:

① 设置过滤器的大小(用字母“F”表示)

上例中,我们的过滤器大小是3×3,即F=3。

当然,你还可以设置成5×5,都是可以的。

只不过,需要注意的是:过滤器的尺寸越大,得到的图像细节就越少,最终得到的特征图的尺寸也更小。

 

② 设置过滤器滑动的步幅数(用字母“S”表示)

上例中,过滤器滑动的步幅是1,即每次过滤器向右或向下滑动1个像素单位。

当然,你也可以将步幅设置为2或更多,但是通常情况下,我们会使用S=1或S=2。

 

③ 设置过滤器的个数(用字母“K”表示)

上例中,我们分别给大家展示了4种过滤器。所以你可以理解为K=4,如下图:

图片

 

当然,你可以设置任意个数。

再次强调:不要在意过滤器里面的数值,那是算法自己学习来的,不需要我们操心,我们只要把过滤器的个数设置好,就可以了。

 

所以,一张图片,在经过4种过滤器的提取后,会得到4种不同的特征图片:

 

 

实际上,这就是“卷积”小伙儿所做的工作。

 

图片

 

从上面的例子我们能够看到,“卷积”输出的结果,是包含“宽、高、深”3个维度的:

 

图片

 

实际上,在CNNs中,所有图片都是包含有“宽、高、深”。

像输入的图片——萌狗,它也是包含3个维度,只不过,它的深度是1,所以在我们的图片中没有明显地体现出来:

 

图片

 

所以,我们要记住,经过“卷积”层的处理后,图片含有深度,这个“深度”,等于过滤器的个数。

例如,上面我们采用了4种过滤器,那么,输出的结果,深度就为4。

 

④ 设置是否补零(用字母“P”表示)

何为“补零”?

上面的例子中,我们采用了3×3大小的过滤器,直接在原始图片滑过。

从结果中可以看到,最终得到的“特征图片”比“原始图片”小了一圈:

图片

为什么会出现这种情况?

原因很简单:过滤器将原始图片中,每3*3=9个像素点,提取为1个像素点

 

图片

所以,当过滤器遍历整个图片后,得到的特征图片会比原始图片更小。

 

当然,你也可以得到一个和原始图片大小一样的特征图,这就需要采用“在原始图片外围补零”的方法:

图片

 

下面,我们来看看“补零”后的效果:

 

图片

 

从图中可以看到,当我们在原始图片外围补上1圈零后,得到的特征图大小和原始图一样,都是5*5。

 

你可能会问:

 

如何确定“补零”的圈数,才能保证图片大小一致?

 

假设你的过滤器大小为F,滑动步幅S=1,想要实现这一目标,补零的个数应为:

 

图片

举个例子:

在上图中,因为我们使用的是3*3大小的过滤器,而且每次滑动时,都是向右或向下移动1格。

所以,为了使特征图片与原始图片保持一致,需要补零P=(3-1)/2=1,即在原始图片外围,补1圈零。

 

如果你使用的过滤器大小为5*5,那么补零P=(5-1)/2=2,即在原始图片外围,补2圈零。

 

当然,是否需要“补零”,由你自己来决定,“补零”并不是硬性规定。

 

图片 温馨提示:

假设原始图片的大小为W,当我们设置了

过滤器的大小(F)、滑动的步幅数(S)、以及补零的圈数(P)

实际上,得到的特征图片大小为:

 

图片

所以,当我们设置这些超参数时,需要遵循一个原则,即“上面公式得到的结果,必须为一个整数”:

 

图片

 

恭喜你!

看到这里,CNNs中最难的部分我们已经学习完了。

下面,我们会学习“非线性计算”和“池化”。

但它们都很简单,深呼吸,下节课我们继续……

(整理)吊炸天的CNNs,这是我见过最详尽的图解!(下)

 

原文在微信公众号:AI传送门

 


http://www.ppmy.cn/news/943220.html

相关文章

无参构造方法与有参构造方法的个人理解

都写在图片注解里 无参构造方法 有参构造方法 运行图片 我是java自学小萌新【闲云】 一起努力吧!

java课程设计拼图_java拼图游戏课程设计报告

java拼图游戏课程设计报告 砾寸椒涩藕矾糯陋捕炬洁困喘港划舟逃豺涌锤芳喜胺递龚乏埔跺摩实阿信颊立蹲稿船纽臃瘪自康嘱脖究绢术拱虑犹犀棉宜炙转鸦半甘哨疗墓暑蛊渤幽峭咀豺虫拘召饭莽畜穗篷姿钟逻捞跨瀑拿丈土锦瑚脉才桨潜末焰皿纫可剪闯辟同的独淋圈饱篓礁拥固完谣谐主敲泄…

HTML做一个简单漂亮的宠物网页(纯html代码) 带视频 带音乐 带报告

⛵ 源码获取 文末联系 ✈ Web前端开发技术 描述 网页设计题材,DIVCSS 布局制作,HTMLCSS网页设计期末课程大作业 | 宠物网页设计 | 保护动物网页 | 鲸鱼海豚主题 | 保护大象 | 等网站的设计与制作 | HTML宠物网页设计 | HTML期末大学生网页设计作业 HTML:…

吊炸天的CNNs,这是我见过最详尽的图解!(上)

转自 https://blog.csdn.net/liufanghuangdi/article/details/81188283 导读:卷积神经网络(CNNs)在“自动驾驶”、“人脸识别”、“医疗影像诊断”等领域,都发挥着巨大的作用。这一无比强大的算法,唤起了很多人的好奇心…

【深度学习】卷积神经网络

讲卷积神经网络之前说说为什么能够进行分类识别?按照传统的SIFT,HOG算法都是先进行特征的提取过程,那么卷积神经网络怎么进行特征的提取呢? 下面,我们就开始吧! 先提一个小问题:“你是通过什么…

系统学习Linux-SSH远程服务(二)

概念 安全外壳协议,提供安全可靠的远程连接 特点 ssh是工作在传输层和应用层的协议 ssh提供了一组管理命令 ssh 远程登陆 scp 远程拷贝 sftp 远程上传下载 ssh-copy-id ssh keygen 生成 提供了多种身份验证机制 身份验证机制 密码验证 需要提供密码 密…

【使用卷积神经网络进行猫狗识别】------机器学习(附完整代码和数据集)

最近报名了官方的新星计划Python赛道,开营时看到很多优秀的前辈分享自己的博主经历,从普通小白蜕变成万粉博主,大大鼓舞了我,业精于勤,砥砺前行。于是我决定从最近感兴趣的人工智能------卷积神经网络进行图像识别开始…

烤仔与狗狗的爱恨情仇由你yy!

全宇宙最强对话栏目,做客嘉宾只有你想不到,没有本仔邀请不来!内容只有你不敢说,没有烤仔不敢播! 烤仔,在《烤问》等你! 还记得上次的梗王之战嘛????《烤问 | 各小组准备!梗王已出…

[前端工坊] 微信小游戏|萌狗冠军之路,纯干货分享!

文章来自微信公众号:前端工坊(fe_workshop),不定期更新有趣、好玩的前端相关原创技术文章。如果喜欢,请关注公众号:前端工坊 版权归公众号所有,转载请注明出处。 作者:毛科 刘麒麟 **我们做了一个小游戏&am…

一位深度学习小萌新的学渣笔记(一)神经网络原理理解+pytorch框架理解

软工大一学生,9月升大二,在暑假期间申报项目,7月份开始学习,学习的项目关于到神经网络和注意力机制 自学python 首先通过廖雪峰老师的网站自学了python 简单了解神经网络 学习所需知识 配置开发环境 Anaconda3 python3.7&…

Linux——服务器和服务器之间的拷贝

1. scp(secure copy)安全拷贝 scp 可以实现服务器与服务器之间的数据拷贝。(from server1 to server2) scp -r $pdir/$fname $user$host:$pdir/$fname 命令 递归 要拷贝的文件路径/名称 目的地用户主机:目的地路径/名称2. rsync…

PDF怎么转换成WORD?3大方法助您PDF转Word!

还不知道PDF怎么转换成WORD吗,本文将提供完整的PDF转Word方案,包括离线、在线或者SDK API等各种方式,总有一款满足您的需求。 什么是PDF转Word? PDF是出版和图形领域的软件厂商Adobe制定的电子文档格式标准。PDF转Word就是把PDF文…

这几个相见恨晚的PDF转换成Word技巧,请收好

生活学习中,免不了上网查找一些专业资料或者学术论文等,下载下来发现几乎都是PDF格式,若想对PDF文档进行编辑,实属不易,如何有效地对PDF文档进行图片,文字等复制,粘帖使用呢? 答案很…

Word怎么转换成PDF?三步教你免费搞定

Word文档是我们日常工作和学习中最常用的文件格式之一,但是有时候我们需要将其转换成PDF格式,以便更方便地与他人共享和阅读。转换Word文档为PDF格式非常简单,下面将介绍一个简单三步免费搞定的方法。 步骤一:打开在线转换网站 在…

PDF怎么转成Word?安利几个转换小技巧

平时我们工作学习的时候,经常要跟文件打交道,并且接触最多的文件形式就是PDF与Word两种文件格式,它们各有各的好处,PDF的保密性以及兼容性好,便于我们进行文件分享查阅,而Word就方便我们进行编辑。如果我们…

怎么把Word转换成PDF?这几种转换神器分享给你

如何将Word文档转换成PDF格式文件呢?大家在日常中经常会使用这两种文件,有时候需要把PDF文件转换成Word文档来进行编辑,有时候又需要把Word文档转换成PDF来进行传输文件发送文件。PDF如何转换成Word的方法前面给大家分享过转换方法&#xff0…

PDF怎么转换成Word?两种PDF免费转Word方法推荐

不知道你们有没有发现,我们在网上下载的很多资料都是PDF格式的,尽管PDF文件也可以通过专门的PDF编辑器来编辑,但是PDF文档作为版式文档,编辑起来还是存在很多局限性,所有当我们需要大量编辑修改文档的时候,…

10年老技术员教你免费的、完整的把 PDF 转换为 Word

先给大家打个预防针:由于 PDF 文件本身的特性,想要百分百完美地将它转回 Word 格式基本上是不可能的! 我们都知道PDF是一种不能编辑的文件,如果要将pdf文件转换成word文件又该怎样转换呢?其实我们可以借助工具实现pdf…

【重温篇】八大排序——快速排序

快排基本原理 基本步骤 ①首先定义第一个数作为基准数 ②然后定义两个游标,i游标指向数组第一个,j游标指向数组最后一个 ③让j游标找比当前基准数小的,找到后停下来 ④让i游标找比当前基准数大的,找到后停下来 ⑥相遇之后&a…

SpringCloud系列(十六)[分布式搜索引擎篇] - DSL 查询及相关性算分的学习 (部分)

在SpringCloud系列(十五)[分布式搜索引擎篇] - 结合实际应用场景学习并使用 RestClient 客户端 API这篇文章中我们已经对 RestClient 有了初步的了解, 并且已经将一些数据进行了存储, 但是这并不是我们学习 ElasticSearch 的目的, ElasticSearch 最擅长的…