【AI】人工智能爆发推进器之卷积神经网络

news2024/11/18 1:35:52

目录

一、什么是卷积神经网络

1. 卷积层(Convolutional Layer)

2. 激活函数(Activation Function)

3. 池化层(Pooling Layer)

4. 全连接层(Fully Connected Layer)

5. 训练过程

二、卷积指什么

三、常见的应用场景

四、步骤举例

五、一个简单的例子


我们学习过,神经网络的出现,是人工智能复兴的推进器,那么卷积神经网络,可以认为是人工智能爆发的推进器了。

一、什么是卷积神经网络

卷积神经网络(Convolutional Neural Networks,简称CNN)是深度学习领域中的一种重要网络结构,特别适用于处理图像、视频等具有类似网格结构的数据。与传统的全连接神经网络相比,卷积神经网络通过引入卷积操作来捕捉输入数据的局部特征,从而更有效地学习和表示图像等复杂数据。

1. 卷积层(Convolutional Layer)

  • 卷积核(Kernel)或滤波器(Filter):这是卷积层中的核心部分,用于在输入数据上滑动并进行卷积运算。每个卷积核都可以学习捕捉特定的局部特征,比如边缘、角点等。
  • 特征图(Feature Map):卷积核在输入数据上滑动并进行卷积运算后,会生成一个特征图。这个特征图可以看作是输入数据中某种特定特征的响应图。
  • 权值共享(Weight Sharing):每个卷积核在输入数据上滑动时,其权值是固定的,不会随着位置的变化而改变。这样做可以大大减少网络中的参数数量。

2. 激活函数(Activation Function)

  • 卷积运算后通常会加上一个非线性激活函数,如ReLU(Rectified Linear Unit),以增加网络的非线性表达能力。

3. 池化层(Pooling Layer)

  • 池化层用于降低特征图的维度,从而减少计算量和过拟合风险。常见的池化操作有最大池化(Max Pooling)和平均池化(Average Pooling)。

4. 全连接层(Fully Connected Layer)

  • 在卷积神经网络的最后,通常会接上一些全连接层,用于对提取的特征进行整合和分类。

5. 训练过程

  • 卷积神经网络的训练通常使用反向传播算法和梯度下降法。训练过程中,网络会根据损失函数的反馈不断调整卷积核的参数,以更好地学习和表示输入数据。

总的来说,卷积神经网络通过局部感知、权值共享和池化等操作,能够以较少的参数高效地学习和表示图像等复杂数据。这使得它在计算机视觉、自然语言处理等领域取得了显著的成果。

二、卷积指什么

卷积神经网络中的“卷积”操作是这种网络结构的核心组成部分。

在信号处理或图像处理中,卷积操作可以被理解为一种在输入信号或图像上滑动一个小窗口,并在每个位置对该窗口内的数据和某个滤波器(或称卷积核)进行点积运算的过程。这个过程会在输入数据上产生一种特征映射,表示滤波器在输入数据的不同位置上的响应。

在卷积神经网络中,卷积操作被用来自动提取输入图像的特征。卷积层包含多个可学习的滤波器(或卷积核),每个滤波器都会在输入图像上执行卷积操作,生成一个特征映射。这样,卷积层就能够学习到输入图像的一些局部特征,例如边缘、角点等。

这种卷积操作的优点主要有两点:一是参数共享,即同一个滤波器会在输入图像的不同位置上使用,这大大降低了模型的参数数量;二是局部连接,即每个神经元只与输入图像的一个局部区域相连,这利用了图像的局部相关性,同时也减少了参数数量。

三、常见的应用场景

