卷积神经网络之计算机视觉应用(一)

2023-11-17

 卷积神经网络之计算机视觉应用(一)

一 引言

 21世纪开始,卷积神经网络就被成功的大量用于检测、分割、物体识别以及图像的各个领域。值得一提的是,图像可以在像素级别进行打标签,这样就可以应用在比如自动电话接听机器人、自动驾驶汽车等技术中。尽管卷积神经网络应用的很成功,但是它被计算机视觉以及机器学习团队开始重视是在2012年的ImageNet竞赛。在该竞赛中,深度卷积神经网络被用在上百万张网络图片数据集,这个数据集包含了1000个不同的类。该结果达到了前所未有的好,几乎比当时最好的方法降低了一半的错误率。这个成功来自有效地利用了GPU、ReLU、一个新的被称为dropout的正则技术,以及通过分解现有样本产生更多训练样本的技术。这个成功给计算机视觉带来一个革命。如今,卷积神经网络用于几乎全部的识别和探测任务中。最近一个更好的成果是,利用卷积神经网络结合回馈神经网络用来产生图像标题。那么到底什么是卷积运算,什么是卷积神经网络,我们现在就来一探究竟。

二 卷积网络

 卷积网络,也叫作卷积神经网络(convolutional neural network ,CNN),是一种专门用来处理具有类似网格结构的数据的神经网络。例如时间序列数据(可以认为是在时间轴上有规律地采样形成的一维网络)和图像数据(可以看作二维的像素网格)。卷积神经网络在诸多领域表现优异。“卷积神经网络”一词表明该网络使用了卷积这种数学运算。卷积神经网络是一种特殊的线性运算。卷积神经网络是指那些至少在网络的一层中使用卷积运算来代替一般的矩阵乘法运算的神经网络。

三 卷积神经网络在图像上的应用

 那么到底什么是卷积运算,如何在图像上使用卷积运算,我们通过下图来具体说明。
 我们以上图为例,图像A为一个拥有6*6 36个像素点的原始灰白图片,我们用3*3的卷积核B来对其做卷积运算。卷积核就像一个窗口一样在图像A上进行滑动,每次移动一个步幅,那个一个共能够产生4*4 16个位置,因此我们得到了一个4*4的输出C。  那么每次卷积核在对应位置进行的卷积运算实质就是对应位置元素的乘积之和(如上图中所示)。我们进行公式的推广,若 一个n*n的原始图像,卷积核的大小为f*f,每次移动的步幅大小为一的话,我们就得到以下公式:
C(经过卷积运算后图像的边)=n-f+1




 现在我们了解了如何在图像上进行卷积运算,那么我们来看一个更加贴切真实生活同时也更加复杂的例子来巩固下所学习到的知识。如下图所示,我们现在的输入图像由原来的单通道变成了三个通道(卷积核的通道数量等于原始图像的通道数量),分别来代表红色,绿色,蓝色三个色彩通道,那么这就相当于我们平时生活中的彩色照片了。我们的卷积核也相应的变成三个,因为要分别对应于RGB三个通道进行卷积运算,每个卷积核中的参数的设定通常来说是不相同的,这其实就相当于从不同的色彩角度来分析这张彩色图片了。


 上图还是进行我们熟悉的卷积运算,唯一我们需要注意的是6*6*3的原始图像和3*3*3的卷积核进行的卷积运算最后得出的结果是4*4的输出图像,因为一个卷积核代表从一个特征对图像进行处理(如:垂直边缘,水平边缘),卷积核的通道数目与原始图像的通道数目是相等的,最后我们把同一位置的各个通道进行卷积运算后的值相加来作为最后的输出(例如上图中:RGB三个通道卷积运算的结果相加才是最后的输出)。再对另一个的卷积核进行运算后我们又会得到一个二维的输出图像,把这两个结果叠加到一起我们就得到了一个完整的卷积运算后的结果了。当然我们还可以再增加卷积核的数量,这就相当于我们从更多的角度来分析处理这张彩色图片了,我们最后得到结果的通道数目和卷积核的数量是相等,例如上图中我们有两个3*3*3的卷积核,那么我们的输出就是4*4*2的三维结果。若我们有4个3*3*3的卷积核,那么我们的结果就变成了4*4*4了。

 最后我们对重要知识点再进行回顾,对公式进行推广。卷积核的通道数目Nc和原始图像的通道数目Nc是相等的,输出图像的通道数目x是和卷积核的个数相等的,我们只要明确理解了这两个重要的点,对卷积运算中的参数就不会再混淆了。若我们有一个n*n*Nc的原始图像,有x个f*f*Nc的卷积核,那么我们的输出图像应该为(n-f+1)*(n-f+1)*x。



下一篇文章我们将介绍卷积神经网络中的池化层,以及如何使用CNN来进行手写体识别。







本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

卷积神经网络之计算机视觉应用(一) 的相关文章

