一文看懂卷积神经网络CNN的核心

在之前,我总结了关于计算机神经网络与梯度下降的核心,详见下文链接 :
一文看懂计算机神经网络与梯度下降
本文主要会对图像相关的机器学习中最为重要的网络,卷积神经网络作个人的理解分析。

1. 为什么要使用卷积神经网络

在讲述原理之前,我们先来解释为什么我们在图像及视频等等领域的机器学习中要使用CNN。我们都知道,使用多层感知器,有隐藏层的深度神经网络可以帮助我们解决分类,聚合,回归问题。但当我们的输入输出转变为高维度的数据,例如图片时,不可避免地要面临神经元过多,参数量过大的问题。假设我们使用一张720*480的图片作为输入,一张图片对应的参数量就已经达到了345600个,如果我们单纯地将数据压为一维向量并继续使用全连接的神经网络,那不可避免的会极大增加运算成本,降低模型的效率,显然是不科学的。同样的,对于图像而言,如果说像素点的灰度值或RGB值可以对应我们在一维数据中使用的数值,那么图像的空间性在我们将其转变为一维后实际上是被抛弃了,这会导致我们忽略了图像局部形态所包含的信息,使得一些非常轻微的平移旋转对结果产生翻天覆地的变化,这是我们不能容忍的。对于我们来说,两个图片中不同位置的物体所包含的含义应当是一致的,即只应当考虑图片的相对位置而非绝对位置。
在接下来的部分,我会着重阐述卷积神经网络的原理,其中包含一些个人的看法理解。

2. 图像处理中的卷积核

要想理解卷积神经网络的运作,首先必须理解图像处理中卷积的含义。需要注意的是,虽然卷积神经网络中有卷积二字,但是其实他与传统意义上数学定义的卷积是有区别的。更为准确的叫法应当称之为协相关神经网络,而非卷积神经网络。如下图所示,我们以一个常见的3*3的卷积核为例,目标像素点对应的值由其周围对应的原像素点和卷积核计算协相关得来。
在这里插入图片描述
由上图我们不难发现,经过卷积后的目标图像中的每一个像素点都对应了原图像中的局部特征,使用不同的卷积核,就可以从原图像中提取出不一样的局部特征了。计算目标图像的方式,是将卷积核在原图像上滑动,与各个部分的图像分别计算卷积直到遍历全部的原图像。
hn(i,j)=(hn−1∗ωk)(i,j)=∑n=−d−12d−12∑m=−d−12d−12hn−1(i+n,j+m)∗ω(n,m)h^n(i,j) = (h^{n-1}*\omega_k)(i,j) = \sum^{\frac{d-1}{2}}_{n=-\frac{d-1}{2}}\sum^{\frac{d-1}{2}}_{m=-\frac{d-1}{2}}h^{n-1}(i+n,j+m) * \omega(n,m)hn(i,j)=(hn1ωk)(i,j)=n=2d12d1m=2d12d1hn1(i+n,j+m)ω(n,m)
上式就是图像处理中使用卷积核进行卷积运算的数学定义,其中 hnh^nhn 是计算得出的目标图像,hn−1h^{n-1}hn1 对应原图像, ω\omegaω 就是用于计算的卷积核, ddd 是卷积核的大小。

更多有关图像处理中卷积的基础,可以参考以下链接中的文章 :
数字图像处理中滤波和卷积操作详细说明

3. 卷积神经网络原理

在理解了卷积神经网络中"卷积"的运算方式,我们接下来就来看看卷积神经网络的计算原理。输入输出的维度在理解卷积神经网络的过程中至关重要。

我们日常生活中常处理的图像按照他们的通道区分往往可以分为两大类,单通道的灰度图像以及三通道的RGB图像。下图就给出了一个针对三通道RGB图像的单层卷积神经网络的运算,我们就以下图为例,来理解卷积神经网络中隐藏层各个神经元以及权重的计算。首先,输入是28∗28∗328*28*328283的RGB图,其中3分别代表RGB三个通道。我们这里只使用了一个5∗55*555的卷积核。我们对每一个通道分别计算卷积,并将结果相加,就得到了一个包含24∗2424*242424个神经元的隐藏层。需要注意的是,每一个得出的隐藏层都共用一个卷积核中的权重,例如下图中,隐藏层h1nh^n_1h1n 共用同一个权重矩阵(卷积核) ω1n\omega^n_1ω1n。通过这样的操作,我们就提取出了由这个卷积核描述的特征。

