深度神经网络——什么是 CNN(卷积神经网络)?

Facebook和Instagram自动检测图像中的面孔,Google通过上传照片搜索相似图片的功能,这些都是计算机视觉技术的实例,它们背后的核心技术是卷积神经网络(CNN)。那么,CNN究竟是什么呢?接下来,我们将深入探讨CNN的架构,揭示它们是如何工作的。

CNN是一种深度学习模型,它模仿了人类大脑处理视觉信息的方式。它们之所以在图像识别等领域表现出色,是因为它们能够自动从图像中学习复杂的特征。CNN的架构由多层卷积层和池化层堆叠而成,这些层负责提取图像的特征并逐步构建更为复杂和抽象的特征表示。

每个卷积层都包含多个卷积核,这些卷积核在输入图像上滑动,通过卷积运算捕捉局部特征。随着网络的深入,这些特征表示变得更加高级,能够识别更加复杂的模式和对象。最终,网络能够识别图像中的面孔、物体或其他感兴趣的特征。

什么是神经网络?

神经网络是一种受到人脑结构和功能启发的计算模型。它们由多层神经元组成,这些神经元通过加权连接相互关联。这些权重代表了输入数据特征之间的关系,以及它们与特定输出类别之间的联系。

在神经网络的操作中,数据被输入到网络中,并通过层层神经元进行处理。每一层的神经元会对接收到的信号进行加权求和,然后通过一个激活函数来决定是否以及如何激活下一层的神经元。在训练过程中,网络的目标是通过调整这些权重来最小化输出和实际值之间的差异。

卷积神经网络(CNN)是神经网络的一个特殊类型,它们由两大部分构成:传统的前馈网络部分和专门用于处理图像数据的卷积层。这些卷积层能够捕捉图像的局部特征,并通过堆叠多个卷积和池化层来形成更为复杂和高级的特征表示。

什么是卷积神经网络 (CNN)?

卷积神经网络中的"卷积"是一种数学运算,它通过一组特定的权重——也就是卷积核或过滤器——来处理图像数据。这些过滤器尺寸小于输入图像,它们覆盖图像的局部区域,通过与该区域内的像素值进行逐元素相乘和累加,生成新的特征图的一个元素。

这个过程可以想象成用一个小窗口在图像上滑动,这个窗口对应于卷积核。窗口下的像素与卷积核的权重相结合,产生输出特征图中的一个值。随着窗口在图像上移动,这个过程不断重复,直到覆盖了整个图像,生成完整的特征映射。

这种"滑动窗口"技术使得卷积核能够捕捉图像中的局部特征,如边缘、纹理等。通过这种方式,卷积神经网络能够逐层构建对图像内容的深入理解。

为什么卷积至关重要

无论如何,创建卷积的目的是什么? 卷积是必要的,因为神经网络必须能够将图像中的像素解释为数值。 卷积层的功能是将图像转换为神经网络可以解释的数值,然后从中提取相关模式。 卷积网络中滤波器的作用是创建一个二维值数组,这些值可以传递到神经网络的后面层,这些层将学习图像中的模式。

过滤器和通道

CNN 不仅仅使用一种过滤器来从输入图像中学习模式。 使用多个过滤器,因为不同滤波器创建的不同数组会导致输入图像的表示更加复杂、丰富。 CNN 的常见过滤器数量为 32、64、128 和 512。过滤器越多,CNN 检查输入数据并从中学习的机会就越多。

CNN 分析像素值的差异以确定对象的边界。 在灰度图像中,CNN 只会查看黑白、从浅到深的差异。 当图像是彩色图像时,CNN 不仅要考虑黑暗和光明,而且还必须考虑三种不同的颜色通道——红色、绿色和蓝色。 在这种情况下,滤波器拥有 3 个通道,就像图像本身一样。 滤波器具有的通道数称为其深度,滤波器中的通道数必须与图像中的通道数匹配。

卷积神经网络(CNN)架构

卷积神经网络(CNN)的架构是深度学习中用于图像识别和处理任务的核心技术。在CNN中,每个网络通常以一个卷积层开始,其作用是将原始图像数据转换成数值数组形式,为后续的数据处理打下基础。卷积层不仅可以位于网络的起始位置,还可以连续堆叠,使得网络能够逐层深入地处理和理解图像内容。

卷积层的堆叠与特征提取

  • 初步卷积:网络的第一个卷积层负责捕捉图像中的初步特征,如边缘和纹理。
  • 多层堆叠:随着卷积层的堆叠,网络能够提取更复杂的特征。每一层都在前一层的基础上进一步抽象化,形成更高级的特征表示。
  • 特征识别:CNN通过连续的卷积层逐步从简单到复杂识别图像中的各种特征,从线条到形状,再到具体的对象。

