5分钟入门卷积算法

news2024/12/27 12:59:05

大家好啊,我是董董灿。

深度学习算法中,尤其是计算机视觉,卷积是无论如何都绕不过去的槛。

初学者看到这个算法后,很多是知其然不知其所以然,甚至不知道这个算法是做什么的,或者很疑惑,为什么在处理图像任务的神经网络中需要卷积算法?

图片

1、 为什么需要卷积

在说卷积之前,先说一说一个神经网络(或者叫一个AI模型),是如何完成一张图片的推理的。

你肯定听说过大名鼎鼎的阿尔法狗大战柯洁的故事,但是,你有没有想过一个问题:阿尔法狗学会了下棋,但是它下棋的记忆到什么样的?存在什么地方呢?

高中生物老师教过我们,人脑中有大量的脑神经元。每个脑神经元都可以看做是一个小的记忆体,神经元之间通过树突连接起来,整个大脑的神经元,可以说是一张十分复杂的网络。

人脑处理信息,就是利用这个复杂的网络处理信息,并最终得到一个结果。通过神经元网络,我们才能知道,眼睛看到的是一只猫,还是是一只狗。

稍微简化一下大脑神经元的复杂结构成如下的网络。

图片

每个黑点代表一个神经元脑细胞,每个神经元都有自己负责记忆的东西。

当我们看到一张画着猫的图片的时候,图片信息通过视神经传给大脑神经元,于是,信息到达了最左边一排竖着的黑点(神经元)。

神经元的激活

假如一个黑点(神经元)之前见过猫,那么这个黑点就会把信息往后传,此时神经元处于激活状态。

假如一个黑点从来没见过猫,那么这个黑点(神经元)就啥也不知道,啥也不做,此时神经元处于静止状态。

一张画着猫的图片的信息,就这样一层一层地通过“见过猫且确信它是一只猫的”神经元往后传递,直到在最后输出一个结果。

这是一只猫。

图片

这个过程叫做大脑的推理

整个推理过程你应该注意到了一件事,所有的黑点都可能是有记忆的,只不过记得东西各有不同,有的认识猫,有的认识狗,就像下面这样。

图片

所有认识猫的神经元都会让信息通过,其他不认识猫的神经元都静止了。但是只要信息能传到最后,人脑最终就可以得出一个结论,这就是一只猫。

那神经元的这些记忆是怎么获取的呢?

训练,人们在日常生活中不断地训练大脑,时刻观察着周围的事物,见得多了,就会了。

训练获取记忆

人工智能计算机是怎么模拟这个记忆过程呢?

答案很简单:计算机只会计算,那就让它计算好了。

如果某个黑点认识猫,有什么办法可以把“这是一只猫”这一信息传递到后面呢?乘以1,任何数乘以1都是它自己,一只猫乘以1也还是他自己。

如果某个黑点压根没见过猫,有什么办法可以什么都不做呢?乘以0,任何数乘以0都是0,信息也就没了,一只猫乘以零,猫也就没了。

于是,在深度学习的网络中,每个黑点(神经元)都有一个与之对应的数字(实际的网络中,不是0或者1这样简单的数字,而是一些复杂的数字,这里仅仅是为了说明),这些数字,在深度学习中,我们称之为权值

神经元通过权值的加权计算来判断是否让某一信息经过神经元,到达下一层。

权值乘以输入的信息(猫),然后经过激活函数去激活(类似于人脑神经元的激活)。

如果能成功激活,那么信息就往下传。

如果没有成功激活,信息就在此丢失。

当然神经网络中的权值不是简单的0或1,所以经过激活函数计算出来的只是一个概率值,也就是说黑点(神经元)觉得它是一只猫的概率。最终如果得到95%的概率觉的它是一只猫,那基本就是一只猫。

人脑看多了,就认识猫了,同样AI被训练的“看”多了,也会逐渐“认识”猫了。

AI的权值就是这么被训练出来的!

说到这,就说会今天的主角——卷积算法之所以重要,就是因为这个算法存在一个天然的记忆体,或者是权值矩阵,那就是卷积核。

2、卷积算法

深度学习中的卷积算法,模拟的就是人眼看物体的过程。

图片

上图是深度学习中卷积的示意图,还记得之前说过的么,图片是由像素组成的(查看要学计算机视觉,先了解图像和像素)。

