卷积层是如何学习到图像特征的?

你好啊,我是董董灿。

想搞懂这个问题,需要先了解我们所说的特征指的是什么?然后再了解卷积核是如何学到的特征。

我们一步步来。

1、我们先来理解图像的特征

对于一张原始图像而言,说原始图像是相对于经过卷积处理而言的。

对于卷积处理后的输出的图像,一般我们叫它特征图。而我这里说的“原始图像”指的是神经网络原始输入的图像。

这里找了一张图像。请你仔细观察。

你会发现图像中有一些明显的“意象”,比如红色的帐篷、美女黑色的长发、黄色的火焰。这些描述都是针对某一“物体”进行的描述。

比如,我们可以说美女的长发是“黑色”,那么这里的黑色就是长发的一种特征,相对应的,长发还可以有“红色”、“灰色”等等特征。

这种特征我们很常见,通常可以称之为“颜色特征”。比如帐篷的“红色特征”、火焰的“黄色特征”。

除了常见的颜色特征,还有很多其他更符合我们人类理解的特征:比如形状特征、轮廓特征等等。

形状特征就比如上图帐篷的“三角形”特征。

所以,你可以看到,特征可以认为是“一个物体”在某方面的属性值。

对于我们人类而言,某个物体的特征一般是需要我们人类可以用语言描述出来的,比如美女的特征一般有:黑色的长发、苗条的身材、姣好的面容等等。

而对于AI(神经网络模型)而言,某个物体的特征是AI自己可以认识而我们人类可能无法分辨的特征。

因此,你会看到很多时候,卷积输出的特征图有几百(甚至几千)个通道,每个通道代表了这个卷积经过卷积运算学习到的一个特征。

类比于原始输入的 RGB 图像仅有 3 个颜色通道,你可以粗略的认为原始输入图像仅有 3 个最显著的颜色特征(每个特征通道仅有一个颜色分量),而经过卷积计算之后,输出的通道数则有成百上千个,此时卷积学到了成百上千个特征。

好了,了解了什么是特征以及AI学到的特征之后,接下来看看题主重点问到的问题:卷积核是如何学到特征的?


2、卷积计算是如何学到特征的

这里我默认你是知道卷积的运算逻辑的,也默认你懂一些反向传播来更新卷积核参数的知识。

对于卷积核而言,其中的数值在训练过程中一般是初始值,在训练中经过 N 轮次(N 非常大,取决于你的任务和训练数据集)的迭代训练之后,会逐渐收敛到一个稳定的数值。

收敛之后的卷积核参数便可以被冻结下来,模型便可以拿去进行推理。以图像识别任务为例,如果你的模型训练完成,那么你就可以拿着训练好的模型(包括里面所有卷积层中的冻结的卷积核参数)去识别一张图中画的物体是狗还是猫了。

关键问题有两点:

  • 模型在反向传播时更新卷积核的参数,使卷积运算可以学到特征;
  • 模型在正向传播时,根据学到的特征尝试去预测目标。

反向传播无需纠结太多,精髓在于梯度,而梯度就是用来更新卷积核的,这个梯度你可以理解为某次前向传播过程中,利用已经学到的“特征”尝试去预测目标时得到的结果与真正目标之间的差距,然后把这个差距反向告诉卷积核,使其朝着差距更小的方向更新。

这样经过 N 轮次的迭代,卷积核学到的特征就非常接近真实图像中已有的特征了,虽然这些特征我们人类可能无法解释清楚,但是AI模型是知道的。

那我们再看看,在正向传播的时候,卷积做了什么事情。


3、卷积做了什么事情

卷积的核心计算逻辑是内积运算,有时也可以称之为是在特征(通道)维度的乘累加运算。

这个运算事实上和矩阵乘法是类似的。

因此,我将带你通过一个简单的内积运算,来探究一下卷积(也可以同样去理解矩阵乘法)在计算过程中做了什么事情。

这个例子我在很多场合都给一些朋友讲过,我认为对理解乘累加运算非常有用。

假设,你是一个鸡尾酒调酒师,家里储存了很多鸡尾酒的原料,有金酒、利口酒、柠檬汁和可乐等等。

今天家里来了 3 位客人,他们分别喜欢喝“自由古巴”、“长岛冰茶”以及“龙舌兰日出”这 3 款鸡尾酒,并向你下了单。

希望你给他们调配出来各自喜欢的鸡尾酒。

巧的是,这 3 款鸡尾酒的原料都是金酒、利口酒、柠檬汁和可乐。

你作为一个调酒师,分分钟就把客人的爱好的鸡尾酒给调出来了。

你是怎么做的呢?你知道配方:

  • 自由古巴: 20%金酒 + 45% 利口酒 + 10%柠檬汁 + 25%可乐
  • 长岛冰茶: 60%金酒+ 30%利口酒 + 5% 柠檬汁 + 5% 可乐
  • 龙舌兰日出:30%金酒 + 10%利口酒 + 30%柠檬汁 + 30%可乐

你在调配鸡尾酒的过程中,是按照这个配方来调配的。