从低级到高级特征的过渡

  • 低级特征提取:在网络的早期层,CNN专注于提取构成图像基础的低级特征,如边缘和角落。
  • 形状构建:随着网络的深入,这些低级特征被组合成更复杂的形状和模式。
  • 复杂对象识别:CNN的深层能够识别更加复杂的对象,如动物、人脸和汽车等。

密集连接层的作用

  • 密集连接:在卷积层之后,数据进入CNN的密集连接部分,这里的层与全连接神经网络类似,节点在层内完全连接。
  • 模式学习:这些密集层学习卷积层提取的特征模式,从而使网络能够识别和分类图像中的物体。

CNN的这种分层和逐步抽象化的设计,使得网络能够从原始像素级数据中自动学习和提取特征,并最终实现对图像内容的准确识别和分类。这种能力使得CNN在图像分类、物体检测、图像分割等多种计算机视觉任务中表现出色。

使用Python实现一个CNN

实现一个简单的卷积神经网络(CNN)可以使用Python中的深度学习库,如TensorFlow或PyTorch。以下是使用TensorFlow和Keras API实现一个基本CNN的例子,这个CNN适用于分类任务,比如MNIST手写数字分类。

首先,确保你已经安装了TensorFlow。如果没有安装,可以通过以下命令安装:

pip install tensorflow

以下是使用TensorFlow和Keras实现CNN的代码示例:

import tensorflow as tf
from tensorflow.keras import datasets, layers, models# 加载MNIST数据集
(train_images, train_labels), (test_images, test_labels) = datasets.mnist.load_data()# 归一化像素值到0-1范围
train_images, test_images = train_images / 255.0, test_images / 255.0# 因为MNIST是灰度图像,我们需要扩展维度以匹配CNN的输入要求
train_images = train_images[..., tf.newaxis]
test_images = test_images[..., tf.newaxis]# 构建CNN模型
model = models.Sequential()
# 卷积层,32个过滤器,大小为3x3,使用ReLU激活函数
model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)))
# 池化层,缩小图像尺寸,减少参数数量
model.add(layers.MaxPooling2D((2, 2)))
# 第二个卷积层,64个过滤器
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
# 第三个卷积层,64个过滤器
model.add(layers.Conv2D(64, (3, 3), activation='relu'))# 展平层,将三维输出展开为一维
model.add(layers.Flatten())
# 全连接层,64个神经元
model.add(layers.Dense(64, activation='relu'))
# 输出层,10个神经元对应10个类别
model.add(layers.Dense(10))# 编译模型
model.compile(optimizer='adam',loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),metrics=['accuracy'])# 训练模型
model.fit(train_images, train_labels, epochs=5)# 评估模型
test_loss, test_acc = model.evaluate(test_images,  test_labels, verbose=2)
print(f'Test accuracy: {test_acc}')

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

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

相关文章

HTB 靶场 Mailing 未完待续

访问网页 在/etc/hosts 添加ip和域名 hosts 文件包含ip地址与主机名之间的映射,还包括主机的别名。 Linux系统所有程序查询/etc/hosts文件解析对主机名或者域名的IP地址。没有找到就需要使用DNS服务器解释域名。 DNS原理 1 输入域名,在本地缓存服务…

新手教程之使用LLaMa-Factory微调LLaMa3

文章目录 为什么要用LLaMa-Factory什么是LLaMa-FactoryLLaMa-Factory环境搭建微调LLaMA3参考博文 为什么要用LLaMa-Factory 如果你尝试过微调大模型,你就会知道,大模型的环境配置是非常繁琐的,需要安装大量的第三方库和依赖,甚至…

【数据结构与算法 经典例题】链表的回文结构(图文详解)

💓 博客主页:倔强的石头的CSDN主页 📝Gitee主页:倔强的石头的gitee主页 ⏩ 文章专栏:《数据结构与算法 经典例题》C语言 期待您的关注 ​ 目录 一、问题描述 二、解题思路 三、C语言代码实现 一、问题描述 二、解…

深度学习-07-反向传播的自动化

深度学习-07-反向传播的自动化 本文是《深度学习入门2-自製框架》 的学习笔记,记录自己学习心得,以及对重点知识的理解。如果内容对你有帮助,请支持正版,去购买正版书籍,支持正版书籍不仅是尊重作者的辛勤劳动&#xf…

OJ题目【栈和队列】

题目导入 栈: 题目一:有效的括号题目二:用栈实现队列 队列 题目:实现循环队列 栈 题目一 有效的括号 题目要求 给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘…

LeetCode746使用最小花费爬楼梯

题目描述 给你一个整数数组 cost ,其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。请你计算并返回达到楼梯顶部的最低花费。 解析 动态…

七校联赛题铅笔姿态及笔迹检测装置--mpu6050识别数字

