深度学习计算机视觉

第2章深度学习和神经网络

激活函数

sigmoid/Logistic 函数

  • 特点
    • 输出可解释为概率,但存在 “饱和区”(输入绝对值大时梯度趋近于 0),导致梯度消失。
    • 输出非零中心化,可能影响后续层学习。
  • 应用:二元分类输出层,如逻辑回归、神经网络二分类Fast类怎么加速的?:任务。
softmax 函数
  • 特点
    • 适用于多分类问题(如图像分类 10 个类别)。
    • 与交叉熵损失函数结合时,梯度计算更稳定。
  • 应用:多分类任务的输出层,如 ImageNet 图像分类。

修正线性单元(ReLU)

  • 特点
    • 解决梯度消失问题(正数区域梯度为 1,更新效率高)。
    • 计算速度快,缓解过拟合(稀疏激活特性)。
    • 缺点:负数区域输出恒为 0,可能导致 “神经元死亡”(无法更新)。
  • 应用:几乎所有神经网络的隐藏层,如 CNN、RNN。
Leaky ReLU
  • 特点
    • 负数区域梯度非零,解决 ReLU 的 “死亡” 问题。
    • 超参数 α 可调整,但实际中常取固定值,效果优于 ReLU。
  • 应用:替代 ReLU 用于隐藏层,尤其在对负数输入敏感的场景。

优化算法

        优化是通过调整模型参数(如权重和偏置),使误差函数(损失函数)最小化的过程。其核心是找到一组参数,使得模型预测值与真实值的差距最小。深度学习中,优化算法通常基于梯度下降原理,通过迭代更新参数来逼近最优解。

梯度下降算法及其变体
1. 批梯度下降(Batch Gradient Descent, BGD)
  • 原理:使用整个训练集计算梯度并更新参数。
  • 优点:梯度计算稳定,收敛路径平滑,易找到全局最优解。
  • 缺点
    • 训练集大时计算成本高,内存需求大。
    • 迭代速度慢,不适用于大规模数据。
  • 应用场景:小规模数据集或计算资源充足的场景。
2. 随机梯度下降(Stochastic Gradient Descent, SGD)
  • 原理:每次使用一个训练样本计算梯度并更新参数。
  • 优点
    • 计算效率高,每次迭代仅需一个样本。
    • 随机性强,易跳出局部最优,接近全局最优。
  • 缺点
    • 梯度噪声大,收敛路径震荡,需小学习率稳定。
    • 无法利用矩阵运算加速,训练速度可能慢于批量处理。
  • 应用场景:大规模数据集或在线学习场景。
3. 小批梯度下降(Mini-Batch Gradient Descent, MB-GD)
  • 原理:将训练集划分为小批量(Mini-Batch),每次用一个批量计算梯度
  • 优点
    • 结合 BGD 和 SGD 的优势,兼顾计算效率和稳定性。
    • 支持矩阵运算加速,训练速度快。
  • 缺点
    • 超参数(批量大小)需调优,过小易受噪声影响,过大内存压力大。
  • 应用场景:默认优化方式,适用于大多数深度学习任务。
方法更新粒度计算复杂度优点缺点
批量梯度下降 (BGD)整个训练集优化稳定,适合小规模数据 计算开销大,不适合大规模数据集
随机梯度下降 (SGD)单个样本实现简单,收敛快接近全局最优,适合大规模数据集优化过程不稳定,可能震荡,收敛不精确
小批量梯度下降 (Mini-Batch GD)小批量样本 (K 个样本)平衡效率和稳定性,适合大规模数据集噪声仍然存在,需要调节小批量大小

        勿混淆batch_sizce和cpoch(训练轮数)的概念。当训练集中的所有数据都被训练了一 次时,意味着完成了一个epoch。batch指要计算梯度的那组训练样本的数量。例如, 如果训练数据集中有1000个样本,设置batch_size=256,则epoch 1=batch1(256 个样本)+batch2(256个样本)+batch3(256个样本)+batch4(232个样本)。 

误差函数

一、误差函数的定义

        误差函数(Error Function),也称成本函数(Cost Function)或损失函数(Loss Function),用于衡量神经网络预测值与真实值之间的差异。其核心目标是量化模型的 “错误程度”,为模型优化提供方向(如梯度下降的优化目标)。

二、误差函数的意义
  1. 优化方向指引:误差函数值越小,模型预测越接近真实值,优化算法(如梯度下降)通过最小化误差函数更新模型参数。
  2. 模型评估标准:作为衡量模型性能的量化指标,指导超参数调优和架构设计。
三、常见误差函数类型及应用
1. #均方误差(Mean Squared Error, MSE)
  • 公式其中,(hat{y}_i) 为预测值,(y_i) 为真实值,N 为样本数。
  • 适用场景:回归问题(如房价预测、温度预测)。
  • 优点:数学性质良好,导数计算简单,梯度方向明确。
  • 缺点:对异常值敏感(平方项放大极端误差)。
  • 使用条件:
  • 任务类型为回归问题

    • 输出为连续数值,而非离散类别。例如:
      • 房价预测(输出价格数值)、温度预测(输出具体温度值)、股票价格走势预测等。
    • 核心要求:预测值与真实值的差异可通过数值距离衡量,且数值差异的大小具有实际意义。
  • 输出层无需激活函数或使用线性激活

    • 回归任务的输出层通常不使用激活函数,或仅使用线性激活(如恒等函数),直接输出连续值。
    • 若使用非线性激活(如 sigmoid),需确保输出范围符合任务需求(如温度预测中 sigmoid 将输出限制在 (0,1),显然不合理)。
  • 数据分布相对均匀,异常值较少

    • MSE 对异常值敏感(平方项放大极端误差),若数据中存在显著异常值(如房价数据中混入豪宅价格),可能导致模型过度拟合异常样本。
    • 解决方案:预处理时去除异常值,或改用平均绝对误差(MAE)。