这里的原料,比如利口酒和可乐,就是输入资源,配比(比如可乐的 25% )就是赋予该资源的权重。

将相同的原料按照不同的配比混合起来,就得到了不同口味的鸡尾酒。

这种做法,可以抽象一下,写成一个公式:

  • 自由古巴 = 0.2 x 金酒 + 0.45 x 利口酒 + 0.1 x 柠檬汁 + 0.25 x 可乐
  • 长岛冰茶 = 0.6 x 金酒 + 0.3 x 利口酒 + 0.05 x 柠檬汁 + 0.05 x 可乐
  • 龙舌兰日出 = 0.3 x 金酒 + 0.1 x 利口酒 + 0.3 x 柠檬汁 + 0.3 x 可乐

我们知道矩阵乘法的规则是,,第一行乘以第二列得到第二个值,...,以此类推

上面这种连乘的操作,就可以用矩阵乘法来表示。

左矩阵是一行四列,代表原料。右矩阵是四行三列,每一列代表对应原料的配比。按照矩阵乘法的规则,他们的结果应该是一个一行三列的矩阵,分别代表调配出来的三种鸡尾酒。

矩阵乘法,通过相乘累加的操作,实际上是对资源(鸡尾酒的原料)的整合和再创(创造出了新的口味,如自由古巴)。

如果把输入资源(左侧的一行四列的矩阵)看作是一些特征呢?

那不就相当于对这些特征进行了进一步的融合,得到了新的特征吗?

因此,你可以看到,如果你把左侧输入资源看做原始图像或者卷积的输入特征图,乘号右侧原料的配比看做卷积核中的权值参数,那么等号右侧的结果不就是对输入特征图进行了一次融合操作吗?

可能原来有 N 个特征,经过卷积的运算后,将这 N 个特征融合成了 M 个特征(M 可能大于 N,小于N,等于N)。

因此,卷积的运算,是对卷积输入特征的融合,这是前向传播发生的事情。

那么我们将前向的特征融合和反向传播结合起来,你是不是可以更加清晰的知道卷积是如何学到特征的了呢?

总结一下就是——

前向不断地去融合出新的特征(就像炼丹一样,不断地练出新的丹药),反向传播不断的再去指导你改进你的炼丹水平,直到整个训练过程收敛,你的炼丹技术也就水到渠成了,而这个过程中,AI 模型也就学到了它想学到的东西(特征),尽管这些特征我们人类并不知道代表了什么。


🍊 专栏:计算机视觉入门与调优

🍊 专栏:Transformer 通关秘籍

🍓 计算机视觉入门1对1全程

🍓 从零手写大模型1对1全程

如果你想学习 AI ,欢迎来添加我的微信 (vx: ddcsggcs),会有很多好玩的AI技术分享,可以咨询、也可以围观朋友圈呀~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1556192.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

VL53L4CD液位监测(2)----液位检测

VL53L4CD液位监测.2--液位检测 概述视频教学样品申请完整代码下载硬件准备STSW-IMG039容器特性包含必要的头文件变量定义测距函数 Ranging()液位误差补偿函数 Liquidlevelmeasureerrorcomponsate()数据轮询函数 get_data_by_polling()演示 概述 液位检测在工业自动化、环境监测…

十大时间序列预测模型

目录 1. 自回归模型 原理 核心公式 推导过程: 完整案例 2. 移动平均模型 原理 核心公式 推导过程: 完整案例 3. 自回归移动平均模型 原理 核心公式 推导过程: 完整案例 4. 自回归积分移动平均模型 原理 核心公式 推导过程 完整案例 5. 季节性自回归积分…

LeetCode讲解篇之695. 岛屿的最大面积

文章目录 题目描述题解思路题解代码题目链接 题目描述 题解思路 我们遍历二维矩阵,如果当前格子的元素为1进行深度优先搜索,将搜索过的格子置为0,防止重复访问,然后对继续深度优先搜索上下左右中为1的格子 题解代码 func maxAr…

【通信协议】一文学会异步、同步、串行、并行、单工、半双工、全双工(一)

