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

深度学习|CNN卷积神经网络

CNN卷积神经网络

  • 解决的问题
  • 人类的视觉原理
  • 原理
    • 卷积层——提取特征
    • 池化层——数据降维
    • 全连接层——输出结果
  • 应用
    • 图像处理
    • 自然语言处理

解决的问题

在CNN没有出现前,图像对人工智能来说非常难处理。
主要原因:

  • 图像要处理的数据量太大了。图像由像素组成,每个像素又由不同颜色组成,一张1000×1000彩色RGB图像需要的参数是1000×1000×3,需要三百万参数左右,普通神经网络会全用全连接方法来学习整幅图像上的特征,处理起来无论是计算还是存储都需要很大的资源。
  • 很难保留图像特征。一张图像做了一些翻转、旋转、缩放的那个操作的时候,线性向量表示会发生很大的变化,机器没法认为是同一张图。而CNN能够让机器“以视觉的方式看待图像数据”,能利用视觉原理捕获到图像数据中的特征。

人类的视觉原理

深度学习是基于神经网络的实现的,而神经网络是一种模仿生物神经网络结构和功能的数学模型或计算模型。所以深度学习的许多研究成果,离不开对大脑认知原理的研究。CNN就借鉴了人类视觉系统层次结构。

人类的视觉原理:瞳孔摄入原始像素信号,然后大脑皮层某些细胞发现边缘和方向,大脑进行抽象判断特征例如物体形状,最后再进一步做出判断例如物体是个人。

下图是一个大脑进行人脸识别的示例图:
在这里插入图片描述
通过模仿人类的视觉原理的特点,来构造神经网络,低层的识别图像初级特征,若干曾底层特征组成更上一层的特征,最终通过多个层级组合,在顶层做出分类判断。

原理

CNN(Convolutional Neural Network,卷积神经网络)结构可以分为3层:卷积层、池化层和全连接层。

卷积层——提取特征

卷积层(Convolutional Layer) :主要作用是提取特征。

过程:一个过滤器(卷积核,Filter)来过滤图像各个小区域,从而得到各个小区域的特征。卷积层通过卷积核的过滤提取出图片中局部的特征,与人类视觉的特征提取类似。
在这里插入图片描述

实际应用的时候,往往会有很多种卷积核,不同卷积核识别不同的图像模式,也就是不同的特征。

池化层——数据降维

池化层(Max Pooling Layer) :提取某个区域的总结特征,主要作用是下采样(Downsampling),能够数据降维,但是不会损坏识别结果。

原因:做完卷积后的图像依然很大,1000*1000经过10种卷积核后,得到1000×1000×10,维度非常大。通过池化层,能降低数据大小,同时不会对识别结果造成破坏。

池化层函数:是一种统计函数,通常由最大池化(提取区域内的最大特征)、平均池化(提取区域内的平均特征)、混合池化等。

过程:下图采用最大池化策略,对4×4的矩阵按照2×2进行分开,每个2×2取最大值保留下来。
在这里插入图片描述
好处:除了降低参数量,还有个优点就是能够避免过拟合。池化是提取某个区域的总结特征,是对某个区域全局的考量,减少了对具体像素的依赖性,从而降低了过拟合风险。例如某个点其实是噪声,但是池化总结特征的时候被舍弃了,就没有影响;如果不池化,后续调参的时候还会考虑到噪声。

全连接层——输出结果

全连接层(Fully Connected Layer):主要作用是分类。通过卷积层和池化层的出来的特征,需要让全连接层对前面总结好的特征做分类判断。

过程:“全连接”前层网络中的所有神经元都与下一层的所有神经元连接。
在这里插入图片描述

应用