在这里插入图片描述
接着,如果我们使用不止一个卷积核,那显而易见的,就可以提取出图像中不同的特征了。因此,计算得出的隐藏层的层数,与选择使用的卷积核的个数是一致的。
在这里插入图片描述
综上所述,我们可以通过不同的卷积核来提取出图像中的不同特征。而我们使用卷积神经网络的过程,实际上是通过训练来确定各个卷积核的权重,从而提取出最适合的图像特征。使用不同长度大小的卷积核,在训练卷积神经网络的过程中,可以帮助我们提取出最优的特征来组成feature maps。之后再结合全连接神经网络来完成相关的图像分类聚合问题。

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

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

相关文章

[LeetCode] Two Sum

一刷&#xff1a; import java.util.Arrays;public class Solution1 { public int[] twoSum(int[] nums, int target) {int[] indexnew int[2];int sum0;for (int i 0; i < nums.length; i) {for (int j i1; j < nums.length; j) {sumnums[i]nums[j];index[0] i;index[…

机器学习理论梳理2 : KNN K近邻分类模型

本文主要梳理KNN&#xff0c;K近邻模型的基本原理。 从机器学习的大分类来看&#xff0c;K近邻模型属于监督学习中的一种判别式模型&#xff0c;常用于分类问题。初始的数据集中&#xff0c;包含了已经分类标签好的数据。一句话来说&#xff0c;K近邻模型就是通过计算实例与现…

docker安装配置gitlab详细过程

1、方法一 1 docker pull beginor/gitlab-ce:11.0.1-ce.0 2、方法二 如果服务器网路不好或者pull不下来镜像&#xff0c;只能在其它网路比较好的机器上pull下来镜像&#xff0c;导出成一个文件&#xff0c; 再下载上传到网路不好的机器上&#xff0c;然后再从文件中导出来&am…

集合对偶律:分别用图文证明

集合几个法则&#xff1a; 求证&#xff1a; 注&#xff1a;右上角C表示此集合的补集/余集 语言描述&#xff1a;A 并 B的补集 A的补集 交 B的补集 A交B的补集 A的补集 并 B的补集 文字证明&#xff1a;&#xff08;思路&#xff1a;证明两个集合相等&#xff0c;可证两集合…

keras实现嘴唇图像autoencoder

本文分享了我在silent speech 项目过程中实现的基于嘴唇图像数据集的autoencoder自编码器。输入输出都是64∗6464*6464∗64的嘴唇灰度图。自编码器由编码解码两个部分构成&#xff0c;同时实现了利用checkpoint在每个epoch运算时&#xff0c;自动保存测试集loss更小的模型。 数…

historyReverser array reverse

historyReverser & array reverse "use strict";/**** author xgqfrms* license MIT* copyright xgqfrms** description historyReverser* augments Reverse 逆向 / Recursive 递归* example* link**/const historyReverser (datas [], text , debug false)…

pip国内加载速度慢解决方法

在国内使用pip安装包时有时会发现安装速度非常慢&#xff0c;甚至连接不上源。 为了加快pip的下载速度&#xff0c;我们可以主动使用 -i命令来切换到国内源。 下面放出实测好用的国内源 : 清华&#xff1a;https://pypi.tuna.tsinghua.edu.cn/simple 阿里云&#xff1a;http:…

oracle--导出、导入blob类型的字段

oracle--导出、导入blob类型的字段 blob是oracle中的一个数据类型&#xff0c;保存的是压缩后的二进制形式的大数据。 数据迁移如果涉及到blob字段&#xff0c;都不好处理&#xff0c;因为无法用常规方法进行操作&#xff0c;如&#xff1a;使用select查看该字段&#xff0c;…

深度学习分布式训练小结

分布式训练本质上是为了加快模型的训练速度&#xff0c;面对较为复杂的深度学习模型以及大量的数据。单机单GPU很难在有限的时间内达成模型的收敛。这时候就需要用到分布式训练。 分布式训练又分为模型并行和数据并行两大类。 1. 数据并行 数据并行在于将不同batch的数据分别…

MAC配置JCO,与找不到sapjco3异常