示意图下方的 4x4 的像素方格就是卷积算法需要处理的图片(类比于人眼观看的图片)。

示意图上方的 2x2 的像素方格就是卷积算法的输出(类比于人眼看完一张图片后的结果信息)。

4x4的方格上移动的灰色阴影,那个3x3的像素方格就是卷积核,可以把它理解为人眼此时聚焦看到的区域(称之为感受野,人眼的视野),只不过,这个示意图中每次看到的都是一个3x3的像素方格!

而卷积过程,就是用一个3x3的卷积核,去逐步扫描图片:横着扫完竖着扫,每扫一次,就将逐个像素点的值相乘然后加一起,得到一个输出,就像下面这样:

图片

再换个更直观的角度看一眼。

图片

卷积,就是这么简单的过程。

我们可以通过调整卷积核的大小,比如把上图3x3的卷积核扩大到5x5,来控制 “人眼” 看到的图片范围,从而获取到不同尺度下的图片信息。

比如在一些检测车道线的神经网络中,由于车道线是长实线,车道线的存在趋近于长方形,因此在这类神经网络中,很多卷积核被设计成1x5或1x7的卷积核,用来更好的识别车道线的形状。

当然,在不同图像处理任务中,会设计不同大小的卷积核,以适应不同的场景序需求,但万变不离其宗,卷积的计算,就是一些模拟的人眼看物体扫描像素点的过程。

说到这,大概对卷积这一算法有一个初步印象了吧。

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

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

相关文章

Mysql数据库 3.SQL.DDL语句

DDL数据库基本操作 查询所有数据库 show databases; 创建数据库 create database[if not exists]数据库名[default charset 字符集][collate 排序规则] 判断如果已经存在就加入[if not exists] 删除数据库 drop database [if exists] 数据库名 使用数据库 use 数据库名;…

STM32CubeMX学习笔记-USB接口使用(HID自定义设备)

STM32CubeMX学习笔记-USB接口使用(HID自定义设备) 一、USB简介二、新建工程三、USB3.1 参数配置3.2 引脚配置3.3 配置时钟3.4 USB Device 四、生成代码五、修改报告描述符六、修改端点大小七、修改发送缓冲区大小和报告描述符大小八、添加串口打印九、增…

VC6 WIN32,Dialog为主窗口编程

VC6是Microsoft非常经典的开发环境,尤其是Windows API方式开发,自从Quick C for win以来基本保持着同样的风格和API,在它上面做习练很不错。下面是习练完成的界面,它是在自动创建的WIN32 application模板下,增加一个Di…

微服务的初步使用

环境说明 jdk1.8 maven3.6.3 mysql8 idea2022 spring cloud2022.0.8 微服务案例的搭建 新建父工程 打开IDEA,File->New ->Project,填写Name(工程名称)和Location(工程存储位置),选…

git提交代码实际操作

1.仓库的代码 2.克隆代码下存在的分支 git clobe https://gitee.com/sadsadasad/big-event-11.git 3.查看当下存在的分支 git branch -a 在很多情况下,我们是要围绕着dev分支进行开发,所以我们可以在开发之前问明白围绕那个分支进行开发。 4.直接拉去dev分支代码 5.如果没在…

LabVIEW开发教学实验室自动化INL和DNL测试系统

LabVIEW开发教学实验室自动化INL和DNL测试系统 如今,几乎所有的测量仪器都是基于微处理器的设备。模拟输入量在进行数字处理之前被转换为数字量。对于参加电气和电子测量课程的学生来说,了解ADC以及如何欣赏其性能至关重要。ADC的不确定性可以根据其传输…

2.3 Node2vec(图神经网络笔记)

BFS:广度优先 DFS:深度优先 描述,当前已从 t 节点到达 V 节点,可以选择 x1、x2、x3、t任意一个节点 dtx 0 ,从t - v - t ,回到原点 dtx 1 ,还是说从t出发,离t节点距离为1,有z、x…

beego-简单项目写法--后续放到git上

Beego案例-新闻发布系统 1.注册 后台代码和昨天案例代码一致。,所以这里面只写一个注册的业务流程图。 **业务流程图 ** 2.登陆 业务流程图 登陆和注册业务和我们昨天登陆和注册基本一样,所以就不再重复写这个代码 但是我们遇到的问题是如何做代码的迁移&…