随机推荐

  • 读取指定文件每行并运行cmd命令

    package com company import java io import java util ArrayList import java util List public class Main public static void
  • DevExpress网格控件(GridView)中增加下拉框和复选框

    本文主要介绍如何在GridControl网格中的每一行增加复选框 下拉框和多选下拉框 最终效果如下图所示 其中 测试模块 模块类型 从属 测试人 测试要求 备注等是数据库查询到的数据 操作步骤 一 添加控件 1 Winform窗口放置一个G
  • html移动端适配最优方法

    使用js来设置font size的方法最好 目前大部分成熟网站都采用这种方法 媒体查询可能会漏掉一些设备型号 并且比较繁琐 通过vw设置也比较方便 但是兼容性不好 js设置html的font size大小 document document
  • OpenSSL SSL_read: Connection was aborted, , errno 10053

    git遇到fatal unable to access https github com xxx xxx OpenSSL SSL read Connection was aborted errno 10053的问题 原因 Git默认限制推送
  • the desired address is beyond limit for this PLC

    问题描述 通过 Java连接西门子PLC S7 1200 学习中 出现错误 the desired address is beyond limit for this PLC 下面是测试代码 S7Connector connector S7C
  • zookeeper基本架构

    要全面了解zookeeper 首先我们得知道什么是zookeeper 能做什么 zookeeper是一个开源的分布式协调服务 主要用于数据订阅 发布 集群管理 配置管理 分布式锁 基本架构 zookeeper基本架构如下 zookeeper
  • angular input_可视化的 Angular 响应式编程

    现代化UI开发中 客户端 前端 一般会进行分层设计 实际用户可感知的 UI 作为顶层 称为视图 View 底层中独立于展示方式的数据结构称为模型 Model 而将两者进行关联的中间层部分 根据划分方式则有很多种定义 例如控制器 Contro
  • thinkPHP6.0入门笔记(五)——数据表字段排序

    thinkPHP6 0实现数据表字段排序 1 利用order方法简单实现 2 URL优化排序 1 利用order方法简单实现 一般情况下排序是交给前端来实现的 后端一般主要是实现数据库的增删查改 但是PHP中经常出现order字段 由于后端
  • cuBLAS【CUDA专门用来解决线性代数运算的库】

    cuBLAS是CUDA专门用来解决线性代数运算的库 分为三个级别 Lev1向量乘向量 Lev2矩阵乘向量 Lev3矩阵乘矩阵 此外 cuBLAS库还包含一些功能和状态结构函数 学习网站为 参考资料 四 cuBLAS与cuDNN
  • mysql 快照和binlog_mysql binlog二进制日志详解

    mysql binlog二进制日志详解 更新时间 2011年10月31日 23 13 00 作者 二进制日志包含了所有更新了数据或者已经潜在更新了数据 例如 没有匹配任何行的一个DELETE 的所有语句 基本概念 定义 二进制日志包含了所有
  • Tcl脚本学习

    包的创建和调用 在tcl脚本中 我们可以通过创建和调用包来增强代码的可复用性 创建包的步骤 1 在包脚本文件中 首先声明 package provide 标识当前文件提供了一个包 之后在该文件中完成包的内容 2 通过pkg mkIndex命
  • element table 表格实现上移、下移

    业务场景 有时候需要前端实现上移和下移功能 代码如下 根据交互形式 我这里是把第一条数据的上移按钮置灰不可点击 disabled scope index 0 最后一条数据下移按钮置灰不可点击 disabled scope index 1 t
  • DCDC输入输出电容的选择和计算(转载)

    文章转自MPS论坛 https forum monolithicpower cn t topic 2105 目前市面上的电容种类繁多 在为我们的电源电路选择输入输出电容的时候难免会挑花了眼 本文就来浅析一下如何选择输入输出电容及其相关的计算
  • 企业运维经典面试题汇总(5)

    1 git和svn 的区别 Git是分布式的 而Svn不是分布的 Git把内容按元数据方式存储 而SVN是按文件 Git没有一个全局版本号 而SVN有 目前为止这是跟SVN相比Git缺少的最大的一个特征 Git的内容的完整性要优于SVN G
  • Qt-窗口嵌套exe

    某些特殊场景 我们要在主程序中嵌套第三方程序 这样臃肿的设计好比 在乡村小楼里面建设一个商业广场 本人不是很喜欢 Qt的QProcess和QWindow可以为我们完成这样的任务 核心思路即 QProcess启动第三方exe 获取进程ID w
  • 各种窗体操作的bug解决

    1 java lang IllegalArgumentException View com android internal policy impl PhoneWindow DecorView 41e0f220 V E R D 0 0 53
  • TensorFlow 2.0 安装指南

    TensorFlow 2 0 beta1 已经发布 本文详细介绍在个人电脑或服务器上安装 TensorFlow 2 0 beta1 的步骤和各种细节 让你第一次安装 TensorFlow 2 0 就上手 一般安装步骤 TensorFlow
  • RangeError: Maximum call stack size exceeded

    问题现场 执行环境 安卓设备 V8 引擎 Java 代码中调用 JavaScript 报错日志 2021 10 21 14 52 53 156 30457 30457 com fuck you E com fuck you JavaInvo
  • ‘vite’ 不是内部或外部命令,也不是可运行的程序或批处理文件问题解决

    问题解析 使用vite创建vue3 0项目的时候 vite不会自动 install 相关的依赖 需要我们手动去安装 进入项目的node modules目录里面查看 什么都没有 所以说出现这个问题的原因是 缺少安装依赖这一步 vite不像 n
  • 卷积神经网络之计算机视觉应用(一)

    卷积神经网络之计算机视觉应用 一 一 引言 21世纪开始 卷积神经网络就被成功的大量用于检测 分割 物体识别以及图像的各个领域 值得一提的是 图像可以在像素级别进行打标签 这样就可以应用在比如自动电话接听机器人 自动驾驶汽车等技术中 尽管卷