①到jco官网下载jco压缩包&#xff0c;解压 ②把libsapjco3.jnilib 放到一个文件夹中 把该路径配置到环境变量中 ③项目运行有可能会出现异常&#xff1a;找不到 sapjco3 &#xff1b; 第一种解决方式&#xff1a;配置虚拟机参数&#xff1a;-Djava.library.path之前环境变量路…

Java高并发之BlockingQueue

前言碎语 当系统流量负载比较高时&#xff0c;业务日志的写入操作也要纳入系统性能考量之内&#xff0c;如若处理不当&#xff0c;将影响系统的正常业务操作&#xff0c;之前写过一篇《spring boot通过MQ消费log4j2的日志》的博文&#xff0c;采用了RabbitMQ消息中间件来存储抗…

IP通信基础回顾2(第三周)

1.TCP报文 序号字段占4个字节。TCP连接中传送的数据流中每一个字节都编上一个序号。序号字段的值则是本报文段所发送的数据第一个字节的序号。 确认序号占4个字节。是期望收到的对方的下一个报文段字节胡序号。首部长度占4个字节。指出TCP首部长度在20-60字节之间&#xff0c;所…

ThreadPoolExecutor线程池 + Queue队列

1&#xff1a;BlockingQueue继承关系 java.util.concurrent 包里的 BlockingQueue是一个接口&#xff0c; 继承Queue接口&#xff0c;Queue接口继承 Collection BlockingQueue----->Queue-->Collection 图&#xff1a; 队列的特点是&#xff1a;先进先出&#xff08;FIFO…

linux基础文件管理软硬链接

一、文件系统的基本结构 1、文件和目录被组成一个单根倒置树目录结构 2、文件系统从根目录下开始&#xff0c;用“/”表示 3、根文件系统&#xff08;rootfs&#xff09;&#xff1a;root filesystem文件名区分大小写 4、以 . 开头的文件为隐藏文件 5、路径用/隔离 6文件有两类…

mybatis动态更新xml文件后热部署,不重启应用的方法

mybatis应用程序&#xff0c;由于是半自动化的sql, 有大量的sql是在xml文件中配置的&#xff0c;而在开发程序的过程中&#xff0c;通常需要边写sql变调试应用。但在默认情况下&#xff0c;xml文件里配置的sql语句是被放入到缓存中去了&#xff0c;每次更改有sql语句的xml文件&…

下拉插件 (带搜索) Bootstrap-select 从后台获取数据填充到select的 option中 用法详解...

今天收到了客户的需求&#xff0c;要求在新增停车场ID的时候要从数据库查出来对应的停车场名称然后显示在界面上。保存的时候按照停车场ID进行保存。 自己首先把后台的部分写完了&#xff0c;测试了接口数据。成功的拿到了ajax数据。 接下来&#xff0c;自己用了select下拉标签…

Linux自有服务(2)-Linux从入门到精通第六天(非原创)

文章大纲 一、设置主机名二、chkconfig三、ntp服务四、防火墙服务五、rpm管理&#xff08;重点&#xff09;六、cron/crontab计划任务&#xff08;重点&#xff09;七、学习资料下载八、参考文章 自有服务&#xff0c;即不需要用户独立去安装的软件的服务&#xff0c;而是当系统…

营销-营销方式:营销方式

ylbtech-营销-营销方式&#xff1a;营销方式营销方式是指营销过程中所有可以使用的方法。包括服务营销、体验营销、知识营销、情感营销、教育营销、差异化营销、直销、网络营销等。要有好的营销方式首先要创造行之有效的营销工具。但这并不意味着要把预算的75%都花在印制宣传资…

Kibana可视化管理页面详细使用说明

Kibana可视化管理页面详细使用说明 使用浏览器访问 ip:5601 默认端口&#xff0c;进入首页 Discover&#xff1a;日志管理视图 主要进行搜索和查询 Visualize&#xff1a;统计视图 构建可视化的图表 Dashboard&#xff1a;仪表视图 将构…

OO_BLOG3_规格化设计(JML学习)

目录 JML语言学习笔记理论基础应用工具链情况JMLUnit/JMLUnitNGUNIT3 作业分析作业 3-1 实现两个容器类Path和PathContainer作业 3-2 实现容器类Path和数据结构类Graph作业 3-3 实现容器类Path&#xff0c;地铁系统类RailwaySystem规格撰写的心得与体会最后&#xff0c;衷心感谢…