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

【深度学习】常见模型-卷积神经网络(Convolutional Neural Networks, CNN)

卷积神经网络(CNN)

概念简介

卷积神经网络(Convolutional Neural Networks, CNN)是一种专门用于处理数据具有网格状拓扑结构(如图像、语音)的深度学习模型。它通过卷积操作从输入数据中提取局部特征,并逐层构建更复杂的特征表示,广泛应用于图像分类、目标检测、语音识别等领域。


关键组成部分
  1. 卷积层(Convolutional Layer)

    • 使用卷积核(滤波器)在输入上滑动,提取局部特征。
    • 每个卷积核会学习一个特定的特征,例如图像的边缘、纹理等。
  2. 激活函数(Activation Function)

    • 常用 ReLU 激活函数,使模型具有非线性能力。
    • 如:ReLU(x)=max⁡(0,x)\text{ReLU}(x) = \max(0, x)ReLU(x)=max(0,x)
  3. 池化层(Pooling Layer)

    • 减少特征图的维度,降低计算复杂度,同时保留主要特征。
    • 常见方法:最大池化(Max Pooling)和平均池化(Average Pooling)。
  4. 全连接层(Fully Connected Layer, FC Layer)

    • 将提取到的特征展平并输入到全连接神经网络,用于分类或回归任务。
  5. 损失函数(Loss Function)

    • 衡量预测值与真实值之间的差异,指导模型更新参数。
    • 常用:交叉熵损失(分类)或均方误差(回归)。

CNN 工作流程
  1. 输入图像(如 28 × 28 的灰度图片)。
  2. 通过多层卷积操作提取局部特征。
  3. 经过池化层压缩特征图的尺寸。
  4. 多次迭代后,提取高层语义特征。
  5. 最后通过全连接层输出预测结果。

代码示例

以下是使用 Keras 实现简单 CNN 的示例:

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense

# 构建模型
model = Sequential([
    # 卷积层 + 激活函数
    Conv2D(filters=32, kernel_size=(3, 3), activation='relu', input_shape=(28, 28, 1)),
    # 池化层
    MaxPooling2D(pool_size=(2, 2)),

    # 第二个卷积层
    Conv2D(filters=64, kernel_size=(3, 3), activation='relu'),
    MaxPooling2D(pool_size=(2, 2)),

    # 展平层
    Flatten(),
    # 全连接层
    Dense(units=128, activation='relu'),
    # 输出层
    Dense(units=10, activation='softmax')  # 假设输出为 10 个类别
])

# 编译模型
model.compile(optimizer='adam',
              loss='categorical_crossentropy',
              metrics=['accuracy'])

# 查看模型结构
model.summary()

输出结果 

Model: "sequential"
_________________________________________________________________
 Layer (type)                Output Shape              Param #   
=================================================================
 conv2d (Conv2D)             (None, 26, 26, 32)        320       
                                                                 
 max_pooling2d (MaxPooling2  (None, 13, 13, 32)        0         
 D)                                                              
                                                                 
 conv2d_1 (Conv2D)           (None, 11, 11, 64)        18496     
                                                                 
 max_pooling2d_1 (MaxPoolin  (None, 5, 5, 64)          0         
 g2D)                                                            
                                                                 
 flatten (Flatten)           (None, 1600)              0         
                                                                 
 dense (Dense)               (None, 128)               204928    
                                                                 
 dense_1 (Dense)             (None, 10)                1290      
                                                                 
=================================================================
Total params: 225034 (879.04 KB)
Trainable params: 225034 (879.04 KB)
Non-trainable params: 0 (0.00 Byte)
_________________________________________________________________


特点
  • 参数共享:通过卷积核共享参数,降低模型复杂度。
  • 空间不变性:卷积操作具有平移不变性,适合图像任务。
  • 局部连接:仅连接相邻像素,减少计算负担。

应用场景
  1. 图像分类:如手写数字识别(MNIST 数据集)。
  2. 目标检测:如 YOLO、Faster R-CNN。
  3. 语义分割:如自动驾驶中的道路标记。
  4. 医疗图像处理:如肿瘤检测。
  5. 风格迁移:如图像艺术化处理。

优缺点

优点

  • 能有效提取图像、语音等数据的局部特征。
  • 参数少、计算高效。
  • 易于扩展和组合。

缺点

  • 对小数据集可能过拟合,需要数据增强或正则化。
  • 对时间序列数据不适用(适合使用 RNN 或 Transformer)。

CNN 是深度学习领域的一项革命性方法,其强大的特征提取能力让其成为许多视觉任务的首选工具。


http://www.kler.cn/a/517246.html

相关文章:

  • C++入门14——set与map的使用
  • Linux 常用命令——系统设置篇(保姆级说明)
  • Midjourney基础-常用修饰词+权重的用法大全
  • FPGA自分频产生的时钟如何使用?
  • 没有屋檐的房子-023粪堆旁边的舞蹈
  • Python collections模块中的 OrderedDict
  • 最新! 在 Linux上搭建Jenkins环境!
  • SQL注入漏洞之基础数据类型注入 字符 数字 搜索 XX 以及靶场实例哟
  • 信创产品测试包括哪些内容?有哪些常用的信创测试工具?
  • 校验收货地址是否超出配送范围实战3(day09)
  • C# volatile 使用详解
  • 如何解压rar格式文件?8种方法(Win/Mac/手机/网页端)
  • DBO朴素贝叶斯分类预测matlab代码
  • 【吉林乡镇界】面图层shp格式arcgis数据乡镇名称和编码wgs84无偏移内容测评
  • Redis 缓存穿透、雪崩和击穿问题及解决方案
  • JAVAweb学习日记(七) 分层解耦
  • 软件需求工程中的风险管理
  • C语言-----扫雷游戏
  • 一款专业通用开源的MES生产执行管理系统
  • Unity常用特性(Attribute)用法
  • 睡眠时间影响因素K-Means可视化分析+XGBoost预测
  • 第15个项目:一个有趣的豆瓣电影TOP爬虫
  • ISIS基础知识
  • 2024-2025自动驾驶技术演进与产业破局的深度实践——一名自动驾驶算法工程师的年度技术总结与行业洞察
  • 基于SpringBoot+Vue的智慧动物园管理系统的设计与实现
  • 智能运维分析决策系统:赋能数字化转型的智慧引擎