2. #交叉熵损失(Cross-Entropy Loss)
  • 公式 其中,M 为类别数,(y_{i,j}) 为真实类别概率(one-hot 编码),(hat{y}_{i,j}) 为预测概率。
  • 适用场景:分类问题(如图像分类、情感分析)。
  • 优点:梯度稳定,当预测概率接近真实标签时,梯度逐渐减小,训练过程更平滑。
  • 示例:多分类任务中,配合 softmax 激活函数,输出类别概率分布。
  • 使用条件:
  • 任务类型为分类问题

    • 输出为离散类别标签,而非连续数值。例如:
      • 图像分类(区分 “猫”“狗”“鸟” 等类别)、手写数字识别(0-9 类别)、情感分析(正面 / 负面)。
    • 核心要求:模型需预测样本属于各分类的概率,而非具体数值。
  • 输出层激活函数匹配分类场景

    • 多分类任务:使用softmax激活函数,将输出转换为概率分布(各分类概率和为 1),如 ImageNet 图像分类。
    • 二分类任务:使用sigmoid激活函数,输出属于正类的概率(范围 [0,1]),如垃圾邮件检测。
  • 标签需为 one-hot 编码或概率分布

    • one-hot 编码:真实标签转换为仅目标类别为 1、其余为 0 的向量。例如,三分类中真实类别为第 2 类时,标签为[0, 1, 0]
    • 软标签场景:若标签本身是概率分布(如教师模型的输出),交叉熵可衡量预测分布与软标签的差异(如知识蒸馏)。
  • 模型输出非归一化的 logits

    • 交叉熵损失的输入是神经网络前向传播的原始输出(logits,未经过 softmax/sigmoid 归一化),损失函数内部会自动处理概率计算。
    • 错误示例:若将 softmax 的输出再次输入交叉熵,会导致梯度计算错误,必须直接使用 logits 作为损失函数输入。
  • 数据不平衡场景需额外处理

    • 交叉熵损失对类别不平衡敏感(如少数类样本占比不足 1%),可能导致模型偏向多数类。
    • 解决方案:使用加权交叉熵(对少数类增加权重)、数据增强(扩充少数类样本)或焦点损失(Focal Loss)。
3. 平均绝对误差(Mean Absolute Error, MAE)
  • 公式
  • 特点:对异常值鲁棒性优于 MSE,但导数不光滑,优化效率略低。
四、误差函数的选择原则
  1. 任务类型
    • 回归问题:首选 MSE,次选 MAE。
    • 分类问题:多分类用交叉熵 + softmax,二分类用交叉熵 + sigmoid。
  2. 数据特性
    • 含异常值的数据:MAE 优于 MSE。
    • 概率输出需求:交叉熵更适合(如需要预测类别概率)。
  3. 数学性质
    • 交叉熵的梯度特性更适合分类任务,避免 sigmoid/tanh 的梯度消失问题。
五、关键总结

        误差函数是深度学习模型优化的核心目标,其选择直接影响模型的训练效率和预测性能。均方误差和交叉熵分别作为回归和分类任务的标配函数,而理解其数学原理(如梯度计算、对异常值的敏感性)是调优模型的基础。

第3章卷积神经网络

CNN基本组件

一、卷积层(Convolutional Layer)

核心作用:通过滑动卷积核对输入图像进行特征提取,捕捉图像中的局部模式(如边缘、纹理等)。

  1. 工作原理
    • 卷积操作:卷积核在输入图像上按指定步幅滑动,对每个局部区域进行加权求和,生成特征图。
    • 激活函数:通常在卷积后应用 ReLU 等非线性激活函数,引入非线性能力,增强网络表达力。
  2. 关键超参数
    • 滤波器数量:决定输出特征图的深度,数量越多,提取的特征越丰富。
    • 核大小:常见为 3×3、5×5,小核可提取精细特征,大核捕捉全局模式。
    • 步幅(Stride):控制卷积核滑动的步长,步幅越大,输出特征图尺寸越小。
    • 填充(Padding):通过在图像边缘补零,保持特征图尺寸(如 “same” 填充)或缩小尺寸(如 “valid” 填充)。
    • 公式:
二、池化层(Pooling Layer)

核心作用:对特征图进行下采样,减少参数数量和计算复杂度,同时保留关键特征。

  1. 常见类型
    • 最大池化(Max Pooling):提取局部区域的最大值,保留显著特征,应用最广泛。
    • 平均池化(Average Pooling):计算局部区域的平均值,平滑特征,减少噪声。
  2. 关键参数
    • 池化大小:如 2×2、3×3,决定下采样的比例(如 2×2 池化使特征图尺寸减半)。
    • 步幅:通常与池化大小相同,确保无重叠下采样。