前言 前几天打完比赛,收获还是挺大的,数字识别部分基本上浪费了绝大部分时间。先将思路简单说明。 1、题目 2、思路 针对笔迹检测,我们首先考虑的肯定是陀螺仪来测量加速度方向来判断书写的方向,从而得到书写的数字。 我们的方案…

LLM的基础模型3:Transformer变种

大模型技术论文不断,每个月总会新增上千篇。本专栏精选论文重点解读,主题还是围绕着行业实践和工程量产。若在某个环节出现卡点,可以回到大模型必备腔调或者LLM背后的基础模型新阅读。而最新科技(Mamba,xLSTM,KAN)则提…

【软件测试】自动化测试如何管理测试数据

前言 在之前的自动化测试框架相关文章中,无论是接口自动化还是UI自动化,都谈及data模块和config模块,也就是测试数据和配置文件。 随着自动化用例的不断增加,需要维护的测试数据也会越来越多,维护成本越来越高&#…

编译 freetype、sdl、sdl_ttf

/* * three lib */ /* 字符串生成位图 */ http://www.libsdl.org/projects/SDL_ttf/release/ http://www.libsdl.org/download-1.2.php https://freetype.org/ /* Freetype 2.13.0 */ ./configure CCaarch64-v01c01-linux-gnu-gcc --buildaarch64 …

一个简约而不简单的记账 App(一刻记账)

前言 在两年多前, 我曾经写过一个本地化的记账 App, 当时没有想过以后的发展. 全程是本地化的, 当时主要是为了练习 Compose 而写的. TallyApp 而现在一个完整的记账 App 它来了 一刻记账 算是圆了我两年前的梦了吧. 也让我可以真正的使用自己的记账软件. 下面是 一刻记账 记…

10 -力扣高频 SQL 50 题(基础版)

10 - 每台机器的进程平均运行时间 -- sum(if(activity_type end,timestamp ,-timestamp )) -- 如果activity_type为“end”,值为timestamp,为“start” 为-timestamp,所有数相加end-start -- count(distinct process_id),获取同一机器有几个进行id -- r…

鸿蒙HarmonyOS实战—如何使用Video组件播放视频

1.视频播放 鸿蒙系统中,关于视频播放,可以使用上层视频组件Video。 参数如下 src 支持file:///data/storage路径前缀的字符串,用于读取应用沙箱路径内的资源。需要保证目录包路径下的文件有可读权限。 说明:视频支持的格式是&am…

为何限定项目的 Node.js 版本

首先区分三个概念nvm,npm,nodejs。 Node.js: Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时环境。它允许开发者使用 JavaScript 在服务器端编写应用程序,而不仅限于在浏览器中运行 JavaScript。Node.js 提供了一系列内置的模块和 API,使得开发…

Python中数字比较与获取较大值的深入解析

目录 一、引言 二、Python数字类型概述 三、数字比较操作符 四、获取较大值的逻辑与实现 五、高级话题:使用内置函数和库 六、性能分析与优化 七、案例分析 八、总结与展望 一、引言 在编程世界中,数字的比较和获取较大值是基础且常见的操作。P…

四川景源畅信:抖音做直播有哪些人气品类?

随着互联网科技的飞速发展,抖音作为新兴的社交媒体平台,已经成为了人们日常生活中不可或缺的一部分。而在抖音平台上,直播功能更是吸引了大量的用户和观众。那么,在抖音上做直播有哪些人气品类呢?接下来,就让我们一起…

目标检测数据集 - 智能零售柜商品检测数据集下载「包含VOC、COCO、YOLO三种格式」

数据集介绍:智能零售柜商品检测数据集,真实智能零售柜监控场景采集高质量商品图片数据,数据集含常见智能零售柜商品图片,包括罐装饮料类、袋装零食类等等。数据标注标签包含 113 个商品类别;适用实际项目应用&#xff…

C++的爬山算法

爬山算法(Hill Climbing Algorithm)是一种局部搜索算法,它通过迭代搜索的方式寻找问题的局部最优解。在爬山过程中,算法总是选择当前状态邻域中最好(即函数值最大或最小)的状态作为下一个状态,直…

直播美颜插件详解:美颜SDK的技术原理

美颜SDK作为实现美颜功能的核心技术,已被广泛应用于各种直播和短视频应用中。那么,美颜SDK究竟是如何工作的?它背后的技术原理又是什么?本文将对直播美颜插件及其技术原理进行详解。 一、美颜SDK的概述 美颜SDK包含了各种图像处…

⌈ 传知代码 ⌋ 微表情识别系统

💛前情提要💛 本文是传知代码平台中的相关前沿知识与技术的分享~ 接下来我们即将进入一个全新的空间,对技术有一个全新的视角~ 本文所涉及所有资源均在传知代码平台可获取 以下的内容一定会让你对AI 赋能时代有一个颠覆性的认识哦&#x…