卷积神经网络在计算机视觉和图形处理领域有广泛的应用,以下是一些具体例子:

  1. 图像分类:这是卷积神经网络最常见的应用之一。给定一张输入图像,CNN 可以识别出图像中的对象,并将其分类到预定义的类别中。例如,CNN 可以用于识别图像中的猫、狗、汽车、建筑物等。
  2. 目标检测:在这个任务中,CNN 不仅需要识别图像中的对象,还需要定位对象在图像中的位置。这通常通过在图像上绘制边界框来实现。例如,在自动驾驶中,CNN 可以用于检测道路上的行人、车辆和其他障碍物。
  3. 语义分割:这个任务涉及将图像分割成不同的区域,每个区域对应于一个语义类别。例如,在一张街景图像中,CNN 可以将图像分割成道路、建筑、树木、天空等不同的区域。
  4. 人脸识别:CNN 可以用于人脸识别任务,包括人脸检测(确定图像中人脸的位置)和人脸验证(确定两张人脸图像是否属于同一人)。
  5. 姿态估计:这个任务涉及识别图像中人体的关键点(如关节),并估计人体的姿态。这在动作识别、体育分析等领域有应用。
  6. 图像生成:虽然卷积神经网络通常用于分析图像,但它们也可以用于生成新的图像。例如,在风格迁移任务中,CNN 可以将一个图像的内容与另一个图像的风格结合起来,生成具有新风格的图像。
  7. 超分辨率:CNN 可以用于提高图像的分辨率。给定一个低分辨率的图像,CNN 可以学习生成一个高分辨率的版本。
  8. 视频分析:虽然卷积神经网络主要用于处理静态图像,但它们也可以扩展到处理视频数据。例如,CNN 可以用于视频中的动作识别、目标跟踪等任务。

这些只是卷积神经网络在图形处理领域的一些应用示例。

大家估计能够理解了,实际上,网络鉴黄,比如不良图片的识别,卷积神经网络,也是大显身手的。

卷积神经网络它能够通过学习从原始像素到抽象概念的映射,自动提取图像中的特征。在图像分类任务中,CNN可以表现出色,包括识别色情图片。

色情图片的鉴别是一个具有挑战性的任务,因为色情内容通常涉及多种复杂的视觉模式。然而,卷积神经网络具有强大的特征提取能力,可以学习识别这些模式。通过训练CNN模型使用大量的标记数据(包含色情和非色情图片),模型可以学会区分色情和非色情内容。

四、步骤举例

简单来说,就是要:

第一步:卷积,即局部监测。将图片每一个像素点的数值,列出为矩阵。

第二步:池化,特征抽样,即缩小图片。

然后重复第一、第二步(具体重复多少次,人为决定)。

第三步:全连接,把第一、二步的结果,输入到全连接的神经网络中,最后输出结果。

例如,要查找图片中的某个特征值,就移动窗口,对比卷积的值就可以了。每移动一次,也叫做产生了一个神经元。

五、一个简单的例子

下面是一个简单的使用卷积神经网络(CNN)进行图像分类的Python代码片段案例。这个案例使用了Keras库来构建和训练一个简单的CNN模型,用于对MNIST手写数字数据集进行分类。

import tensorflow as tf  
from tensorflow.keras.datasets import mnist  
from tensorflow.keras.models import Sequential  
from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense  
from tensorflow.keras.utils import to_categorical  
  
# 加载MNIST数据集  
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()  
  
# 数据预处理  
train_images = train_images.reshape((60000, 28, 28, 1)) / 255.0  
test_images = test_images.reshape((10000, 28, 28, 1)) / 255.0  
train_labels = to_categorical(train_labels)  
test_labels = to_categorical(test_labels)  
  
# 构建CNN模型  
model = Sequential()  
model.add(Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)))  
model.add(MaxPooling2D((2, 2)))  
model.add(Conv2D(64, (3, 3), activation='relu'))  
model.add(MaxPooling2D((2, 2)))  
model.add(Flatten())  
model.add(Dense(64, activation='relu'))  
model.add(Dense(10, activation='softmax'))  
  
# 编译模型  
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])  
  
# 训练模型  
model.fit(train_images, train_labels, epochs=5, batch_size=64)  
  
# 评估模型  
test_loss, test_acc = model.evaluate(test_images, test_labels)  
print('Test Accuracy:', test_acc)