图像处理

  1. 图像分类(Image Classification):判断图片中的物体属于哪一个类别。
    举例:LeNet-5用来对手写字体识别,被认为是最早的CNN模型,作者LeCun Y也被誉为CNN之父。
  2. 图像分割(Image Segmentation):为图片每个对象创造一个像素级别的掩膜。
    分类:语义分割和实例分割。
    语义分割(Semantic Segmentation):为图像中的每个像素分配一个类别,但是同一类别之间的对象不会区分。
    实例分割(Instance Segmetation):实例分割还会对同一类别的对象进行区分。
    下图中左边是语义分割,右边是实例分割:
    在这里插入图片描述
  3. 目标检测(Object Detection):目标定位并且能对目标物体进行分类。
    与目标定位的区别:目标定位通常是针对单个检测对象,而目标检测能检测多个对象。此外,图像分类也是针对单个对象的。
    与图像分割的区别:目标检测和目标定位都只是定位出目标的位置,通常是用一个方框表示,而图像分割则是每个像素属于那个对象,对象的轮廓会更加清楚。
    在这里插入图片描述
  4. 超分辨率(Super-Resolution):提高原有图像的分辨率。

自然语言处理

除了在图像处理领域,CNN 在自然语言处理(Natural Language Processing,NLP)也有应用。

输入:任何矩阵都可以作为CNN的输入,所以输入也可以是词向量组成的矩阵,即矩阵每一行代表一个词,也可以是一个字符。

卷积:过滤器“宽度”通常和输入矩阵的宽度相同,也就是输入的词向量大小;高度可能会有所不同,也每次卷积多少个词。

池化:进一步降低参数量,避免过拟合,例如最大池化、平均池化。

相关文章:

深度学习|CNN卷积神经网络

CNN卷积神经网络 解决的问题人类的视觉原理原理卷积层——提取特征池化层——数据降维全连接层——输出结果 应用图像处理自然语言处理 解决的问题 在CNN没有出现前,图像对人工智能来说非常难处理。 主要原因: 图像要处理的数据量太大了。图像由像素组…...

【洁洁送书第五期】为什么我们要了解可观测性工程

导读 可观测性已成为一个热门话题,并广受关注。随着它的普及,“可观测性”不幸被误作“监控”或“系统遥测”的同义词。可观测性是软件系统的一个特征。而且,只有当团队采用新的实践进行持续开发时,才能在生产软件系统中有效利用这…...

将vue项目通过electron打包成windows可执行程序

将vue项目打包成windows可执行程序 1、准备好dist将整个项目打包 npm run build2、安装electron依赖 npm install electron --save-dev npm install electron-packager --save-dev"electron": "^13.1.4", "electron-packager": "^15.2.0…...

【0基础入门Python Web笔记】三、python 之函数以及常用内置函数

三、python 之函数以及常用内置函数 函数函数定义函数调用函数参数返回值 常用内置函数input()函数range()函数其它 更多实战项目可进入下方官网 函数 函数是一种用于封装可重复使用代码块的工具,能够将一系列操作组织成一个逻辑单元。 函数定义 在Python中&…...

相交链表00

题目链接 相交链表 题目描述 注意点 保证 整个链式结构中不存在环函数返回结果后,链表必须 保持其原始结构如果 listA 和 listB 没有交点,intersectVal 为 0 解答思路 两个链表从头开始遍历,如果其是在同一个位置处相交,则在…...

怎样压缩mp4视频大小?

怎样压缩mp4视频大小?由于视频文件的体积通常比其他类型的文件更大,因此它们需要更多的存储空间来保存。但是,如果我们的设备、应用程序或平台不支持某些视频格式或分辨率,或者我们没有足够的存储空间来容纳这些大型视频文件&…...

ubuntu20.04 安装使用 Indemind 双目相机

1、先按照官方wiki搭建环境 Ubuntu 安装 — IMSEE SDK 1.4.2 文档&#xff08;ubuntu20使用官网会报错&#xff0c;可以参考我下面的步骤&#xff09; 1.1、获取代码 sudo apt-get install git git clone https://github.com/indemind/IMSEE-SDK.git 1.2、准备依赖 cd <…...

一文读懂设备管理系统:是什么、谁需要、怎样选

工业的迅猛发展让人类向前迈出了史无前例的步伐&#xff0c;工业4.0将我们又带入了一个信息化技术促进工业变革的新时代——智能化时代。一台台机器设备是工业发展史上必不可少的参与者&#xff0c;但企业对设备的管理存在种种痛点&#xff0c;比如生产设备多&#xff0c;但备件…...

删除链表的中间节点

