热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

卷积神经网络(CNN)的原理和我对其的个人理解

文章目录

  • 一、卷积运算
    • 对比数学中的卷积运算
  • 二、**函数
  • 三、池化层
  • 四、输入输出通道
  • 五、参考文章

卷积神经网络,也就是convolutional neural networks (简称CNN)
卷积神经网络的主要核心结构:输入->卷积+**函数->池化->输出

一、卷积运算

卷积神经网络(CNN)原理以及个人理解
盗图1

中间黑色大图就是我们的输入数据。蓝色框就是我们的卷积核所在的位置
左上角为卷积核(大小是3*3)。将卷积核这个“小纸片”,盖到原图的大纸片上,卷积核与原图对应位置的数据作乘法,并写到相应的地方,作为运算的结果。

卷积神经网络(CNN)原理以及个人理解盗图2

整个蓝色框计算结束后,我们会得到一个充满数据的新框框(上分白色小正方形)。然后我们需要对其求**均值**,让这个均值作为这片区域特征的一个代表。

均值只是一种处理方式,也可以使用求和作为区域特征的代表。一样可以实现核心思想:框内每个小格的值越大,和卷积核的特征越符合

新的理解:可以把卷积核当做一个滤波器,传入图像为信号。越符合滤波器(卷积核)的信号(图像),通过卷积核后保留的部分越多(乘积越大)。

卷积神经网络(CNN)原理以及个人理解盗图3
卷积神经网络(CNN)原理以及个人理解盗图4

盖上卷积核,计算对应位置乘积,然后求均值。接下来按照给定的stride(步长)进行卷积核的移动,直到把整个输入都完全覆盖。stride=1,向平移1格
将整个图计算一遍之后,会得到一个特征图(feature map)。特征图是输入通过卷积核运算后,反映特征的所在位置的图。(特征图size必定比输入size小,除非kernel_size = 1)

卷积神经网络(CNN)原理以及个人理解盗图5

在取值(-1,1)的灰度图中,越接近1,表示这片区域的特征越匹特配。越接近-1,和特征的反面越匹配。越接近0,说明和特征的匹配不明显。

卷积神经网络(CNN)原理以及个人理解盗图6 不同的卷积核(滤波器)运算后的结果

对比数学中的卷积运算

卷积的数学公式:
连续:
(fg)(n)=+f(τ)g(nτ)dτ(f*g)(n)=\int ^{+\infty}_ {-\infty} f(\tau) g(n-\tau){\rm d}\tau
离散:
(fg)(n)=+f(τ)g(nτ)dτ(f*g)(n)=\sum ^{+\infty}_ {-\infty} f(\tau) g(n-\tau){\rm d}\tau