通信方式详解:异步、同步、串行、并行、单工、半双工、全双工 引言一、通信方式分类概述二、串行通信与并行通信串行通信 (Serial Communication)并行通信 (Parallel Communication)串行与并行通信对比表 三、全双工、半双工、单工通信单工通信 (Simplex Communicat…

LLM+知识图谱新工具! iText2KG:使用大型语言模型构建增量知识图谱

iText2KG是一个基于大型语言模型的增量知识图谱构建工具,通过从文本文档中提取实体和关系来逐步构建知识图谱。该工具具有零样本学习能力,能够在无需特定训练的情况下,在多个领域中进行知识提取。它包括文档提炼、实体提取和关系提取模块&…

最新版IntelliJ IDEA 2024.2.3 创建SpringBoot项目(包含各种依赖的选择和功能)

创建SpringBoot项目 1 . 打开IDEA 选择新建项目 2. 基础项目创建 在顶端几个选项可以选择创建基本的java项目 填写项目名称,文件位置,选择构建工具 3. 下方选择springboot 选择构建的方式 三种方式虽然不同但是,基本功能都一致, Gradle-Groovy 是指使用 Groovy 语言编写…

Redis安装RedisBloom插件

Redis安装RedisBloom插件 1. 下载RedisBloom2. 安装RedisBloom3. Redis 安装RedisBloom4. 验证是否安装成功5. 其他安装方法5.1 使用 Docker 安装 RedisBloom5.2 通过 RedisStack 安装 RedisBloom 是一个 Redis 模块,它提供了一种高效的方式来存储和检索大数据集中的…

(笔记)第三期书生·浦语大模型实战营(十一卷王场)–书生基础岛第5关---XTuner 微调个人小助手认知

学员闯关手册:https://aicarrier.feishu.cn/wiki/ZcgkwqteZi9s4ZkYr0Gcayg1n1g?open_in_browsertrue 课程视频:https://www.bilibili.com/video/BV1tz421B72y/ 课程文档: https://github.com/InternLM/Tutorial/tree/camp3/docs/L1/XTuner 关…

2024.9月29日~10月6日 SSM框架项目-《电信资费管理系统》

一、数据库介绍: 1、account:帐务信息表 2、admin_info:管理员信息表 3、admin_role:管理员角色信息表 4、cost:资费信息表 5、privilege_info:权限信息表 6、role_info:角色信息表 7、role_pri…

使用frp将树莓派穿透到外网

引言 frp官网 最近买了一块树莓派 zero 2w,想要它可以进行远程访问,所以想到了frp这个方案进行穿透,后期会使用树莓派搭建音乐服务器,本人手机内存有点小,xxxx云音乐太占空间,有兴趣的话可以关注后续。 …

数据结构与算法——Java实现 30.合并多个有序链表 小顶堆实现

后来我们都走了很久,远到提及往事时, 总会加上once upon a time —— 24.10.6 23. 合并 K 个升序链表 给你一个链表数组,每个链表都已经按升序排列。 请你将所有链表合并到一个升序链表中,返回合并后的链表。 示例 1&#xff1…

Maven安装使用

说明:Maven是Apache旗下的一个开源项目,是一款用于管理和构建java项目的工具。一般来说,它帮助我们管理依赖、构建项目。本文介绍在Windows系统下安装Maven。 下载&安装&验证 下载 首先,在Maven官网(https:…

C++模版SFIANE应用踩的一个小坑

一天一个C大佬同事&#xff0c;突然截图过来一段代码&#xff1a;这写的啥呀&#xff0c;啰里吧嗦的&#xff0c;这个构造函数模板参数T1感觉是多余的呀 template<class T> class TestClass { public:TestClass(){}//函数1template<class T1 T, std::enable_if_t<…

vSAN05:vSAN延伸集群简介与创建、资源要求与计算、高级功能配置、维护、故障处理

目录 vSAN延伸集群延伸集群创建延伸集群的建议网络配置vSAN延伸集群的端口见证主机的资源要求vSAN延伸集群中见证节点带宽占用vSAN延伸集群的允许故障数vSAN延伸集群不同配置下的空间占用 vSAN延伸集群的HA配置vSAN延伸集群的DRS配置vSAN存储策略以及虚拟机/主机策略的互操作vS…

十四、深入理解Mysql索引底层数据结构与算法

文章目录 一、索引的本质1、索引是帮助MySQL高效获取数据的排好序的数据结构2、索引的数据结构3、数据结构可视化网站 二、常见数据结构介绍1、B-Tree2、BTree&#xff08;B-Tree变种&#xff09;3、Hash结构 三、存储引擎的索引实现1、MyISAM存储引擎索引实现MyISAM索引文件和…

AI配音(声音克隆)

Fish Audio: Free Generative AI Text To Speech & Voice Cloning 【【AI配音】终于找到免费 & 小白友好的声音克隆软件了&#xff01;真人相似度98%!】https://www.bilibili.com/video/BV1MwbFeCE2X?vd_source3cc3c07b09206097d0d8b0aefdf07958 我终于找到总这3款免…

新机配置Win11

Win11跳联网 在连接网络的界面输入ShiftF10打开命令行&#xff0c;然后输入oobe\bypassnro然后会重启&#xff0c;在联网的界面就可以进行跳过了。 编码 在中国大陆Windows使用的编码是GBK编码 查看电脑系统版本 WinR输入winver即可 桌面图标 设置->个性化->主题…

【机器学习】深度学习、强化学习和深度强化学习?

深度学习、强化学习和深度强化学习是机器学习的三个重要子领域。它们有着各自独特的应用场景和研究目标&#xff0c;虽然都属于机器学习的范畴&#xff0c;但各自的实现方式和侧重点有所不同。 1. 深度学习&#xff08;Deep Learning&#xff09; 深度学习是一种基于神经网络的…

Vite多环境配置与打包:

环境变量必须以VITE开头 1.VITE_BASE_API&#xff1a; 在开发环境中设置为 /dev-api&#xff0c;这是一个本地 mock 地址&#xff0c;通常用于模拟后端接口。 2.VITE_ENABLE_ERUDA&#xff1a; 设置为 "true"&#xff0c;表示启用调试工具&#xff0c;通常是为了…