题目&#xff1a; 示例&#xff1a; 思路&#xff1a; 这个题类似于寻找链表中间的数字&#xff0c;slow和fast都指向head&#xff0c;slow走一步&#xff0c;fast走两步&#xff0c;也许你会有疑问&#xff0c;节点数的奇偶不考虑吗&#xff1f;while执行条件写成fast&&…...

Q/GDW 1597-2015《国家电网公司应用软件系统通用安全要求》

电力安全测试报告 电力行业检测标准 随着信息技术的快速发展和广泛应用&#xff0c;应用软件系统已成为企业信息化建设中不可或缺的重要组成部分。然而&#xff0c;应用软件系统的安全问题也随之而来&#xff0c;给企业和用户带来了潜在的风险和威胁。为了提高应用软件系统的…...

【前端从0开始】CSS——12、光标属性

光标属性 cursor 属性规定要显示的光标的类型&#xff08;形状&#xff09;。 该属性定义了鼠标指针放在一个元素边界范围内时所用的光标形状&#xff08;不过 CSS2.1 没有定义由哪个边界确定这个范围&#xff09;。 属性名效果crosshair精确定位“十”字形pointer“小手”形…...

文件四剑客

目录 前言 一、正则表达式 二、grep 三、find 四、sed 五、awk 前言 文件四剑客是指在计算机领域中常用的四个命令行工具&#xff0c;包括awk、find、grep和sed。它们在处理文本文件和搜索文件时非常强大和实用。 1. awk是一种强大的文本处理工具&#xff0c;它允许用户根据指…...

使用lambda表达式提取共用代码使其更加简洁