这个代码片段首先加载了MNIST数据集,并对图像数据进行了预处理。然后,它构建了一个简单的CNN模型,包括两个卷积层、两个最大池化层、一个全连接层和一个输出层。模型使用Adam优化器和分类交叉熵损失函数进行编译。最后,它使用训练数据对模型进行训练,并在测试数据上评估模型的性能。

(本系列还将继续)

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

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

相关文章

STM32 cubeMX 光敏电阻AD转化实验

文章代码使用 HAL 库。 文章目录 前言一、光敏电阻介绍二、光敏电阻原理图解析三、ADC采样介绍1. 工作原理:2. ADC精度: 四、STM32 cubeMX配置ADC采样五、代码编写总结 前言 实验开发板:STM32F051K8。所需软件:keil5 ,…

从GPU到屏幕渲染

一、Graphics Processing Unit GPU为图形处理单元; 一般将GPU与CPU放在一起对比: CPU的强项是做逻辑运算,GPU的强项是做数学运算和图形渲染; 双方都是运算处理器,从结构上来讲都包含运算单元ALU、控制单元Control和缓…

【笔记】Spring的事务是如何回滚的/Spring的事务管理是如何实现的

Spring的事务是如何回滚的/Spring的事务管理是如何实现的 数据库(Spring事务) 1、建立连接、开启事务(准备工作) 2、进行sql操作(业务逻辑) 3、执行成功,则commit; 执行失败&#x…

【LLM】Qwen学习

安装依赖 pip install transformers4.32.0 pip install accelerate pip install tiktoken pip install einops pip install transformers_stream_generator0.0.4 pip install scipy pip install auto-gptq optimum使用 参见官方介绍 模型 模型结构 QwenBlock 打印模型 ##…

sparkstreamnig实时处理入门

1.2 SparkStreaming实时处理入门 1.2.1 工程创建 导入maven依赖 <dependency><groupId>org.apache.spark</groupId><artifactId>spark-streaming_2.12</artifactId><version>3.1.2</version> </dependency> <dependency…

K8S的二进制部署

K8S的源码包部署 搭建准备&#xff1a; k8smaster01&#xff1a;20.0.0.32 kube-apiserver kube-controller-manager kube-scheduler etcdk8smaster02&#xff1a;20.0.0.33 kube-apiserver kube-controller-manager kube-scheduler node节点01&#xff1a;20.0.0.34 …

Jenkins集成allure测试报告

前言 Allure框架是一个功能强大的自动化测试报告工具&#xff0c;不仅支持多种编程语言&#xff0c;而且能够完美的与各种集成工具结合&#xff0c;包括Jenkins&#xff0c;TeamCity&#xff0c;Bamboo&#xff0c;Maven等等&#xff0c;因此受到了很多测试人员的青睐&#xff…

Redis7快速入门

Docker安装Redis 指定密码&#xff1a; docker run --restartalways -p 6379:6379 --name redis -d redis:7.0.12 --requirepass zhangdapeng520不指定密码&#xff1a; docker run --restartalways -p 6379:6379 --name redis -d redis:7.0.12在真实的开发中&#xff0c;如…

【c++】入门1

c关键字 命名空间 在C/C中&#xff0c;变量、函数和后面要学到的类都是大量存在的&#xff0c;这些变量、函数和类的名称将都存在于全局作用域中&#xff0c;可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化&#xff0c;以避免命名冲突或名字污染&#xff…

C/C++图形化编程(1)

归纳编程学习的感悟&#xff0c; 记录奋斗路上的点滴&#xff0c; 希望能帮到一样刻苦的你&#xff01; 如有不足欢迎指正&#xff01; 共同学习交流&#xff01; &#x1f30e;欢迎各位→点赞 &#x1f44d; 收藏⭐ 留言​&#x1f4dd; 信念是一把无坚不摧的利刃&#xff01…

每日一题-----逆序字符串