Python 无废话-基础知识流程控制语句

If 流程控制语句 最常见的控制流语句是if 语句。在自然语言中,if 语句念起来可能是:“如果条件为真,执行子句中的代码。”在Python中的条件语句用于根据特定条件执行不同的代码块条件。 用代码描述如下: cost 60000 if cost &…

数据结构——红黑树(详解性质+C++模拟)

文章目录 前言红黑树的概念红黑树的性质红黑树结点的定义红黑树的插入操作1. **按照二叉搜索树的规则插入新结点**2. 检测新节点插入后,红黑树的性质是否遭到破坏 红黑树的验证总结 前言 本篇博客将为大家重点讲述红黑树这一数据结构,讲解其实现的方式即…

[NSSRound#1 Basic]sql_by_sql - 二次注入+布尔盲注||sqlmap

进入注册界面后   假设sql:update user set password ‘’ where username ‘’ and password ‘’     此时如果我们注册的用户名是admin’–、admin’#、admin’–的话   update user set password ‘123’ where username ‘admin’#’ and passwor…

[NISACTF 2022]hardsql - quine注入

题目描述:$password$_POST[passwd]; $sql"SELECT passwd FROM users WHERE usernamebilala and passwd$password;"; 从描述看出是quine注入,且用户名要是bilala 1、经测试,参数为:username&passwd&login登录&a…

重置系统后出现 press F12 to clear the tpm press Esc to reject this chan

案例分享: 外星人M15 R7重置系统后出现下图问题,暂时不能下一步。 原文如下: A configuration change was requested to Clear this computers TPM (Trusted platform module) warning:clearing erases information stored on the tpm.you …

正向代理和反向代理

正向代理和反向代理 1.正向代理和反向代理,squid,Nginx2.正向代理主要作用:3.反向代理主要作用:4.透明代理 1.正向代理和反向代理,squid,Nginx 1.用途不同:正向代理的典型用途是为在防火墙内的…

深度学习-卷积神经网络-AlexNET

文章目录 前言1.不同卷积神经网络模型的精度2.不同神经网络概述3.卷积神经网络-单通道4.卷积神经网络-多通道5.池化层6.全连接层7.网络架构8.Relu激活函数9.双GPU10.单GPU模型 1.LeNet-52.AlexNet1.架构2.局部响应归一化(VGG中取消了)3.重叠/不重叠池化4…

一文解释mapState的来龙去脉

mapState Vuex 提供的辅助函数之一,将 store 中的状态映射到组件的计算属性中,使得在组件中可以轻松地访问 Vuex store 中的状态值 MapState(映射状态) 在我们的 Count.vue 组件中,可以使用 mapState 来更简洁地获取 count 的状态值 首先&…

毕设-原创医疗预约挂号平台分享

医疗预约挂号平台 不是尚医通项目,先看项目质量(有源码论文) 项目链接:医疗预约挂号平台git地址 演示视频:医疗预约挂号平台 功能结构图 登录注册模块:该模块具体分为登录和注册两个功能,这些…

Android 开发错误集合

🔥 开发错误集合一 🔥 Caused by: java.lang.ClassNotFoundException: Didnt find class "com.mask.app.ui.LoginRegisterActivity" on path: DexPathList[[zip file "/data/app/~~NMvHVhj8V6-HwGbh2amXDA/com.mask.app-PWbg4xIlETQ3eVY…

解密京东面试:如何应对Redis缓存穿透?

亲爱的小伙伴们,大家好!欢迎来到小米的微信公众号,今天我们要探讨一个在面试中可能会遇到的热门话题——Redis缓存穿透以及如何解决它。这个话题对于那些渴望进入技术领域的小伙伴们来说,可是必备的哦! 认识Redis缓存…

javaWeb蛋糕商城(前后台)

一、项目功能 1.前台功能 商品基本展示,包括推荐商品展示和类型商品展示.推荐商品包括条幅推荐,热销推荐和新品推荐.按照商品类型展示商品.商品详细信息展示.商品加入购物车.修改购物车内商品信息,例如数量等.用户登录.用户注册.修改个人信息,包括密码和收获信息.购物车付款.…