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

卷积神经网络 CNN 系列总结(一)---基础知识点

卷积操作的起源

卷积是微积分里的一个术语,指卷积运算。在图像处理中,卷积和滤波有很多应用。下图是卷积操作,Input是输入图片的像素矩阵,kernel是卷积核,选取一个滑动窗口,大小和卷积核一样,滑动窗口和卷积核进行点乘,得到的和作为输出像素值。CNN网络里的卷积核类似图像处理的卷积核(滤波器),图像处理中的滤波器是事先定义好的,每个滤波器都有特定的功能(图像锐化、检测边缘等)。CNN网络利用神经网络的反向传播功能,通过损失函数来更新滤波器的值,使得滤波器能区分不同输入图像的共同点和不同点,对输入图片进行分类。

卷积层(Convolutional Layer)

举例来说,CNN网络在前向传播的时候,让每个滤波器(卷积核)都在输入数据的宽度和高度上滑动(更精确地说是卷积),然后计算整个滤波器和输入数据任一处的内积。当滤波器沿着输入数据的宽度和高度滑过后,滤波器与滑动窗口进行点乘,点乘结果经过激活函数(常用Relu)之后,会生成一个2维的激活图(activation map),激活图给出了在每个空间位置处滤波器的反应。网络会让滤波器学习到当它看到某些类型的视觉特征时就激活,具体的视觉特征可能是某些方位上的边界,或者在第一层上某些颜色的斑点,甚至可以是网络更高层上的蜂巢状或者车轮状图案。
卷积核直观上可以理解为具有学习功能的特征提取工具,提取目标物体的突出特征。

一般输入图像表示为(w x h x c)的矩阵,w和h表示输入图像的宽和高,c表示输入图像维度,如果是灰度图像,则c=1,如果是RGB图像,则c=3。在CNN网络里,输入图像一般有两种处理方式,一种是全转换为RGB图像,如果是灰度图像,则将二维矩阵(w x h)复制3次,变成(w x h x 3);另一种是全转换为二维的灰度图像,像素值在0~255之间。

卷积层参数

  • 步长(stride):卷积核(滤波器)在输入数据上进行滑动时的间隔像素。如果滤波器的步长大于1,会使输出数据的尺寸小于输入数据。
  • 零填充(zero-padding):用0填充输入数据的边缘,0填充可以使输出数据和输入数据尺寸相同。

  • 感受野(receptive field):卷积核的空间尺寸,一般为3x3,5x5,7x7;感受野的尺寸(宽和高)是超参数,由用户自己定义,但是深度必须和输入数据的深度相等。注意:我们对待空间维度(宽和高)与深度维度是不同的:连接在空间(宽高)上是局部的,但是在深度上总是和输入数据的深度一致。
    • 例1:假设输入数据体尺寸为[32x32x3](比如CIFAR-10的RGB图像),如果感受野(或滤波器尺寸)是5x5,那么卷积层中的每个神经元会有输入数据体中[5x5x3]区域的权重,共5x5x3=75个权重(还要加一个偏差参数)。注意这个连接在深度维度上的大小必须为3,和输入数据体的深度一致。
    • 例2:假设输入数据体的尺寸是[16x16x20],感受野尺寸是3x3,那么卷积层中每个神经元和输入数据体就有3x3x20=180个连接。再次提示:在空间上连接是局部的(3x3),但是在深度上是和输入数据体一致的(20)。
  • 输出通道数(channel):通道(channel)对输入数据是指数据的深度,比如RBG图像,channel是3;对输出数据是指卷积核的数量(不是深度,卷积核的深度与输入数据的深度保持一致),如下图,有 6×6×3 的图片样本,使用 3x3 尺寸的卷积核(filter)进行卷积操作,那么输入图片的 channels 为 3,而卷积核的深度为3(与输入图片的深度保持一致),所以卷积核是 3x3x3,如果只有1个卷积核,步长为1,不进行零填充。那么每
http://www.dtcms.com/a/124961.html

相关文章:

  • ubuntu22.04 安装-ODBC驱动-SQLserver
  • vue中根据html动态渲染内容2.0
  • 无人设备遥控器之数据分析与处理篇
  • 一周学会Pandas2 Python数据处理与分析-Pandas2数据读取
  • ------------------V2024-2信息收集完结------------------
  • Linux 入门五:Makefile—— 从手动编译到工程自动化的蜕变
  • 使用开源项目蜂信物联/FastBee前端安装失败
  • Python进阶编程总结
  • vue项目proxy代理的方式
  • DeepSeek与搜索引擎:AI生成内容如何突破“语义天花板”
  • 【前端】VUE前端利用iframe嵌入帆软报表
  • 【Python算法】基础语法、算法技巧模板、二分、DFS与BFS、并查集
  • V4L2杂谈
  • 【U-Boot】解决U-Boot的“Unknown command ‘help‘ - try ‘help‘”问题
  • 等保十问/等保相关基本问题解答
  • git日志规范
  • FastAPI + Vue3 对 SSE 通知机制的实现与进阶思考
  • Python----概率论与统计(贝叶斯,朴素贝叶斯 )
  • 青少年编程与数学 02-016 Python数据结构与算法 05课题、哈希表
  • 如何在Linux系统Docker部署Dashy并远程访问内网服务界面
  • ROS云课三分钟-差动移动机器人巡逻报告如何撰写-中等报告
  • 使用pip3安装PyTorch与PyG,实现NVIDIA CUDA GPU加速
  • LeetCode Hot100 刷题笔记(1)—— 哈希、双指针、滑动窗口
  • <component>用于挂载切换几个不同的组件
  • mobaxterm连接ssh提示sshpass: command not found
  • vmware、centos: 快照、redis集群克隆、虚拟机克隆后无法上网
  • 最简rnn_lstm模型python源码
  • 京存双活磁盘阵列助力国家交通指挥中心
  • Excel流式多线程带进度条功能的导入框架
  • 当开源邂逅AI,公益长出翅膀 | 回顾3.30 上海「开源×AI 赋能公益」Meetup