# 评价指标

# 基本概念

  • TP(True Positive): 真正例,指正例被正确地预测为正例。
  • TN(True Negative): 真负例,指负例被正确地预测为负例。
  • FP(False Positive): 假正例,指负例被错误地预测为正例。
  • FN(False Negative): 假负例,指正例被错误地预测为负例。

# 核心指标

  • 准确率(Accuracy): 模型正确预测的比例。

    Accuracy=TP+TNTP+TN+FP+FN\text{Accuracy} = \frac{TP + TN}{TP + TN + FP + FN}

  • 精确率(Precision): 在所有预测为正例的样本中,实际为正例的比例。

    Precision=TPTP+FP\text{Precision} = \frac{TP}{TP + FP}

  • 召回率(Recall): 在所有实际为正例的样本中,被正确预测为正例的比例。

    Recall=TPTP+FN\text{Recall} = \frac{TP}{TP + FN}

  • F1 Score: 精确率和召回率的调和平均值,综合评估模型的性能。

    F1 Score=2×Precision×RecallPrecision+Recall=2TP2TP+FP+FN\text{F1 Score} = 2 \times \frac{\text{Precision} \times \text{Recall}}{\text{Precision} + \text{Recall}} = \frac{2TP}{2TP + FP + FN}


# 词袋法(Bag of Words)

# 基本流程

1. 训练框架:从训练数据中创建视觉字典

  • 局部特征提取: 从训练图像中提取局部特征描述向量。
  • 空间量化: 划分特征描述向量的空间。
  • 视觉单词定义: 将量化后的空间定义为视觉单词。

2. 测试框架:将测试图像转化为词频直方图

  • 局部特征提取: 从测试图像中提取局部特征描述向量。
  • 视觉单词分配: 根据已创建的视觉字典,为每个描述符分配一个视觉单词。
  • 词频直方图生成: 统计每个视觉单词的出现频率,生成词频直方图。

# 算法详解

1. 梯度直方图(HOG, Histogram of Oriented Gradients)

  • 将图像分割成 8×88 \times 8 像素的单元格。
  • 对每个单元格:
    • 计算每个像素点的梯度幅度和方向,得到 8×8×28 \times 8 \times 2 个数值。
    • 构建一个方向梯度直方图(如包含 9 个“桶”),将每个像素点的梯度幅度值根据其方向按比例分配到相应的“桶”中,得到一个 9×19 \times 1 的向量。
  • 将一个 16×1616 \times 16 像素(覆盖 4 个单元格)的窗口内的 4 个 9×19 \times 1 向量连接成一个 36×136 \times 1 的向量,并进行归一化处理,以提高对光照变化的鲁棒性。
  • 移动该窗口(步长为 8),得到图像的所有描述符集合。
  • 优点: 能够有效捕捉局部梯度信息,对光照和对比度变化具有鲁棒性。

2. K-Means 聚类

  • 将所有训练图像的 HOG 描述符集合使用 K-Means 聚类成 K 个类别,每个类别对应一个视觉单词。
  • 按距离分类: 将每个样本 x(i)x^{(i)} 分配到距离最近的聚类中心 μj\mu_j

    z(i)=argminjx(i)μj2z^{(i)} = \arg\min_j ||x^{(i)}-\mu_j||^2

  • 更新中心点: 将每个聚类中心 μj\mu_j 更新为该聚类中所有样本的平均值。

    μj=i1z(i)=jx(i)i1z(i)=j\mu_j = \frac{\sum_i 1_{z^{(i)}=j} x^{(i)}}{\sum_i 1_{z^{(i)}=j}}

  • 模型训练: 使用所有训练图像生成的视觉单词词频直方图作为特征向量,训练一个分类器(如线性逻辑回归或支持向量机)进行图像分类。

# 卷积神经网络(CNN)

# 基础架构与核心概念

  • 输入维度: B×Cin×H×WB \times C_{in} \times H \times W
  • 卷积核: 大小为 Cout×Cin×Kw×KhC_{out} \times C_{in} \times K_w \times K_h
  • 偏置: 大小为 CoutC_{out}
  • 输出维度: B×Cout×H×WB \times C_{out} \times H' \times W'
  • 输出形状:

    H=H+2PKhstride+1H' = \frac{H + 2P - K_h}{\text{stride}} + 1

    W=W+2PKwstride+1W' = \frac{W + 2P - K_w}{\text{stride}} + 1

    其中 PP 是填充大小,Kw,KhK_w, K_h 是卷积核的宽度和高度。
  • 感受野: 每层卷积会增加 K1K-1 的感受野大小。对于 LL 层卷积核大小相同的网络,总感受野大小为 1+L(K1)1 + L(K-1)
  • 卷积层参数量: (Cin×Kw×Kh+1)×Cout(C_{in} \times K_w \times K_h + 1) \times C_{out}
  • 池化层: 输入输出维度计算。
  • 3×33 \times 31×11 \times 1 卷积核: 1×11 \times 1 卷积核通常用于减少通道数(即降维)。