维度卷积层(Convolutional Layer)池化层(Pooling Layer)
核心目标提取图像局部特征(如边缘、纹理、形状等),构建层次化特征表示。对特征图下采样,减少参数数量与计算复杂度,保留关键特征。
特征处理通过卷积核滑动窗口提取空间特征,逐层抽象从低级到高级的语义信息。压缩特征图尺寸,降低空间维度,增强特征的平移不变性。
数学操作加权求和:输入图像与卷积核进行滑动卷积,生成特征图。下采样:对局部窗口内的像素取最大值(最大池化)或平均值(平均池化)。
可学习参数有(卷积核权重、偏置),需通过训练优化。无(仅执行固定逻辑操作,如取最大值)。
关键参数- 滤波器数量:决定输出特征图深度。
- 核大小:常见 3×3、5×5,控制局部感知范围。
- 步幅(Stride)、填充(Padding):调整特征图尺寸。
- 池化大小:常见 2×2、3×3,决定下采样比例。
- 步幅:通常与池化大小相同(如 2×2 池化搭配步幅 2)。
特征抽象浅层提取边缘、线条等低级特征,深层组合为语义概念(如 “车轮”“人脸”)。不改变特征语义,仅通过降维增强特征的鲁棒性(如对图像平移、缩放的不变性)。
参数与计算量增加参数数量(如 3×3 卷积核 + 64 滤波器,输入 3 通道时参数为 (3×3×3×64=1728)。减少参数与计算量(如 2×2 最大池化使特征图尺寸减半,参数减少 75%)。
过拟合控制通过权值共享与局部连接缓解过拟合,但深层网络仍需结合 Dropout 等技术。直接通过降维减少模型复杂度,间接抑制过拟合。
典型应用位置通常位于网络前端与中部,逐层堆叠以提取多层特征。常紧跟在卷积层之后,每 1-2 个卷积层后添加一次池化。
三、全连接层(Fully Connected Layer)

核心作用:将提取的特征整合,通过权重矩阵映射到分类空间,实现最终分类。

  1. 结构特点
    • 层中每个神经元与上一层所有神经元相连,将多维特征压缩为一维向量。
    • 输出层常搭配 Softmax 激活函数,生成各类别的概率分布。
  2. 应用场景
    • 位于网络末端,完成特征整合与分类决策,如 ImageNet 图像分类任务中输出 1000 类的概率。

添加dropout层以避免过拟合

一、过拟合定义

        过拟合指模型在训练集上表现优异,但在未见过的验证集或测试集上泛化能力差,本质是模型 “记住” 了训练数据的细节特征,而非学习通用模式。例如,复杂网络可能过度拟合训练数据中的噪声或特殊样本,导致在新数据上预测失效。

二、dropout 层定义

        dropout 是一种正则化技术,在训练过程中以指定概率(舍弃率p随机关闭神经元,迫使网络学习更鲁棒的特征。被关闭的神经元在当前迭代中不参与前向传播和反向更新,相当于训练多个 “子网络” 的集成,提升模型泛化能力。

三、dropout 层的重要意义
  1. 减少神经元依赖:防止神经元间形成固定协同适应关系(如某组神经元仅在特定输入下激活),迫使网络学习更独立的特征表示。
  2. 类比解释:如用杠铃锻炼时绑住单臂,迫使双臂均衡发力;dropout 通过随机丢弃神经元,避免某部分神经元主导预测,使网络整体学习更均衡。
  3. 抗噪声能力:通过随机丢弃,模型对输入噪声的敏感度降低,减少对特定样本的依赖。
四、dropout 层在 CNN 架构中的位置
  1. 典型位置:通常添加在全连接层(FC)之间,或扁平化(Flatten)操作之后。因全连接层参数多、易过拟合,dropout 在此处效果显著。
  2. Keras 实现
    from keras.layers import Dropout
    model.add(Dropout(rate=0.3))  # 舍弃率0.3,即30%神经元被随机关闭
    
  3. 参数调优:舍弃率rate常见取值 0.3~0.5,过拟合严重时可增大,但过高会导致信息丢失(如rate=0.5)。
五、核心总结

        dropout 通过随机丢弃神经元打破网络的固定依赖模式,是缓解过拟合的有效手段。在 CNN 中,其与 L2 正则化、数据增强等技术结合使用时,可显著提升模型在未知数据上的泛化能力。

第4章构造DL项目以及超参数调优

正则化技术

        正则化技术用于缓解神经网络的过拟合问题,通过限制模型复杂度或扩充训练数据,提升模型的泛化能力。

一、L2 正则化

1. 定义与原理 通过在误差函数中添加正则项,强制权重值趋近于 0,从而简化模型结构,避免过拟合。

其中,λ为正则化参数,m 为样本数,(|w|)为权重的 L2 范数

2. 作用机制 

  • 权重更新时,正则项导数促使权重值减小(即 “权重衰减”),削弱不重要特征的影响。
  • 简化网络结构:权重趋近于 0 时,部分神经元作用被抑制,等效于减少网络复杂度。

3. 实现与调优

  • 在 Keras 中,通过kernel_regularizer=regularizers.l2(λ)添加到层中。
  • λ为超参数,默认值常有效,过拟合时可增大 λ 以增强正则化强度。
二、Dropout 层

1. 定义与原理 训练时以一定概率(舍弃率p)随机关闭神经元,迫使网络学习更鲁棒的特征,减少神经元间的依赖。

2. 作用机制

  • 每次迭代中,神经元以概率p被临时丢弃,剩余神经元需独立学习特征,避免单一神经元主导预测。
  • 等效于集成多个 “子网络”,提升模型泛化能力。

3. 实现与调优

  • 在 Keras 中,通过Dropout(p)添加到层间,典型p取值为 0.3~0.5。
  • 过拟合时增大p,但过高会导致信息丢失,需结合验证集调整。
三、数据增强

1. 定义与原理 通过对原始图像进行几何变换或像素调整,生成新训练样本,扩充数据集多样性,避免模型记忆特定样本特征。

2. 常用技术

  • 几何变换:翻转、旋转、缩放、裁剪。
  • 像素调整:亮度变化、对比度调整、噪声添加。
  • 示例:对数字图像旋转或翻转后,仍保留类别标签(如 “6” 旋转后仍为 “6”)。

3. 实现与作用

  • 在 Keras 中,通过ImageDataGenerator配置变换参数(如horizontal_flip=True)。
  • 作为 “廉价” 的正则化方法,无需额外标注数据,直接提升模型对样本变异的适应性。
四、核心总结
技术核心思想优势调优关键点
L2 正则化强制权重衰减,简化网络计算高效,不改变网络结构λ 需根据过拟合程度调整
Dropout随机丢弃神经元,减少依赖避免复杂协同适应舍弃率p通常 0.3~0.5
数据增强扩充训练数据多样性无额外成本,

批量归一化

一、协变量偏移问题
  1. 定义:当神经网络训练时,隐藏层输入的分布随参数更新而不断变化,导致后续层需持续适应新分布,这种现象称为协变量偏移
  2. 影响
    • 深层网络中,输入分布的变化会导致梯度消失或爆炸,训练收敛缓慢。
    • 模型需频繁调整参数以适应新分布,降低训练效率。
二、BN 的工作原理
  1. 核心目标:通过标准化隐藏层输入,减少内部协变量偏移,使各层输入分布稳定。
  2. 数学步骤
  3. 关键作用
    • 使输入分布稳定在均值 0、方差 1 附近,加速梯度下降收敛。
    • Γ和β允许网络自主调整最优分布,避免标准化抑制特征表达。
三、BN 在 Keras 中的实现
  1. 添加方式:在卷积层或全连接层后插入BatchNormalization层。
    from keras.layers import BatchNormalization
    model.add(Conv2D(64, kernel_size=3, ...))
    model.add(BatchNormalization())  # 对卷积输出进行归一化
    model.add(Activation('relu'))
    
  2. 参数说明
    • 无需手动设置超参数,Γ和β由网络自动学习。
    • 训练时计算批量均值和方差,推理时使用全局均值和方差(基于训练集统计)。
四、BN 的核心优势
  1. 加速训练:稳定输入分布,允许使用更大学习率,减少迭代次数。
  2. 提升泛化能力:类似正则化,降低模型对特定输入的依赖,减少过拟合。
  3. 支持更深网络:缓解深层网络的梯度问题,使训练极深层网络成为可能(如 ResNet)。
五、总结

批量归一化通过标准化隐藏层输入,解决了神经网络中的协变量偏移问题,是现代深度学习架构(如 CNN、ResNet)的关键组件。其数学原理简洁高效,实现方便,已成为提升模型性能的标配技术。

第7章使用R-CNN、SSD、YOLO进行目标检测

R-CNN

R-CNN不是通过深度神经网络来定位的单个端到端系统,更像是多个独立算法的组合。

缺点:

  1. 目标检测非常缓慢,2000个RoI(Region of Interest)。

  2. 训练是多级独立,不共享计算资源。

  3. 训练在时间和空间上都很昂贵。

R-CNN模型结构

R-CNN包括以下四个步骤:

  1. 为输入图像使用选择性搜索来选取多个高质量的提议区域。 这些提议区域通常是在多个尺度下选取的,并具有不同的形状和大小。每个提议区域都将被标注类别和真实边界框。

  2. 变形+提特征: 将每(截个候选区域变形后输入预训练CNN断输出层)提取固定长度的特征向量。
  3. 分类: 用每个类别的SVM分类器,基于特征向量判断候选区域是否包含该类物体。
  4. 定位: 用回归模型,基于特征向量精调候选区域的边界框位置和大小。

在类别预测和边框预测的时候:

  • 累积多张图片的特征数据(通常5000张图片生成数百GB特征文件)。

  • 使用liblinear等优化器一次性求解全局最优权重。

Fast R-CNN

  1. 整图特征提取

    • 输入图像(如 600×800×3)通过CNN主干网络(如VGG16)
    • 输出一张共享特征图(如 37×50×512,尺寸缩小16倍)
  2. 候选区域映射

    • 将Selective Search生成的候选框坐标(原图坐标系)映射到特征图坐标系
    • 映射公式:特征图坐标 = 原图坐标 / 下采样比例
    • 示例:原图候选框 [160, 240, 320, 480] → 特征图区域 [10, 15, 20, 30]
  3. 放在ROI Pooling层,经过全连接层后进行分类和回归
算法核心突破遗留问题
R-CNN首用CNN+候选区域速度慢、训练复杂
Fast R-CNN特征共享(一张共享特征图)+对每个候选框图做ROI Pooling候选区域生成仍用CPU
Faster R-CNNRPN(Region Proposal Network)替代Selective Search(选择高质量的提议区域真正端到端

SSD

一、SSD 架构总览
  1. 设计目标:针对目标检测任务,提出单阶段 (One-Stage) 检测框架,相比两阶段 (Two-Stage) 方法(如 R-CNN)更高效,兼顾速度与精度。
  2. 核心思想:通过多尺度特征图直接预测目标边界框和类别避免生成候选区域的耗时步骤。
  3. 工作流程:1输入图像骨干网络vgg等进行深度特征提取生成一个基础特征图2额外添加一些卷积层来生成更多、更深的特征图用于检测。5生成默认锚框4预测概率和框并NMS处理
二、SSD 关键组件
1. 基础网络
  • 基于经典 CNN 架构(如 VGG、ResNet)作为骨干网络,提取基础特征。
  • 示例:使用 VGG16 作为基础网络,移除全连接层,保留卷积层用于特征提取。
2. 多尺度特征层
  • 机制:利用骨干网络不同深度的特征图,构建多尺度检测层(如 8×8、4×4 等尺寸),分别检测不同大小的目标。
    • 浅层特征图(尺寸大):检测小目标。
    • 深层特征图(尺寸小):检测大目标。
  • 优势:无需生成候选区域,直接在各尺度特征图上预测边界框和类别概率,提升检测速度。
3. 边界框与类别预测
  • 每个特征图的每个位置预设多个锚框 (Anchor Boxes),对应不同尺寸和宽高比。
  • 对每个锚框,同时预测:
    • 边界框偏移量(相对于锚框的调整)。
    • 类别概率(属于各目标类别的概率)。
4. 非极大值抑制 (NMS)
  • 处理同一目标的多个重叠预测框,保留置信度最高的框,去除冗余。
  • 步骤:按置信度排序→迭代删除与当前最高置信度框重叠超过阈值的框。
框架阶段数候选区域生成检测速度精度
R-CNN 系列两阶段有(如 Selective Search)
SSD单阶段快(如 30 FPS)中等(优于 YOLOv1,略低于 Faster R-CNN)
    核心总结
    • SSD 通过单阶段多尺度检测,避免候选区域生成,大幅提升检测效率,适用于对实时性要求高的场景(如自动驾驶、监控系统)。
    • 多尺度特征层设计是 SSD 的核心创新,使模型能同时处理不同大小的目标,而 NMS 则确保检测结果的准确性。
    • 相比两阶段方法,SSD 牺牲部分精度换取速度,是工程落地中性价比高的选择。

    YOLO


    常识

    卷积作用:提取特征、共享参数、平移不变性、降维

    网络为什么要许多层卷积

    层度加深,卷积核减小带来的好处

    卷积核好处

    卷积层带来的好处(浅层时?加深后?)

    感受野?

    层数和感受野的关系:层数增加 → 感受野扩大,深层需要大感受野以理解全局语义,浅层需要小感受野保留局部细节

    为什么倾向使用卷积层而不使用全连接层?:大幅降低参数量、保留空间结构信息,破坏空间拓扑关系、高效提取平移不变特征,同一物体出现在不同位置需重新学习参数。

    R-CNN工作流程,要知道它是两阶段窗口,为什么是两阶段,两阶段的特点,和优点(检测精确度高、两阶段)。

    Fast类怎么加速的?

    SSD工作流程、(工作原理)

    yolo核心思想、(工作原理)、不考工作流程、问有多少个边界框需要去预测?还要知道预测类别。

    第5章先进的CNN架构的优缺点:对这些网络架构要了解(核心构建)?他们的优缺点?带来了什么样的观念上的改变?

    “Same” Padding 的目标是让卷积操作后的输出特征图与输入特征图的大小保持一致。具体来说,如果卷积核大小是 K×K,步长为 1,那么“same” padding 的填充大小 P 通常满足:(K-1)/2这样填充后,输出特征图的大小就会与输入特征图的大小相同。

    为什么倾向使用卷积层而不使用全连接层?

            1大幅降低参数量、2保留空间结构信息,破坏空间拓扑关系、3高效提取平移不变特征,同一物体出现在不同位置需重新学习参数。

    感受野?

            在输入图像(或特征图)上,某个特定层(通常是卷积层或池化层)的单个输出单元(神经元)“看到”或“感受”到的区域大小。

            感受野就是这个输出单元的值,是由输入图像上多大范围(区域)内的原始像素(或前一层的特征)计算得来的。

    卷积作用

    提取特征、共享参数、平移不变性降维。

    1. 特征分层提取:通过滑动窗口捕捉图像局部特征(如边缘、纹理),浅层卷积学习基础元素(如直线),深层组合成复杂结构(如车轮、人脸)。
    2. 保留空间信息:直接处理图像矩阵,维持像素间位置关系,避免全连接层的扁平化信息丢失。
    3. 参数共享:局部连接和权值共享减少参数数量,例如 3×3 卷积核仅需 9 个参数即可处理任意尺寸区域。

    网络为何需要多层卷积

    1. 从简单到复杂、从局部到全局地学习特征。
      • 浅层卷积学习边缘、角点等低级特征,深层逐步组合为物体部件(如眼睛、车轮)乃至整体结构(如人脸、汽车)。
      • 如 CNN 通过 5-6 层卷积可识别 ImageNet 千类物体,依赖多层特征的逐层抽象。
    2. 增强表达能力多层非线性变换(卷积 + 激活函数)使网络能拟合复杂视觉模式,解决非线性分类问题。获得强大的函数拟合能力。
    3. 逐步扩大感受野,理解图像的上下文和整体结构。
    4. 高效地利用参数,复用基础特征。
    5. 在提炼信息(降维)的同时提升语义级别、更抽象的特征学习

    深度加深与卷积核减小的好处?

    1. 深度加深的优势:同上
    2. 卷积核减小(如 3×3 替代 5×5)的优势
    • 参数数量锐减:3×3 卷积核参数仅为 5×5 的 36%(9 vs. 25),减少过拟合风险,如 VGG 用连续 3×3 卷积替代大核。
    • 等效感受野与更多非线性:两个 3×3 卷积层的感受野等效于 5×5 卷积,但包含两次 ReLU 激活,增强特征表达能力。
    • 增加非线性层
    • 计算效率更高

    卷积核的核心好处

    提取特征、共享参数、平移不变性降维

    1. 局部连接局部感受野:仅处理图像局部区域,符合视觉感知的局部性(如人类识别物体先关注局部部件)。
    2. 参数共享:同一卷积核在图像不同位置使用相同权重,减少参数数量,且对平移不变性有效(如边缘检测不依赖位置)。
    3. 多尺度特征捕捉:不同大小卷积核(3×3、5×5)可捕捉不同尺度特征,小核适合细节,大核适合整体结构。
    4. 平移不变性

    卷积层带来的好处

    一、浅层卷积的核心优势

    1. 保留空间结构信息

      • 直接处理原始像素,维持图像局部拓扑关系(如边缘、角点位置)。
      • 避免全连接层破坏空间结构的问题。
    2. 提取局部细节特征

      • 小感受野(3×3/5×5)聚焦微观模式:边缘(梯度变化)、纹理(重复模式)、颜色斑点
    3. 高效参数利用

      • 参数共享:同一卷积核滑动检测全图相似特征(如所有竖边)。
      • 局部连接:仅计算局部区域,参数量远低于全连接层(如3×3卷积核仅需9个权重)。
    4. 平移不变性基础

    二、加深卷积层的核心优势

    1. 感受野指数级扩大

    2. 组合低级特征为高级语义:特征抽象层级提升边缘 → 纹理 → 部件 → 物体整体(如:竖边+横边 → 窗户 → 建筑

    3. 增强语义判别能力

      • 深层特征对类别语义敏感(如“猫 vs 狗”),而非浅层的低级纹理。
      • 可学习复杂决策边界(如根据“车轮+车窗+车灯”组合识别汽车)。
    4. 鲁棒性提升:即对输入中的扰动、噪声、形变、遮挡、视角变化等不敏感,仍能做出正确判断。

    局部连接、参数共享和空间保留机制

    1. 平移不变性:同一特征在图像不同位置的响应一致,如卷积核检测边缘时不依赖其在图像中的位置。
    2. 可堆叠性:多层卷积叠加等效于大感受野,同时保持计算效率,如两个 3×3 卷积层等效于 5×5 感受野,但参数更少。
    3. 稀疏交互:仅与局部区域连接,降低计算复杂度,适合处理高维图像数据。

    检测和分类

    分类:判断整个图片、输出单一类别标签;acc、混淆矩阵;关注全局

    检测:定位目标、预测;输出多个坐标和类别标签;IOU、map;关注全局兼顾局部

    R-CNN 核心工作原理

    要知道它是两阶段窗口,为什么是两阶段,两阶段的特点,和优点(检测精确度高、两阶段)。

    • 精度高的原因
      • 阶段1保障高召回率(不漏物体)
      • 阶段2实现精细化分类与定位(CNN特征 + SVM + 边界框回归)
    • 阶段1:生成候选区域(Region Proposal)
    • 阶段2:对每个候选区域独立处理
    1. 为输入图像使用选择性搜索来选取多个高质量的提议区域。 这些提议区域通常是在多个尺度下选取的,并具有不同的形状和大小。每个提议区域都将被标注类别和真实边界框。

    2. 变形+提特征: 将每(截个候选区域变形后输入预训练CNN断输出层)提取固定长度的特征向量。
    3. 分类: 用每个类别的SVM分类器,基于特征向量判断候选区域是否包含该类物体。
    4. 定位: 用回归模型,基于特征向量精调候选区域的边界框位置和大小。        

    在类别预测和边框预测的时候:

    1. 候选区域生成:早期用 Selective Search 生成约 2000 个候选框,后续 Faster R-CNN 引入区域建议网络(RPN)提升效率。
    2. 特征提取与分类:对候选框提取 CNN 特征,用 SVM 或全连接层分类,并用回归调整边界框坐标。
    算法核心突破遗留问题
    R-CNN首用CNN+候选区域速度慢、训练复杂
    Fast R-CNN特征共享(一张共享特征图)+对每个候选框图做ROI Pooling候选区域生成仍用CPU
    Faster R-CNNRPN(Region Proposal Network)替代Selective Search(选择高质量的提议区域真正端到端

    SSD 工作原理

    1. 单阶段检测:无需候选区域,直接在多尺度特征图上预测边界框和类别概率,提升速度。
    2. 多尺度特征层
      • 浅层特征图(如 8×8)检测小目标,深层(如 4×4)检测大目标,每个位置预设不同尺寸锚框。
      • 对每个锚框输出边界框偏移量和类别概率,通过非极大值抑制(NMS)合并重叠框。
    3. 工作流程:
      • 输入图像到骨干网络vgg等提取特征生成一个特征图
      • 额外用一些卷积层来生成个更多的特征图用于预测
      • 生成默认锚框
      • 预测概率和框并NMS非极大值抑制处理

    YOLO 核心思想

            yolo核心思想、(工作原理)、不考工作流程、问有多少个边界框需要去预测?还要知道预测类别。

    1. 核心思想:YOLO 将目标检测任务视为回归问题,直接从图像中回归出边界框和类别概率 。它把输入图像划分为 S×S 的网格,每个网格负责预测图像中某一部分的目标 。若目标的中心点落在某个网格内,该网格就负责预测这个目标的边界框和类别 。这种方式使 YOLO 能在一个神经网络中同时完成分类和定位任务,避免了传统两阶段检测算法(如 Faster R-CNN)中先生成候选区域再进行分类和边界框回归的复杂过程,极大地提升了检测速度,同时其单阶段设计允许模型同时预测多个目标,还能从全局视角捕获目标之间的上下文关系,简化了模型训练流程 。
    2. 边界框预测数量与预测类别:每个网格预测B个bounding box(边界框)。
      1. 每个bounding box除了预测位置之外,
      2. 还要附带预测一个confidence值(置信度)。
      3. 每个网格还要预测C个类别的分数.
    3. 工作流程:
      1. 通多多层卷积池化提取特征输出特征图
      2. 划分特征图为S*S网格,每个网格输出值,(x,y,w,h,p,类别)
      3. NMS非极大值抑制算法处理。

    第5章先进的CNN架构的优缺点:

    一、LeNet-5

    1. 优点

    • 结构简单高效:首个成功应用的 CNN 架构,包含卷积层、池化层和全连接层,参数少,适合小数据集(如 MNIST 手写数字识别)。
    • 基础架构启发:奠定了 CNN 的基本组件(卷积、池化、全连接),为后续架构提供设计范式。

    2. 缺点

    • 处理能力有限:仅适用于低分辨率、简单场景(如 28×28 像素图像),无法处理复杂自然图像。
    • 缺乏非线性激活:早期版本使用 sigmoid 激活函数,存在梯度消失问题,训练效率低。
    二、AlexNet

    1. 优点

    • 突破性性能:2012 年 ImageNet 夺冠,首次证明 CNN 在大规模视觉任务中的优势。
    • 关键创新
      • 引入 ReLU 激活函数,解决 sigmoid 的梯度消失问题,加速训练。
      • 使用 Dropout 层减少过拟合,提升模型泛化能力。
      • 局部响应归一化(LRN)增强特征竞争力。

    2. 缺点

    • 计算资源密集:模型参数多(约 6000 万),需 GPU 并行计算,早期硬件部署困难。
    • 架构不够优化:部分模块(如 LRN)后续被证明非必需,可简化。
    三、VGGNet

    1. 优点

    • 结构统一简洁:仅使用 3×3 卷积核和 2×2 池化层,重复堆叠形成深层网络(如 VGG-16 含 16 层),设计范式清晰。
    • 特征表达强通过多层小卷积核的叠加,等效于大感受野,捕捉更复杂特征。

    2. 缺点

    • 参数数量爆炸:VGG-16 参数达 1.38 亿,训练需大量内存和计算资源,部署成本高。
    • 效率低下重复堆叠相同模块,计算冗余,推理速度慢。
    四、Inception/GoogLeNet

    1. 优点

    • 多尺度特征融合:通过 Inception 模块并行使用 1×1、3×3、5×5 卷积和池化,捕捉不同尺度特征,提升检测精度。
    • 参数高效:引入 1×1 卷积降维(如瓶颈结构),相比 VGG 参数减少 75%(仅 500 万参数)。
    • 创新架构:首次使用全局平均池化替代全连接层,减少过拟合。

    2. 缺点

    • 结构复杂:模块设计繁琐,实现和调优难度大,对新手不友好。
    • 训练耗时多分支并行计算增加训练时间,需优化硬件配置。
    五、ResNet(残差网络)

    1. 优点

    • 解决深度瓶颈:通过残差连接(y = x + F(x)),允许训练极深层网络(如 ResNet-152),避免梯度消失。
    • 性能卓越:在 ImageNet 等任务中准确率显著提升,且深层网络仍保持训练稳定性。
    • 泛化能力强:残差学习机制使模型对噪声和扰动更鲁棒。

    2. 缺点

    • 计算成本高:残差块增加前向和后向传播的计算量,推理速度较慢。
    • 内存占用大:深层网络需要更多显存,部署到边缘设备困难。
    六、核心对比与引用
    架构核心优势主要短板关键创新点
    LeNet-5简单高效,奠定 CNN 基础仅适用于简单任务卷积 + 池化 + 全连接范式
    AlexNet首次证明 CNN 大规模潜力参数多,硬件要求高ReLU、Dropout、LRN
    VGGNet结构统一,特征表达强参数爆炸,效率低全 3×3 卷积核堆叠
    Inception多尺度特征,参数高效架构复杂,调优困难Inception 模块、1×1 卷积降维
    ResNet突破深度限制,性能卓越计算成本高,内存占用大残差连接、恒等映射

    基础NMS计算

    输入框(格式:[x1, y1, x2, y2, score]):
    A:[10, 20, 50, 60, 0.9]
    B:[15, 25, 55, 65, 0.8]
    C:[40, 30, 60, 70, 0.6]
    D:[60, 10, 90, 40, 0.7]
    参数:IoU阈值=0.5。
    计算过程:
    1.按得分score排序:[A(0.9), B(0.8), D(0.7), C(0.6)]。
    处理A:
    保留A,计算其余框的IoU:
    IoU(A, B)=交集(35×35)/并集(40×40+40×40-35×35)=0.66 >0.5 → 抑制B。
    IoU(A, C)=0.14 <0.5 → 保留C。
    IoU(A, D)=0 → 保留D。

    此时候选框:[D(0.7), C(0.6)]
    处理D(下一最高分):
    IoU(D, C)=0 → 保留C。
    处理C:无剩余框需比较。
    结果:保留[A, D, C]。

    • x1_inter = max(8, 13) = 13
    • y1_inter = max(15, 22) = 22
    • x2_inter = min(45, 52) = 45
    • y2_inter = min(55, 62) = 55

    计算交集面积(Area_inter)

    交集区域的宽和高均为正值,说明有重叠:

    • 宽 = x2_inter - x1_inter = 45-13 = 32
    • 高 = y2_inter - y1_inter = 55-22 = 33
    • Area_inter = 宽 × 高 = 32×33 = 1056

     预测20个西瓜中哪些是好瓜,这20个西瓜中实际有15个好瓜,5个坏瓜,某个模型预测的结果是16个好瓜,4个坏瓜。其中,预测的16个好瓜中有14个确实是好瓜,预测的4个坏瓜中有3个确实是坏瓜。注:好瓜为正例,坏瓜为反例。
    (1)画出混淆矩阵。
    (2)什么是精确率(Presion),计算准确率P。
    (3)什么是召回率(Recall),计算召回率R。
    (4)写出F1值的计算公式,求出本例中F1值。

    TF
    P142
    N13

    107c5f6fa7644462ababf4c9ec525ee9.png

    混淆矩阵包含四部分的信息:

    1) 真阴率(TN)表明实际是负样本预测成负样本的样本数。

    2) 假阳率(FP)表明实际是负样本预测成正样本的样本数。

    3) 假阴率(FN)表明实际是正样本预测成负样本的样本数。

    4) 真阳率(TP)表明实际是正样本预测成正样本的样本数。

    精确度 (Precision)

    8e5945f37f114f1c9c1924a8f99ea4c1.png

    一句话速记:预测中的真正比例——

    召回率 (Recall)

    4a4ad0e202c441f6909f14a9a54ee16b.png

    一句话速记:真实中的真正比例 |

    准确率 (Accuracy)

    002f9ca53d0f45838faea11005d43e14.png

    一句话速记:对角线/所有

    F1 分数 (F1 Score)

    d9ef580b3f994bfb88bbb76ff6501cb7.png

    一句话速记:2pr/(r+p)

    inception

    假设输入特征图通道数为a,各分支卷积核数量为为b,特征图尺寸不变。

    分支1:(a*1*1+1)*b

    分支2:(a*1*1+1)*b+(b*3*3+1)*b

    分支3:(a*1*1+1)*b+(b*5*5+1)*b

    分支4:(a*1*1+1)*b

    • 输出特征图元素数量:因题目说 “特征图尺寸不变”,输出尺寸仍为 (S *S) ,通道数为分支的输出通道数(这里各分支输出通道数是 b ,所以元素数量 =S*S*b)。

    resnet

            ResNet采用了与Inception相同的模式并创建了残差块。这些残差块堆叠在彼此之上以 形成网络架构。ResNet尝试解决在训练超深网络时致使网络退化的梯度消失问题。 ResNet团队引入了跳跃连接,使信息可直接从早期的层流入网络的深层,并为梯度的 传递创建了一个可替代的旁路。ResNet的根本性突破在于,使人们有可能训练数百层的超深神经网络。

    左侧残差块参数量计算

    左侧残差块是典型的 “双 3×3 卷积 + 残差连接” 结构,流程为:
    输入 x → 3×3 Conv → Batch Norm(参数 2 )→ ReLU(无参数 )→ 3×3 Conv → Batch Norm(参数 2 )→ + 输入 x(残差连接,无参数 )→ ReLU(无参数 )

    逐层计算参数量:

    1. 第一层 3×3 卷积
      输入通道数为 a,卷积核尺寸 3×3,输出通道数 b 。
      参数量 = (a × 3×3 + 1) × b = (9a + 1)b (+1 是每个卷积核的偏置 )。

    2. Batch Norm:b×2

    3. 第二层 3×3 卷积
      经过第一层卷积后,输入通道数变为 b(因为第一层输出通道是 b ),卷积核尺寸 3×3,输出通道数 b 。
      参数量 = (b × 3×3 + 1) × b = (9b + 1)b 。

    4. 残差连接与其他层ReLU 无参数,残差连接是直接相加,也无参数。

    所以,左侧残差块总参数量 = 第一层参数量 + 第二层参数量 +两个Batch Norm(9a + 1)b + (9b + 1)b = 9ab + b + 9b² + b +2*b×2= 9ab + 9b² + 2b +4b。

    右侧残差块参数量计算(Batch Norm无参数版本)

    右侧残差块是 “带 1×1 卷积调整通道的残差结构”(应对输入输出通道不一致时的残差连接 ),流程为:
    输入 x → 3×3 Conv → Batch Norm(无参数 )→ ReLU(无参数 )→ 3×3 Conv → Batch Norm(无参数 )→ + [输入 x → 1×1 Conv 调整通道](残差连接支路 )→ ReLU(无参数 )

    逐层计算参数量:

    1. 第一层 3×3 卷积
      输入通道数 a,卷积核尺寸 3×3,输出通道数 b 。
      参数量 = (a × 3×3 + 1) × b = (9a + 1)b 。

    2. 第二层 3×3 卷积
      输入通道数 b,卷积核尺寸 3×3,输出通道数 b 。
      参数量 = (b × 3×3 + 1) × b = (9b + 1)b 。

    3. 残差连接支路的 1×1 卷积
      输入通道数 a(与原始输入通道一致 ),卷积核尺寸 1×1,输出通道数 b(要和主支路输出通道匹配,才能相加 )。
      参数量 = (a × 1×1 + 1) × b = (a + 1)b 。

    4. 其他层Batch Norm 和 ReLU 无参数,残差相加无参数。

    所以,右侧残差块总参数量 = 第一层参数量 + 第二层参数量 + 残差支路参数量 = (9a + 1)b + (9b + 1)b + (a + 1)b
    展开计算:
    = 9ab + b + 9b² + b + ab + b
    = 10ab + 9b² + 3b 。

    总结

    • 左侧残差块(纯双 3×3 卷积残差):9ab + 9b² + 6b
    • 右侧残差块(带 1×1 卷积通道调整):10ab + 9b² + 3b
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值