1、在开发预下单接口访问并发问题出现需要加锁代码如下 RLock lock redissonClient.getLock(String.format(appointmentKey, activityId, studentId));try {boolean tryLock lock.tryLock(10, 20, TimeUnit.SECONDS);if (tryLock) {AppointmentMallOrderInfoDTO appointmentM…...

【八股】2023秋招八股复习笔记3(智力题 非技术题50道)

文章目录 1、智力题赛⻢问题烧绳⼦问题找出最重球问题药丸问题有两个杯⼦&#xff0c;囚犯问题⽣孩⼦问题赢汽⻋问题卡牌问题拿硬币问题量⽔问题聚会问题数字游戏问题艾滋病问题找出变质药问题毒药问题分盐问题弹球问题病狗问题⽕⻋运煤问题分苹果问题分⾦条问题搬⾹蕉问题舀酒…...

服务器卡顿如何排查?

服务器网络卡&#xff0c;一般情况下&#xff0c;请先检查您服务器的使用情况。 1.CPU使用率是否大于50%。 2.网络使用率是否过高。 3.内存使用率是否过高。 如果出现上述情况&#xff0c;则表明您的服务器或网络无法承载您目前的服务&#xff0c;请联系技术人员调整您的资…...

设计模式——开闭原则

文章目录 基本介绍看下面一段代码方式 1 的优缺点改进的思路分析 基本介绍 开闭原则&#xff08;Open Closed Principle&#xff09;是编程中最基础、最重要的设计原则 一个软件实体如类&#xff0c;模块和函数应该对扩展开放(对提供方)&#xff0c;对修改关闭(对使用方)。用抽…...

服务器能运行什么应用

服务器能运行什么应用 服务器是一种应用范围很广的网络技术产品&#xff0c;它在影视、视频以及医疗和金融等多个领域&#xff0c;都可以发挥使用价值&#xff0c;那么服务器能运行什么应用?大家跟着壹基比小鑫一起来了解吧&#xff01; 服务器的作用是什么&#xff1f; 服…...

Linux TCP协议

传输层的协议主要有三个&#xff1a;TCP协议&#xff08;可靠&#xff09;、UDP协议&#xff08;不可靠&#xff09;和SCPT协议&#xff08;不可靠&#xff09;。 一、TCP协议的概念 TCP协议也称传输控制协议&#xff0c;是一种可靠的、面向连接的、基于字节流的传输层通信协…...

pytorch 入门1-tensor 广播 view reshape

tensor 的四则运算broadcast import torch import numpy as np # 张量tensor 随机初始化 x torch.rand(4,3) print(x) y torch.randn(4,3) print(y)# 初始化全零 张量 a torch.zeros((4,4),dtypetorch.long) print(a) #初始化全一 张量 b torch.ones(4,4) print(b) c tor…...

Spring参数注解,支持数组入参(List)校验

Spring参数注解&#xff0c;支持数组入参&#xff08;List&#xff09;校验 1、controller类增加Validated注解&#xff0c;对应的数组参数增加Valid注解。 Validated RestController RequestMapping("/parent") public class ParentController {private FatherRepos…...

java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别

UnsatisfiedLinkError 在对接硬件设备中&#xff0c;我们会遇到使用 java 调用 dll文件 的情况&#xff0c;此时大概率出现UnsatisfiedLinkError链接错误&#xff0c;原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用&#xff0c;结果 dll 未实现 JNI 协…...

django filter 统计数量 按属性去重

在Django中&#xff0c;如果你想要根据某个属性对查询集进行去重并统计数量&#xff0c;你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求&#xff1a; 方法1&#xff1a;使用annotate()和Count 假设你有一个模型Item&#xff0c;并且你想…...

JavaScript 数据类型详解

JavaScript 数据类型详解 JavaScript 数据类型分为 原始类型&#xff08;Primitive&#xff09; 和 对象类型&#xff08;Object&#xff09; 两大类&#xff0c;共 8 种&#xff08;ES11&#xff09;&#xff1a; 一、原始类型&#xff08;7种&#xff09; 1. undefined 定…...

uniapp 字符包含的相关方法

在uniapp中&#xff0c;如果你想检查一个字符串是否包含另一个子字符串&#xff0c;你可以使用JavaScript中的includes()方法或者indexOf()方法。这两种方法都可以达到目的&#xff0c;但它们在处理方式和返回值上有所不同。 使用includes()方法 includes()方法用于判断一个字…...

React核心概念:State是什么?如何用useState管理组件自己的数据?

系列回顾&#xff1a; 在上一篇《React入门第一步》中&#xff0c;我们已经成功创建并运行了第一个React项目。我们学会了用Vite初始化项目&#xff0c;并修改了App.jsx组件&#xff0c;让页面显示出我们想要的文字。但是&#xff0c;那个页面是“死”的&#xff0c;它只是静态…...

uniapp获取当前位置和经纬度信息

1.1. 获取当前位置和经纬度信息&#xff08;需要配置高的SDK&#xff09; 调用uni-app官方API中的uni.chooseLocation()&#xff0c;即打开地图选择位置。 <button click"getAddress">获取定位</button> const getAddress () > {uni.chooseLocatio…...

window 显示驱动开发-如何查询视频处理功能(三)

​D3DDDICAPS_GETPROCAMPRANGE请求类型 UMD 返回指向 DXVADDI_VALUERANGE 结构的指针&#xff0c;该结构包含特定视频流上特定 ProcAmp 控件属性允许的值范围。 Direct3D 运行时在D3DDDIARG_GETCAPS的 pInfo 成员指向的变量中为特定视频流的 ProcAmp 控件属性指定DXVADDI_QUER…...

MeanFlow:何凯明新作,单步去噪图像生成新SOTA

1.简介 这篇文章介绍了一种名为MeanFlow的新型生成模型框架&#xff0c;旨在通过单步生成过程高效地将先验分布转换为数据分布。文章的核心创新在于引入了平均速度的概念&#xff0c;这一概念的引入使得模型能够通过单次函数评估完成从先验分布到数据分布的转换&#xff0c;显…...

中国政务数据安全建设细化及市场需求分析

(基于新《政务数据共享条例》及相关法规) 一、引言 近年来,中国政府高度重视数字政府建设和数据要素市场化配置改革。《政务数据共享条例》(以下简称“《共享条例》”)的发布,与《中华人民共和国数据安全法》(以下简称“《数据安全法》”)、《中华人民共和国个人信息…...

华硕电脑,全新的超频方式,无需进入BIOS

想要追求更佳性能释放 或探索更多可玩性的小伙伴&#xff0c; 可能会需要为你的电脑超频。 但我们常用的不论是BIOS里的超频&#xff0c; 还是Armoury Crate奥创智控中心超频&#xff0c; 每次调节都要重启&#xff0c;有点麻烦。 TurboV Core 全新的超频方案来了 4不规…...