PS:关于卷积有意思的解释。卷积的数学意义在于加权叠加。怎么理解呢?
另外一个关于卷积的有意思的解释
看了好多关于卷积的答案,看到这个例子才彻底地理解了这个过程~
关于卷积的一个血腥的讲解
比如说你的老板命令你干活,你却到楼下打台球去了,后来被老板发现,他非常气愤,扇了你一巴掌(注意,这就是输入信号,脉冲),于是你的脸上会渐渐地(贱贱地)鼓起来一个包,你的脸就是一个系统,而鼓起来的包就是你的脸对巴掌的响应,好,这样就和信号系统建立起来意义对应的联系。下面还需要一些假设来保证论证的严谨:假定你的脸是线性时不变系统,也就是说,无论什么时候老板打你一巴掌,打在你脸的同一位置(这似乎要求你的脸足够光滑,如果你说你长了很多青春痘,甚至整个脸皮处处连续处处不可导,那难度太大了,我就无话可说了哈哈),你的脸上总是会在相同的时间间隔内鼓起来一个相同高度的包来,并且假定以鼓起来的包的大小作为系统输出。好了,那么,下面可以进入核心内容——卷积了!
如果你每天都到地下去打台球,那么老板每天都要扇你一巴掌,不过当老板打你一巴掌后,你5分钟就消肿了,所以时间长了,你甚至就适应这种生活了……如果有一天,老板忍无可忍,以0.5秒的间隔开始不间断的扇你的过程,这样问题就来了,第一次扇你鼓起来的包还没消肿,第二个巴掌就来了,你脸上的包就可能鼓起来两倍高,老板不断扇你,脉冲不断作用在你脸上,效果不断叠加了,这样这些效果就可以求和了,结果就是你脸上的包的高度随时间变化的一个函数了(注意理解);如果老板再狠一点,频率越来越高,以至于你都辨别不清时间间隔了,那么,求和就变成积分了。可以这样理解,在这个过程中的某一固定的时刻,你的脸上的包的鼓起程度和什么有关呢?和之前每次打你都有关!但是各次的贡献是不一样的,越早打的巴掌,贡献越小,所以这就是说,某一时刻的输出是之前很多次输入乘以各自的衰减系数之后的叠加而形成某一点的输出,然后再把不同时刻的输出点放在一起,形成一个函数,这就是卷积,卷积之后的函数就是你脸上的包的大小随时间变化的函数。本来你的包几分钟就可以消肿,可是如果连续打,几个小时也消不了肿了,这难道不是一种平滑过程么?反映到剑桥大学的公式上,f(a)就是第a个巴掌,g(x-a)就是第a个巴掌在x时刻的作用程度,乘起来再叠加就ok了,大家说是不是这个道理呢?我想这个例子已经非常形象了,你对卷积有了更加具体深刻的了解了吗?

数学卷积公式和卷积神经网络相关性体现
卷积神经网络中的卷积运算,和数学当中的卷积也是有联系的。卷积之所以能提取特征,是因为输入信号和滤波器(卷积核)的相关性,反映到了输出当中。我想要的特征,反映在卷积核上,输入图片的特征和卷积核越是相似,输出越大(被过滤的越少)

二、**函数

卷积神经网络(CNN)原理以及个人理解盗图7

**函数的目的是进一步的筛选数据特征。举例常见的Relu函数:当x<=0,y=0;x>0,y=x。对于小于0的部分,经过**函数后,被抹除。而大于0的部分,特征的情况得以保留。

三、池化层

池化的目的是为了进一步的减少无关信息,突出有效信息的部分。

以max_pool为例:
max_pool将区域内的最大值进行输出。然后根据设定的ride(步长)进行移动。卷积神经网络(CNN)原理以及个人理解盗图8
卷积神经网络(CNN)原理以及个人理解盗图9

四、输入输出通道

卷积神经网络(CNN)原理以及个人理解盗图10

如图,28*28的原始输入,分成3个通道输出,进入卷积层运算。每个卷积的通道之间互相独立(权重、偏移不共享)。单个卷积通道的权重和偏移量(bias)共享。

输入的通道数取决于上一层。例如原始输入为彩色图时,可以三通道(RGB)作为卷积层的输入通道。若为灰度图,可以一通道输入。

五、参考文章

1.https://zhuanlan.zhihu.com/p/27908027
2.https://blog.csdn.net/bitcarmanlee/article/details/54729807