大家好我是Beilef&#xff0c;在一个美好的下午我意外接触到编程并且产生了兴趣&#xff0c;哈哈我要努力成为一个跨界者&#xff0c;让我们一起加油吧O(∩_∩)O 文章目录 目录 文章目录 前言 大家好请上车 一、逆序字符串 题⽬描述&#xff1a; 输⼊⼀个字符串&#xff0c;写…

Node.js版本对比

目录 1. node版本与Npm版本对照表 2. node版本与node-sass版本对照表 3. node-sass与sass-loader版本对照表 1. node版本与Npm版本对照表 以往的版本 | Node.js 下面显示最新的对应内容&#xff0c;如果需要查找历史版本&#xff0c;可以进入上面的页面查询 VersionLTSDateV8np…

使用CRA(create-react-app)初始化一个完整的项目环境(该初始化项目已上传到本文章的资源)

1. 整理项目结构&#xff0c;项目目录结构大致划分如下&#xff1a; 2. 安装sass 安装sass开发环境, 注意&#xff1a;使用的文件后缀名要用.scssnpm i sass -D3. 安装Ant Design npm i antd --save 4. 配置基础路由Router&#xff08;具体可参考ReactRouter使用详解&#x…

Kerberos安装教程与命令详解(超详细)

文章目录 前言一、安装准备1. 搭建集群2. 软件包介绍 二、使用shell脚本一键安装1. 复制脚本2. 增加执行权限3. 执行脚本 三、kdb5_util命令1. 简介2. 可用选项和命令的解释3. 常见命令及其说明4. 示例用法 四、kadmin命令1. 简介2. 可用选项和命令的解释3. 常见命令及其说明4.…

渗透测试——1.4主动扫描

主动扫描是别人可以发觉的情报收集 一、nmap的使用 1.nmap<目标主机>:最常用的扫描方式 有nmap版本、扫描时间 “host is up”表示目标主机处于开机状态、“not shown”未开放端口 有四个端口是开的&#xff08;135.139.445.912&#xff09; 2.nmap -p<端口范围…

折叠屏,移动办公的第二战场

当下的移动办公&#xff0c;正在转换战场。 从PC端到移动端&#xff0c;大屏链接小屏&#xff0c;协作模式从单人到团队&#xff0c;移动办公领域一直在发展和自我更新&#xff0c;这也是硬件和软件企业共同开辟的“第一战场”。 如今&#xff0c;折叠屏带来了新形态&#xf…

Kafka、RocketMQ、RabbitMQ消息丢失可能存在的地方,以及解决方案

这里主要对比&#xff1a;Kafka、RocketMQ、RabbitMQ 介绍一下消息生产、存储、消费三者的架构形式。 消息丢失可能存在的场景&#xff1a; 情况一&#xff1a; 生产者发送给MQ的过程消息丢失 在写消息的过程中因为网络的原因&#xff0c;还没到mq消息就丢失了&#xff1b;或…

vue3+elementPlus+cascader动态加载封装自定义组件+v-model指令实现父子通信

文章目录 select普通操作 &#xff08;1&#xff09;cascader操作&#xff08;2&#xff09; select普通操作 &#xff08;1&#xff09; 搜索条件需求&#xff1a;接口入参需要houseId&#xff0c;但是要先选择完楼栋&#xff0c;再选择单元&#xff0c;最后选择房屋 如图&a…

vue2、vue3状态管理之vuex、pinia

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、状态管理之vuex1.1 State调用&#xff1a;1.2 Mutation在vuex中定义&#xff1a;在组件中使用&#xff1a; 1.3 Action在vuex中定义&#xff1a;将上面的减…

k8s是什么

生么是k8s&#xff1a; Kubernetes:8个字母省略&#xff0c;就是k8s 自动部署&#xff0c;自动扩展和管理容器化部署的应用程序的一个开源系统、 k8s是负责自动化运维管理多个容器化程序的集群&#xff0c;是一个功能强大的容器编排工具。 分布式和集群化的分布式进行容器管…