AISS2 图象分类基础与实践
理论
图像分类基础
-
图像分类:将不同的图象划分为不同的类别标签。
-
应用场景:图象识别、相册分类、图片检索
-
领域划分:
多类别分类 multi-class(传统) 一张图对应一个 类别标签
较大的类间方差,较小的类内误差 细粒度分类 fine-gained 类别标签
划分更细多标签图像分类 multi-label 一张图可划分为多个 类别标签
数据 测试集 NOte 弱监督 少部分有标签 + 大部分无标签 有/无标签 经典的图像识别 无监督 无标签 无标签 零样本zero-shot 已有知识 与数据没有交集,模型通过已有知识进行判断 利用类别的高维语义特征刻画样本的低维特征以使得模型具有可迁移性
传统图象分类 VS 深度学习图像分类
都遵循
数据预处理 → 特征提取 → 分类模型
的模式,但传统图象分类的特征由手工提取后再进入分类器;而深度学习图像分类则再深度学习种完成特征提取和分类,是一种end-to-end的分类。
图像分类评估指标
RECALL
根据标签值(真实值)和预测值之间的关系,对分类器情况作以下分类(混淆矩阵):
真实值/预测值 | 正样本 | 负样本 |
---|---|---|
正样本 | TP, True Positive | FN, False Negative 漏报 |
负样本 | FP, False Positive 假阳误报 | TN, True Negative |
精度/查准率 Precision
即在预测正样本
中真正正样本
的占比。
召回率/查全率 Recall
即在真正正样本
中预测正样本
的占比。
综合考虑以上二者:
- 设计二者的加权调和平均作为F-Score
取 有
- PR曲线:
和 是一对相互矛盾的指标。PR曲线
与坐标轴围成的面积越大,模型的性能越好。
考虑到PR曲线
对正负样本的平衡性比较敏感,在正负样本不平衡时PR曲线变化明显,重新设计以下指标:
真正例率TPR, True Positive Rate
假正例率FPR, False Positive Rate
预测错的正样本占全体负 样本的比例。
综合考虑得到ROC曲线:以 为 x 轴, 为 y 轴画图。进一步选择ROC曲线
与x坐标轴之间的面积作为 AUC, Area Under Curve, 该数据表示:
从所有正例中随机选取一个样本A,再从所有负例中随机选取一个样本B,分类器将A判为正例的概率比将B判为正例的概率大的可能性。可以看到位于随机线上方的点(如图中的A点)被认为好于随机猜测。在这样的点上TPR总大于FPR,意为正例被判为正例的概率大于负例被判为正例的概率**。
效用 | Note | |
---|---|---|
1 | 完美分类器 | 绝大多数预测的场合,不存在 |
(0.5,1) | 优于随机猜测 | 妥善设定阈值能有预测价值 |
0.5 | 随机猜测 | 没有预测价值 |
[0,0.5) | 劣于随机猜测 | 只要总是反预测而行就优于随机猜测 |
ROC曲线的应用场景有很多,根据上述的定义,其最直观的应用就是能反映模型在选取不同阈值的时候其***敏感性(sensitivity, FPR)和其精确性(specificity, TNR, True Negative Rate,真负类率)***的趋势走向。
当正负样本的分布发生变化时,
ROC
形状能够基本保持不变,而P-R曲线的形状一般会发生剧烈的变化,因此该评估指标能降低不同测试集带来的干扰,更加客观的衡量模型本身的性能。因为TPR
聚焦于正例,FPR
聚焦于与负例,使ROC
成为一个比较均衡的评估方法。但如果应用场景更关注准确率,
ROC曲线
可能呈现一个过分乐观的效果估计。相比而言PR曲线完全聚焦于正例,更适合此类情况。
但两个模型AUC值相等并不代表模型效果相同。
当需要高 Sensitivity 时,模型 A比 B 好;当需要高 Speciticity 时,模型 B 比A好.
混淆矩阵
混淆矩阵描述分类模型各个类别之间的分类情况。对于k分类问题,混淆矩阵 ,其中表示 第 i 类样本被分类器预测为第 j 类的数量。
经过归一化以后,显然
- 对角线上矩阵元素之和越接近 1 ,正确率越高。
- 此外对于对角线之外的元素,可较易观察到模型的分类混淆情况。
优化指标
0-1损失
- 由于01损失函数的离散性,无法对损失函数进行求导,通常转化为精度判断。
交叉熵损失, cross entropy loss
其中:
- : 样本数量
- : 标签数量
- : 第 i 个样本属于第 j 类的标签
- : 模型预测第 i 个样本属于第 j 类的概率
Softmax损失
交叉熵损失的特例,此时为 函数:
KL 散度
估计两个分布和之间的相似性。
考虑到在应用中常常是一个真实的分布,即是一个常数,因而可以简化为计算交叉熵。即
图像分类CNN模型
-
CNN 卷积神经网络
卷积神经网络主要由这几类层构成:
-
数据输入层/ Input layer
去均值:把输入数据各个维度都中心化为0,如下图所示,其目的就是把样本的中心拉回到坐标系原点上。
归一化:幅度归一化到同样的范围,如下所示,即减少各维度数据取值范围的差异而带来的干扰,比如,我们有两个维度的特征A和B,A范围是0到10,而B范围是0到10000,如果直接使用这两个特征是有问题的,好的做法就是归一化,即A和B的数据都变为0到1的范围。
PCA/白化:用PCA降维;白化是对数据各个特征轴上的幅度归一化
-
卷积计算层/ CONV layer
-
ReLU激励层 / ReLU layer
-
池化层 / Pooling layer
-
全连接层 / FC layer
-
经典模型与发展
- LeNet5
- AlexNet,2012
- VGGNet,首次提出小卷积核;提高模型深度
- ResNet,增加输入和输出的连接,网络建模为输入和输出的差值;解决深度增加导致的梯度消失问题
图像分类Transformer模型
自注意力 SA, self-attention
在处理序列数据时,每个元素都可以与序列中的其他元素建立关联,而不仅依赖于相邻位置的元素。SA通过计算元素间的相对重要性来自适应捕捉元素之间的长程依赖关系:
- 对于序列中的每个元素,计算其与其他元素之间的相似度。
- 将相似度归一化为注意力权重。
- 将每个元素与对应的注意力权重进行加权求和得到输出。
对于一个原始的数据,要先通过 Embedding 操作变化为向量 。
Q, K 操作
Q, K 操作计算序列中不同位置之间的相关性。
Query - 和其他元素进行匹配,计算当元素或字与其他元素之间的关联;
Key - 和 Query 进行匹配的元素的关键信息。
然后进行 softmax 操作,得到
V 操作
V 操作将 Q, K 操作得到的相关性视作为每个位置分配的权重,对序列进行加权求和。
Value - 表示当前元素的重要信息,可以理解元素的重要特征。
多头自注意力 MHA, Multi self-attention
表达能力更强。
ViT,Vision Transformer,2020
DeiT
- 蒸馏方式: 使用CNN模型作为teacher,降低训练数据量;帮助学习local信息
Swin
- 分层的特征表示
- SW-MSA, shifted window - MSA 降低了计算量
- Patch Partition and Patch merging
- 堆叠 swin-transformer
实践
开源数据集合
- MNIST
- CIFAR10/CIFAR100
- PASCAL
- ImageNet: 大数据集
推理 inference
利用已有模型输入数据得到输出。定性分析手段。
评估
通过测试集,计算mAP等数据对模型性能进行定量检测。
训练
模型性能未达预期时进行精度优化或类别扩充等。