机器学习系列(5):卷积神经网络CNN之--原理及python实现

机器学习系列(7):目标检测YOLO算法及Python实现以自动驾驶为例 机器学习系列 (7) 目标检测之YOLO算法原理及Python实现 目标检测: 1.目标分类 2.目标定位 3.特征点检测 4.滑动窗口检测 5.卷积的滑动窗口实现 YOLO算法: 1.什么是YOLO 2.边界框(Bounding Box)回归 3.交并比(IOU) 4.非极大抑制(NMS) 5.Anchor box 6.候选区域(Region proposals)(optio... 阅读详情

机器学习系列(5):卷积神经网络CNN之--原理及Python实现

图片挂了,大家可以移步以下链接:
https://mp.weixin.qq.com/s?__biz=MzU4NTY1NDM3MA==&mid=2247483814&idx=1&sn=cbca57110684f795521fa5c96595360c&chksm=fd8608abcaf181bdab6a49da042f953429ee2d315d5e8eca74d7418ac14f39defc2d2b684193&token=255604471&lang=zh_CN#rd

CNN原理解释:

  • 计算机视觉
  • 边缘检测
  • Padding
  • 卷积步长
  • 单卷积层
  • 池化层
  • 卷积神经网络示例
  • 为什么选择CNN

Python实现:

  • 见文章内容

申明

本文原理解释及公式推导部分均由LSayhi完成,供学习参考,可传播;代码实现部分的框架由Coursera提供,由LSayhi完成,详细数据及代码可在github查阅。
https://github.com/LSayhi/DeepLearning

优快云博客:https://blog.youkuaiyun.com/LSayhi

微信公众号:AI有点可ai(文末附二维码,感谢您的关注)

1.计算机视觉:

  • 计算机视觉是一门研究如何使机器学会“看”的学科,让机器能够从图像或多维图像中感知。其应用广泛,比如人脸识别、自动驾驶、风格转换等。在本系列先前的个人笔记中,我们将深度神经网络应用于识别猫,虽然取得了不错的效果,但是训练分类器的时间较长,本次我们将介绍卷积神经网络(CNN),这种流行的网络结构广泛应用于计算机视觉领域,并取得了很好的效果。

2.边缘检测:

  • 在本系列之前的识别猫的笔记中,我们提到了应用深度全连接的神经网络进行分类,当图像像素比较高时,将会遇到非常大的麻烦。举例说明,如Figure 1所示,若图片大小为1000×1000×3,第一层隐藏层神经元个数为1000,那么的维度将是1000×3M=30亿,与数据量相比大很多,很容易发生过拟合,而且巨大的参数数量,对内存的需求急剧增大,若图片的边长为n,那么这种需求是,这显然不适合于大规模计算。卷积神经网络通过卷积运算,大大减小了深度学习的计算量,而且在效果上表现更突出。

Figure 1 : MLP实现的分类器

  • 边缘检测是卷积神经网络的一个概念,它的作用是提取出图片中物体的边缘信息(可以认为是一种滤波),网络可以根据提取到的特征进行分类。如Figure 2所示,边缘检测通过两个边缘检测器(滤波器,也叫核,即kernel),分别检测出了图片的垂直边缘和水平边缘,这就是边缘检测的简单示例。那么边缘检测是如何作用的又是如何实现的,举个例子来说,见Figure 3,假设图片中像素值越大的部位越亮,反之越暗,那么经过一个垂直检测器(Figure 3中)后,过滤出来的新图片(Figure 3右)检测出了原来图片(Figure 3左)的明暗交界边缘。事实上改变过滤器中的值的大小和分布可以构造出形式各样的检测器。

    Figure 2 : 边缘特征


    Figure 3 : 卷积示意
  • 那么这个过滤的操作是什么呢?其实就是“卷积运算”(和数学上定义的卷积稍有不同,在数学定义中卷积运算在对应元素相乘之前,会有一个对Kernel先反向,在CNN中我们不进行反向,原因是其不影响对边界特征的提取,关于此点,可参见个人专题笔记《机器学习中的数学--卷积运算》),以图Figure 3说明这里“卷积”的含义,图中左边是一个图片的像素矩阵,中间是过滤器,右边是新检测出的边缘图片,左边有三种颜色标记的框,经过“卷积”运算后,对应在右边相应颜色的输出位上,看出来了吧,这里的卷积指的是矩阵的元素乘积求和,然后移动Kernel再次求和,最后拼成新的矩阵。所以改变过滤器,可改变输出的新图形(称为特征)。在卷积神经网络中,我们把过滤器中的值当作参数让网络去学习,这样可以自动给出具体的值,并且可以检测任何角度的边缘特征,通过这种计算方式,我们提取特征的方式从全连接变成了卷积,参数数量减小为过滤器的大小O(J×K),过滤器的个数L,时间复杂度降为O(J×K×L),不再是输入维数的平方量级,这大大减小了深度学习的计算量。

Padding:

  • Padding,顾名思义为填充。前面提到,我们在做特征提取时,用到的是卷积运算,由于其运算特点,容易发现其对整张图片的边沿部分的数值在计算中使用较少,而在其它区域,其数值不止使用较多,这意味这对于边沿部分提取到的特征较少,而且可以发现,每次进行特征提取后,图像的大小减小了,但你可能不想让某次的图像减小。为了解决这两个问题,CNN引入了Padding思想,即在卷积运算之前,图像外沿先填充新的像素点,这样边缘信息能被更好的提取,新出来的特征图像大小也会更大,通过合适选择填充像素圈数(设为p)和Kernel的大小,可以控制输出特征图像的大小,常见的有等维度输出,半维度输出等。如图Figure 4,对一个6×6大小的图像,经过3×3大小的Kernel,其输出图像维度为4×4,而当我们在外圈填充一层像素之后,图像先变成了8×8,然后经过3×3的kernel,输出图像依然是6×6,这就是padding的作用。

Figure 4 : Padding举例

卷积步长:

  • 在以上的描述中,Kernel每次移动的步长都是1,如果把每次移动的步长定义为卷积步长(Stride,简略为S表示),那么提取出来的特征图像与步长为1时大小不一样,例如当S为2时,输入输出大小的的关系如图Figure 5。

Figure 5 : 卷积步长

  • 一般的,容易得到特征矩阵的大小与原图像和Kernel的关系可用下式表示(假设原图像大小为n×n,Kernel的大小为f×f,Padding的大小为P,那么输出的大小为.

三维卷积:

  • 三维卷积即是一维卷积和二维卷积的推广,事实上N维空间上的卷积形式是一样的,这里特地介绍三维卷积是为了描述RGB图像的边缘提取,黑白图像的维度可以用二维平面表示,而彩色图像需要用三维空间来表示,因为彩色图像有三个通道,所以在做卷积运算时,kernel的维度为从二维增加到三维,第三个维度的大小与彩色图像的必须通道数相同,Figure 6是三维卷积的演示,注意输出不是4×4×3,而是4×4×1。

Figure 6 : 三维卷积示意

单卷积层:

  • 以上是卷积神经网络的基础描述,下面介绍单层卷积神经网络的具体实现。以图Figure 7为例,单层神经网络在三维卷积的基础上增加了一个Kernel个数的维度,显然输出最后一个维度也自然成了三维Kernel的个数K,和全连接神经网络一样,我们也加入了激活函数。单卷积层相当于在提取图像的特征。从这里可知,不管输入图像多大,参数的数量只由Kernel的大小和个数确定,因此参数数量远远小于全连接神经网络。

Figure 7 : 单层卷积神经网络

池化层pooling:

  • 池化层是一层对图像进行另一种处理的层,直观来说,这一层的作用是提取区域特征,从实际效果上看,这种方式确实提升了CNN的“看”的能力。Figure 8是池化的一个示例,此例中使用的是最大池化(Max pooling),即取对应区域的最大值,此外常用的还有平均值池化等。
  • 池化层也有对应的Kernel,步长等参数,但是不同于卷积层的Kernel,这些参数并不需要由网络学习得到,我们给定Kernel的大小和步长后,计算是确定的(卷积层的Kernel参数还有每个Kernel里的数字,池化层没有),所以池化层不会额外增加新的参数,且由于其能缩小图像尺寸,反而能加快训练。当输入图像是三维的时候,kernel也对应增加为3维,同样输出也增加为3维(不同于卷积运算,因为在卷积层,kernel的个数是可以改变的,这增加输出的一个维度,而在池化层,kernel的个数确定是1,所以为了能使池化的输出作为卷积的输入,取最大值时,不会在三维空间取,而是在二维平面取完后,在第三个维度拼接)。

Figure 8 : 二维最大池化


Figure 9 : 三维最大池化

卷积神经网络示例:

  • 卷积神经网络由输入层、卷积层、池化层、全连接层,输出层复合而成,除了输入输出层固定为1层外,其它层均不固定,以下就是一个经典的卷积网络LeNet-5的例子,如所示。

    Figure 10 : 卷积神经网络LeNet-5

为什么选择CNN:

  • 参数共享机制:在卷积神经网络中,参数是kernel的值,这些值对所有的区域都是一样的,因此参数的数量可以做到比较少,能有效的防止过拟合。
  • 稀疏连接机制:在卷积网络的输出中,每一个“小格子”的输出只与输入图像和其对应的部分有关,而已其它部分无关,计算量较小。
  • 高级特征提取:不断使用卷积池化的过程相当于不断提取更高级的特征。

PYTHON实现

本文相应的代码及资料已经以.ipynb文件和.pdf形式在github中给出。

.ipynb文件在链接/Coursera-deeplearning深度学习/课程4/week1/

.pdf文件在链接/Coursera-deeplearning深度学习

github地址:https://github.com/LSayhi/DeepLearning

Python机器学习入门:从线性模型到神经网络实战全解析 机器学习作为人工智能的核心技术,通过算法让计算机从数据中学习规律并做出预测。其基本原理涉及监督学习、无监督学习和强化学习三大范式,通过特征工程、模型训练和评估优化等流程实现智能决策。在技术价值层面,机器学习能够自动化处理复杂模式识别任务,显著提升数据处理效率和预测准确性。应用场景广泛覆盖图像分类、客户流失预测、房价回归分析等实际业务需求。本文基于Python环境,详细解析线性回归、决策树等经典算法,并深入探讨神经网络实战配置,为初学者提供从基础概念到项目落地的完整学习路径,特别适合希望系统掌握机器学习核心技 阅读详情

相关推荐

[Python人工智能] 八.卷积神经网络CNN原理详解及TensorFlow编写CNN

从本专栏开始,作者正式开始研究Python深度学习、神经网络及人工智能相关知识。前一篇文章介绍了什么是过拟合,并采用droput解决神经网络中过拟合的问题,以TensorFlow和sklearn的load_digits为案例讲解;本篇文章详细讲解了卷积神经网络CNN原理,并通过TensorFlow编写CNN实现了MNIST分类学习案例。本专栏主要结合作者之前的博客、AI经验和相关视频介绍,后面随着深入会讲解更多的Python人工智能案例及应用。基础性文章,希望对您有所帮助~

杨秀璋的专栏 1万+

CNN基本原理及Python实现

CNN基本原理,和Python的简单实现过程

vinojie的博客 2万+

NVIDIA 2025 Board Design Engineer 校招笔试全解析:从基础门电路到理想放大器设计

本文详细解析了NVIDIA 2025届板级设计工程师校招笔试的核心考点与解题策略。内容涵盖从基础门电路、CMOS实现NOR门,到开关电源CCM/DCM模式波形分析与效率计算,以及理想运放电路设计与稳定性优化。旨在帮助考生构建硬件知识体系,掌握工程思维,顺利通过NVIDIA Board Design Engineer校招笔试。

weixin_29172201的博客 195

人工智能:深度学习算法及应用——简单理解CNN卷积神经网络并python实现(带源码)

实验四:深度学习算法及应用一、 实验目的二、 实验要求三、 实验的硬件、软件平台四、 实验原理1.1. 深度学习概述1.2. 深度学习的常见结构1.3. 卷积神经网络(CNN)**卷积****池化**全连接网络1.4. 卷积神经网络的大致结构1.5. 参数学习五、 实验内容与步骤1. 深度学习工具安装1.1. 使用pip命令安装tensorflow-gpu 1.9.01.2. 下载安装CUDA Toolkit 9.01.3. 下载cuDDN7.1.43. CNN设计4. 具体实现**最后,主要的学习过程如下

weixin_43973089的博客 2万+

单细胞数据互转实战:从Scanpy的h5ad到Seurat对象的四种高效方法

本文针对单细胞数据分析中Scanpy的h5ad格式与Seurat对象互转的常见难题,详细对比了SeuratDisk、anndataR、schard和sceasy四种高效转换方法。文章从实战出发,剖析了每种方法的原理、操作流程、优缺点及避坑指南,并提供了清晰的选型策略,帮助用户根据数据特点选择最佳方案,实现跨平台数据的无缝衔接。

weixin_29099217的博客 446

别再手动跑定时任务了!Spring Boot项目5分钟集成xxl-job保姆级教程(含Docker部署调度中心)

本文提供Spring Boot项目快速集成xxl-job的保姆级教程,包括Docker部署调度中心的详细步骤。通过实战案例展示如何构建企业级分布式任务调度系统,解决传统定时任务的资源竞争、单点故障等问题,提升开发效率与系统可靠性。

weixin_30315905的博客 291

【深度学习】越来越卷,教你使用Python实现卷积神经网络(CNN)

@Author:Runsenhttps://blog.youkuaiyun.com/weixin_44510615/article/details/117409037卷积神经网络Yann LeCun ...

fengdu78的博客 2万+

YOLOv8 更换损失函数DIoU、EIoU、GIoU...Inner-IoU...

介绍了一些损失函数,并将其应用到yolov8训练中

分享一些自己改进代码的实例 888

【python】CNN算法

人工神经网络 神经元 神经网络由大量的神经元相互连接而成。每个神经元接受线性组合的输入后,最开始只是简单的线性加权,后来给每个神经元加上了非线性的激活函数,从而进行非线性变换后输出。每两个神经元之间的连接代表加权值,称之为权重(weight)。不同的权重和激活函数,则会导致神经网络不同的输出。 举个手写识别的例子,给定一个未知数字,让神经网络识别是什么数字。此时的神经网络的输入由一组被输入图像的像素所激活的输入神经元所定义。在通过非线性激活函数进行非线性变换后,神经元被激活...

m0_53907018的博客 2092

24. SAP UI5 应用如何使用 OData 数据模型

本教程之前的二十三个步骤,使用的数据模型都是 JSON 模型。从本步骤开始,我们要学习另一种非常重要的数据模型:OData 数据模型。 OData 数据模型也是 SAP 产品里广泛使用的数据模型,比如 SAP S/4HANA,SAP CRM Fiori 应用等等,都使用的是 OData 数据模型而不是 JSON 数据模型。 使用 OData 数据模型的典型场景就是,通过 OData 模型提供的 Read API,将远端服务器上存储的数据通过 OData 协议读取到客户端,并显示在 SAP UI5 应用里。.

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 5797

华为OD机考双机位C卷 - 评委评分 (Java & Python& JS & C/C++ & GO )

华为OD机考双机位C卷 - 评委评分 (OD上机考试双机位C卷)。提供在线OJ刷题。Java、C++、Python、GO语言、C语言、JavaScript题解,并提供完整思路讲解。

算法大师! 1750

5-机器学习系列(5):卷积神经网络CNN之--原理及Python实现1

5-机器学习系列(5):卷积神经网络CNN之--原理及Python实现1 【下载地址】5-机器学习系列5卷积神经网络CNN之--原理及Python实现1 探索卷积神经网络(CNN)的奥秘,掌握其在图像识别与物体检测中的强大应用。本文档深入浅出地解析CNN的基本原理,从卷积层、池化层到全连接层,逐一揭示其工作机制。通过Py...

gitblog_06777的博客 407

彻底解决Failed to configure a DataSource: ‘url‘ attribute is not specified and no embedded datasource

Failed to configure a DataSource: ‘url‘ attribute is not specified and no embedded datasource

renkai721的专栏 24万+

开源推荐:探索卷积神经网络CNN之--原理及Python实现1

开源推荐:探索卷积神经网络CNN之--原理及Python实现1 【下载地址】5-机器学习系列5卷积神经网络CNN之--原理及Python实现1 探索卷积神经网络(CNN)的奥秘,掌握其在图像识别与物体检测中的强大应用。本文档深入浅出地解析CNN的基本原理,从卷积层、池化层到全连接层,逐一揭示其工作机制。通过Python代...

gitblog_06731的博客 277

【异常】Antigravity IDE 登录异常与网络连接错误排查指南

在使用 Google 推出的 AI 原生 IDE时,部分用户可能会遇到身份验证失效与网络环境冲突导致的叠加错误。本文将针对此类典型故障提供完整的解决思路。

奶爸的编程之路,也就一周冷个三天 1711

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

机器学习系列(8):人脸识别基本原理及Python实现

“ 众所周知,人脸识别和人脸验证已经得到大量应用,那么它们之间有什么异同呢,又是如何实现的呢?这里是机器学习系列第八篇,带你揭开它们神秘的面纱。 ” 机器学习系列(8):人脸识别原理及Python实现 人脸验证&识别: 验证和识别 oneshot学习 siamese网络 Triplet损失 面部验证与二分类 Python实现: 见文章内容 申明 本文由LSa...

LSayhi的博客 6139

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

机器学习系列(9):十一分有趣的神经风格转换--原理、公式推导及python实现

“ 神经网络我知道,风格转换又是什么?时欢乐,时忧郁?这里是机器学习系列第九篇,带你走进Neural style transfer,高级ps艺术了解一下(干货风哦). 机器学习系列(9) 神经风格转换–原理解释、公式推导及Python实现 风格转换 特征可视化 转置卷积 代价函数 内容代价函数 风格代价函数 总结 Python实现: 见文章内容 申明 本文原理...

LSayhi的博客 826

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Catalogue/update in 2018.09.10

Welcome! Name: Xiangguo Sun E-mail: sunxiangguodut@qq.com Welcome to my blog column: ...

相国大人 1675

【机器学习】万字长文:深入剖析推荐系统核心算法 (协同过滤/内容/SVD) 与Python实战

在信息爆炸的时代,我们每天都面临着海量的选择:看什么电影、听什么音乐、买什么商品、读什么新闻?推荐系统(Recommender System)应运而生,它像一位懂你的智能助手,通过分析你的历史行为和偏好,为你精准推送可能感兴趣的内容,极大地提升了用户体验和平台效率。从电商平台的“猜你喜欢”到视频网站的个性化推送,推荐系统已无处不在。本篇文章是【机器学习】系列专栏的第 26 篇,我们将深入探索推荐系统的核心——构建个性化推荐引擎的算法。

吴师兄大模型的博客 1万+

机器学习的一些参考文章

Machine Learning 4 - Naive Bayes朴素贝叶斯算法 卷积神经网络CNN浅析 机器学习中的算法(2)-支持向量机(SVM)基础 Python机器学习基础目录大纲 KKT条件介绍 “我爱智能”原创性博客索引 【入门】深入浅出,一篇超棒的机器学习入门文章 【超级重磅】626篇!机器学习&深度学习资料汇总(一) 【超级重磅】626篇!机器学习&深度学习资料汇总(二) 【超级重磅】

hyl999的专栏 1049

Python解析CSV - 通过Pandas解析逻辑分析仪导出的CSV数据

Python通过Pandas解析逻辑分析仪导出的CSV数据脚本要解决的问题Python代码备注: 脚本要解决的问题 为方便分析逻辑分析仪导出的csv数据, 简单做了个转换工具。。。 逻辑分析仪导出的csv数据是根据时间戳逐行排序,很难分析一个完整的帧数据, 例如下图: 下图逻辑分析仪工具导出的csv数据有3w多行,没办法直接通过该文件对数据帧进行分析,而且重点是。。。看时间长了太费眼! 所以通过...

HowieXue 薛永浩的博客 1万+

机器学习算法与Python学习

机器学习算法与Python学习 机器学习系列阶段总结! 1. 机器学习(1)之入门概念 2. 机器学习(2)之过拟合与欠拟合 3. 机器学习(3)之最大似然估计 4. 机器学习(4)之线性判别式(附Python源码) 5. 机器学习(5)之决策树ID3及Python实现 6. 机器学习(6)之朴素贝叶斯NB及实例 7. 机器学习(7)之感知机python实现 8. 机器学习(8)...

u014033218的专栏 1550

机器学习汇总,珍藏版!

机器学习系列阶段总结!1. 机器学习(1)之入门概念2. 机器学习(2)之过拟合与欠拟合3. 机器学习(3)之最大似然估计4. 机器学习(4)之线性判别式(附Python源码)5. 机器学习(5)之决策树ID3及Python实现6. 机器学习(6)之朴素贝叶斯NB及实例7. 机器学习(7)之感知机python实现8. 机器学习(8)之范数正则与Lasso详解9. 机器学习(9)之ID3算法详解及p

机器学习算法与Python学习 2832

【漫话机器学习系列】137.随机搜索(Randomized Search)

在机器学习和深度学习的模型训练过程中,超参数调优(Hyperparameter Tuning)是至关重要的一环。随机搜索(Randomized Search)是一种高效的超参数优化方法,它通过在候选超参数的数值分布(如正态分布、均匀分布等)中随机选择超参数组合,从而找到最优的超参数配置。

IT古董 1485

python学习

本书可以说是最好的零基础入门机器学习的书籍,该书包括机器学习快速上手路径、数学和Python 基础知识、机器学习基础算法(线性回归和逻辑回归)、深度神经网络、卷积神经网络、循环神经网络、经典算法、集成学习、无监督和半监督等非监督学习类型、强化学习实战等内容,以及相关实战案例。该书内容比较全面,涉及几何摄像模型、光照和着色、色彩、线性滤波、局部图像特征、纹理、立体相对、运动结构、聚类分割、组合与模型拟合、追踪、配准、平滑表面与骨架、距离数据、图像分类、对象检测与识别、基于图像的建模与渲染、人形研究、

nyknbnb的博客 1141

向毕业妥协系列之深度学习笔记(一)浅层神经网络

目录一.神经网络杂记二.计算图(反向传播求导的几个实例)1.普通式子反向传播求导2.逻辑回归中的梯度下降3.m个样本的梯度下降三.向量化四.python广播五.激活函数六.随机初始化深度学习系列的文章也可以结合下面的笔记来看:深度学习笔记-目录这个系列的学习和机器学习系列的课程有很多重复的部分,尤其是神经网络的一些基础知识,以及什么回归等知识,所以很多东西如果我机器学习的文章当中有的话,我就略过了或者简单提一嘴。(可能有很多不同的内容,但是大部分已经在机器学习学过了,故而将本节取名为杂记)可以看一下我的机器

长夜漫漫,无心睡眠 755
上一篇: 对这篇博文(【深度学习】神经网络中的权重初始化:Why and How)的讨论
下一篇: 机器学习系列(6):ResNet、Inception原理及ResNet的python实现
LSayhi
博客等级 码龄9年 105粉丝 36原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值