推荐阅读
  • Ihavetwomethodsofgeneratingmdistinctrandomnumbersintherange[0..n-1]我有两种方法在范围[0.n-1]中生 ... [详细]
  • 解决Only fullscreen opaque activities can request orientation错误的方法
    本文介绍了在使用PictureSelectorLight第三方框架时遇到的Only fullscreen opaque activities can request orientation错误,并提供了一种有效的解决方案。 ... [详细]
  • javascript分页类支持页码格式
    前端时间因为项目需要,要对一个产品下所有的附属图片进行分页显示,没考虑ajax一张张请求,所以干脆一次性全部把图片out,然 ... [详细]
  • 计算机视觉领域介绍 | 自然语言驱动的跨模态行人重识别前沿技术综述(上篇)
    本文介绍了计算机视觉领域的最新进展,特别是自然语言驱动的跨模态行人重识别技术。上篇内容详细探讨了该领域的基础理论、关键技术及当前的研究热点,为读者提供了全面的概述。 ... [详细]
  • 三角测量计算三维坐标的代码_双目三维重建——层次化重建思考
    双目三维重建——层次化重建思考FesianXu2020.7.22atANTFINANCIALintern前言本文是笔者阅读[1]第10章内容的笔记,本文从宏观的角度阐 ... [详细]
  • 单片微机原理P3:80C51外部拓展系统
      外部拓展其实是个相对来说很好玩的章节,可以真正开始用单片机写程序了,比较重要的是外部存储器拓展,81C55拓展,矩阵键盘,动态显示,DAC和ADC。0.IO接口电路概念与存 ... [详细]
  • 微信公众号推送模板40036问题
    返回码错误码描述说明40001invalidcredential不合法的调用凭证40002invalidgrant_type不合法的grant_type40003invalidop ... [详细]
  • 本文对比了杜甫《喜晴》的两种英文翻译版本:a. Pleased with Sunny Weather 和 b. Rejoicing in Clearing Weather。a 版由 alexcwlin 翻译并经 Adam Lam 编辑,b 版则由哈佛大学的宇文所安教授 (Prof. Stephen Owen) 翻译。 ... [详细]
  • 如何将Python与Excel高效结合:常用操作技巧解析
    本文深入探讨了如何将Python与Excel高效结合,涵盖了一系列实用的操作技巧。文章内容详尽,步骤清晰,注重细节处理,旨在帮助读者掌握Python与Excel之间的无缝对接方法,提升数据处理效率。 ... [详细]
  • 如何将TS文件转换为M3U8直播流:HLS与M3U8格式详解
    在视频传输领域,MP4虽然常见,但在直播场景中直接使用MP4格式存在诸多问题。例如,MP4文件的头部信息(如ftyp、moov)较大,导致初始加载时间较长,影响用户体验。相比之下,HLS(HTTP Live Streaming)协议及其M3U8格式更具优势。HLS通过将视频切分成多个小片段,并生成一个M3U8播放列表文件,实现低延迟和高稳定性。本文详细介绍了如何将TS文件转换为M3U8直播流,包括技术原理和具体操作步骤,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 基于Net Core 3.0与Web API的前后端分离开发:Vue.js在前端的应用
    本文介绍了如何使用Net Core 3.0和Web API进行前后端分离开发,并重点探讨了Vue.js在前端的应用。后端采用MySQL数据库和EF Core框架进行数据操作,开发环境为Windows 10和Visual Studio 2019,MySQL服务器版本为8.0.16。文章详细描述了API项目的创建过程、启动步骤以及必要的插件安装,为开发者提供了一套完整的开发指南。 ... [详细]
  • 在对WordPress Duplicator插件0.4.4版本的安全评估中,发现其存在跨站脚本(XSS)攻击漏洞。此漏洞可能被利用进行恶意操作,建议用户及时更新至最新版本以确保系统安全。测试方法仅限于安全研究和教学目的,使用时需自行承担风险。漏洞编号:HTB23162。 ... [详细]
  • V8不仅是一款著名的八缸发动机,广泛应用于道奇Charger、宾利Continental GT和BossHoss摩托车中。自2008年以来,作为Chromium项目的一部分,V8 JavaScript引擎在性能优化和技术创新方面取得了显著进展。该引擎通过先进的编译技术和高效的垃圾回收机制,显著提升了JavaScript的执行效率,为现代Web应用提供了强大的支持。持续的优化和创新使得V8在处理复杂计算和大规模数据时表现更加出色,成为众多开发者和企业的首选。 ... [详细]
  • 手指触控|Android电容屏幕驱动调试指南
    手指触控|Android电容屏幕驱动调试指南 ... [详细]
  • MySQL 5.7 学习指南:SQLyog 中的主键、列属性和数据类型
    本文介绍了 MySQL 5.7 中主键(Primary Key)和自增(Auto-Increment)的概念,以及如何在 SQLyog 中设置这些属性。同时,还探讨了数据类型的分类和选择,以及列属性的设置方法。 ... [详细]
author-avatar
UIleader
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有