当前位置: 首页 > news >正文

什么是 CNN? 卷积神经网络? 怎么用 CNN 进行分类?(1)

先看卷积是啥,url: https://www.bilibili.com/video/BV1JX4y1K7Dr/?spm_id_from=333.337.search-card.all.click&vd_source=7a1a0bc74158c6993c7355c5490fc600

下面这个式子就是卷积
在这里插入图片描述
看完了,感觉似懂非懂

下一个参考视频:https://www.youtube.com/watch?v=E5Z7FQp7AQQ&list=PLuhqtP7jdD8CD6rOWy20INGM44kULvrHu

视频1:简单介绍卷积神经网络的意义,以及它的大概原理

先讲一个简单神经网络在图像识别领域里缺点

在这里插入图片描述
如上图,一个 100 * 1000 的 RGB 图像,这里一共需要 1000 * 1000 * 3 = 三百万 个输入神经元

随后,它的第一个隐藏层包含 1000 个神经元。这样来看,输入层和第一个隐藏层之间的边(连接)一共有 三百万 * 1000 = 三十亿

这是一个非常大的数字,如果我们要去训练这样的一个 权重矩阵,将会耗费巨大的时间

此外,过量的参数和过大的权重矩阵通常也意味着 过拟合

这就是为什么需要卷积神经网络,它在图像识别和视频识别领域要远强于简单的神经网络

卷积神经网络的思想如下:
使用 filters(滑动窗口) 去提取图像中的特征。
图像有一个特性,就是它会有边、形状、颜色。
CNN 的 filters 的任务就是检测图像里的上述特征,如下图

在这里插入图片描述

上图使用两个filter 去提取图像特征,分别是提取水平边 和 垂直边。filter(滑动窗口)的大小仅仅为 3* 3 = 9 像素

卷积神经网络中的 单层神经元 会使用大量这样的 filters

这些 filters 可能会检测我们图像里的边,随后这些边传给 更深的隐藏层,这些隐藏层可能会检测出 人脸的局部特征。、

再更深层的神经网络则可能会检测出整张人脸。接着这些人脸特征可以和一个 label “人类” 联系起来,从而帮助我们检测到人类。

这里减少的开销:三十亿参数 -> 很少的参数 增加的开销:sliding window

视频2:CNN 中的卷积操作到底是什么?

在这里插入图片描述
如上图,卷积其实就是拿一个 3*3 的矩阵去乘以图像矩阵,具体请看视频 3:35

在这里插入图片描述
为什么卷积操作能够提取图像特征?如图所示,棕色的卷积矩阵可以提取灰度图中的 垂直边,具体请看 5:05

在这里插入图片描述
相应的,提取垂直边的是上面的卷积矩阵,提取水平边的是下面的卷积矩阵 (或者叫做 filter)

在这里插入图片描述
遇到 RGB 图怎么办呢?简单,我们也用一个 乘以3 的 filter (也就是一共 27 个值) 去做卷积,随后产出一个特征图

在这里插入图片描述

我们用多少个 filter 就会产出多少个 特征图。

这里提示一下,filter 里的值实际上就是 卷积神经网络 里的 参数,它们通常由训练得来。

视频3:卷积神经网络中的 padding ,为什么需要 padding?

之前介绍的 CNN 有两个限制。

限制1:经过卷积操作后,图像会变小,也就说经过了很多层卷积后,图像可能变得非常小,丢掉很多信息。如下图

在这里插入图片描述
限制2:角落的像素没有收到足够多的关注。如下图。
在这里插入图片描述
左上角的 pixel 在做卷积操作的时候只会参与一次,而中心的 pixel 则会参与多次

解决方案就是给图像加上 padding,我们可以加一层 padding,也可以加两层三层,下图展示加一层 padding 的情形

在这里插入图片描述
从上图可以看到,加了 padding 之后,产出的图像是 6*6,尺寸和原图一样

此外,左上角的 pixel 也参与了多次卷积操作

在这里插入图片描述
如上图,一般来说,卷积操作有两种选择:

  1. Valid 。不使用任何 padding
  2. Same。卷积后产出的特征图,尺寸和原图一样。

一般而言,filter滑动窗口的边长会使用奇数,否则,padding 需要使用非对称 padding

http://www.lryc.cn/news/212565.html

相关文章:

  • java解决修改图片尺寸,压缩图片后出现背景变黑,图片字体模糊问题
  • jq/js检测鼠标指针移动离开页面
  • ICC2: 如何在显示GUI操作产生的命令
  • 内网渗透——macOS上搭建Web服务器
  • Centos下用nodejs实现一个简单的web服务器
  • 3.10每日一题(三角有理函数积分(三角函数加减乘除))
  • python练习(猜数字,99乘法表)
  • 正确部署Baichuan2(Ubuntu20.4) 步骤及可能出现的问题
  • docker 部署prometheus和grafana
  • 在本地模拟C/S,Socket套接字的使用
  • 香港科技大学广州|可持续能源与环境学域博士招生宣讲会—东南大学专场!!!(暨全额奖学金政策)
  • [Leetcode] 0108. 将有序数组转换为二叉搜索树
  • Pandas数据导入和导出:CSV、Excel、MySQL、JSON
  • 第16期 | GPTSecurity周报
  • 省钱兄短剧短视频视频滑动播放模块源码支持微信小程序h5安卓IOS
  • SDRAM学习笔记(MT48LC16M16A2,w9812g6kh)
  • ARM 学习笔记3 STM32G4 定时器相关资料整理
  • LeetCode 917 仅仅反转字母 简单
  • JAVA深化篇_25—— IO流章节全网最全总结(附详细思维导图)
  • 易基因:ChIP-seq等揭示BRWD3调控KDM5活性以维持H3K4甲基化水平的表观机制|PNAS
  • C++深度优先(DFS)算法的应用:收集所有金币可获得的最大积分
  • uniapp中APP端使用echarts用formatter设置y轴保留2位小数点不生效
  • 无糖茶饮三十年,从无人问津到人手一瓶
  • 面向Three.js开发者的3D自动纹理化开发包
  • 数字孪生技术与VR:创造数字未来
  • 系统架构设计师-第15章-面向服务架构设计理论与实践-软考学习笔记
  • 为什么我觉得Rust比C++复杂得多?
  • python sqlalchemy(ORM)- 03 增删改查
  • Flutter笔记:完全基于Flutter绘图技术绘制一个精美的Dash图标(上)
  • 学习gorm:彻底弄懂Find、Take、First和Last函数的区别