# 缓解过拟合方法

  • Dropout(随机失活): 训练时以概率 pp 随机失活神经元,测试时神经元输出乘以 1p1-p(或训练时神经元输出除以 1p1-p,测试时保持不变)。这可以减少神经元间的相互依赖性,但会增加训练时间。
  • 图像增强: 通过对图像进行平移、翻转、颜色偏移等操作来增加训练数据量。
  • 正则化: 包括 L1、L2 和 Elastic 正则化。

# 核心模块与结构

  • 残差结构(Residual Block):

    • 核心思想是让网络层拟合残差映射 F(x)=H(x)xF(x) = H(x) - x,而不是直接拟合目标映射 H(x)H(x)
    • 通过跳跃连接(shortcut)实现 H(x)=F(x)+xH(x) = F(x) + x
    • 使得损失曲面更平滑,有助于网络收敛到更优解,解决了深层网络中的梯度消失问题。
  • Batch Normalization(批标准化):

    • 方法: 对每个小批量数据进行标准化,使其均值为 0,方差为 1,然后通过可学习的缩放因子 γ\gamma 和平移因子 β\beta 恢复其表达能力。

    μ=1mi=1mxiσ2=1mi=1m(xiμ)2x^i=xiμσ2+ϵyi=γx^i+β\begin{aligned} \mu &= \frac{1}{m} \sum_{i=1}^{m} x_i \\ \sigma^2 &= \frac{1}{m} \sum_{i=1}^{m} (x_i - \mu)^2 \\ \hat x_i &= \frac{x_i - \mu}{\sqrt{\sigma^2 + \epsilon}} \\ y_i &= \gamma \hat x_i + \beta \end{aligned}

    • 解决的问题: 缓解了“内部协变量偏移”,即上层网络输入数据分布随下层参数变化而不断变化的问题,从而加快了网络训练速度。
    • 优势:
      • 使网络层与层之间解耦,提高学习速度。
      • 允许使用较大的学习率,加快收敛。
      • 缓解梯度消失问题,允许使用饱和性激活函数。
      • 引入随机噪音,起到正则化作用。
    • 劣势: 在测试时无法进行批标准化,需要使用训练时的均值和方差,这可能导致训练和测试表现不一致。
  • 可形变卷积(Deformable ConvNets, DCN):

    • 核心思想: 允许卷积核的采样位置是可学习和可变的,使其能够自适应地对不同形状的物体进行特征提取。
    • 实现: 通过一个并行的常规卷积分支生成采样位置的偏移量 Δpn\Delta p_n

    y(p0)=pnRw(pn)x(p0+pn+Δpn)y(p_0) = \sum_{p_n \in R} w(p_n) \cdot x(p_0 + p_n + \Delta p_n)

    • 优点: 能够有效建模空间变换,显著提高复杂视觉任务的准确性,且无需额外的监督。

# 经典网络架构

  • AlexNet: 第一个成功应用于大规模图像分类的 CNN 模型。

    • 创新: 使用 ReLU 激活函数显著加快收敛;使用 GPU 训练;采用 图像增强Dropout 缓解过拟合;使用带动量的随机梯度下降。
  • VGGNet: 示网络深度对性能的影响。

    • 创新: 仅使用 3×33 \times 3 卷积核;通过最大池化减半分辨率并翻倍通道数,使不同层次的特征具有简单的比例关系;使用 图像增强Dropout
  • GoogLeNet: 提出 Inception Module 以提高计算效率。

    • 创新: 使用 Inception Module,并行使用多种尺寸的卷积核并拼接输出;通过 1×11 \times 1 卷积核 降低通道数;使用 全局平均池化 替代全连接层;引入多个辅助分支来传递梯度。
  • ResNet: 解决了深度神经网络中的退化问题。

    • 创新: 使用 残差模块,通过跳跃连接缓解梯度消失问题;堆叠残差模块构建极深网络;没有使用 Dropout,每层卷积后都有 Batch Normalization
  • ViT、Pyramid Vision Transformer、Swin TransformerConvNeXt 等,这里不做展开。