深度学习视觉应用:数据集、评价指标与典型任务总结
本文是对《深度学习视觉应用》课程的系统性整理,涵盖计算机视觉中常用的数据集、模型评估指标、目标检测(以 YOLO 为例)以及语义分割(FCN、DeepLab)的基本概念。内容适合作为视觉任务入门及面试复习参考。
目录
1. 常用数据集
计算机视觉的各个子任务(分类、检测、分割)都依赖标准数据集进行算法评估与对比。以下是几个最具影响力的数据集。
1.1 MNIST 与 Fashion-MNIST
- MNIST:手写数字识别数据集,10 个类别(0~9),训练集 60,000 张,测试集 10,000 张,图像尺寸 28×28 灰度图。常用于算法的快速验证。
- Fashion-MNIST:MNIST 的直接替代品,同样 10 类(服装商品),相同的数据划分和图像尺寸,但分类难度更高,更适合测试模型的泛化能力。
数据加载示例(PyTorch):
def load_data_fashion_mnist(batch_size, resize=None):
trans = [transforms.ToTensor()]
if resize:
trans.insert(0, transforms.Resize(resize))
trans = transforms.Compose(trans)
mnist_train = torchvision.datasets.FashionMNIST(
root="../data", train=True, transform=trans, download=True)
mnist_test = torchvision.datasets.FashionMNIST(
root="../data", train=False, transform=trans, download=True)
return (data.DataLoader(mnist_train, batch_size, shuffle=True),
data.DataLoader(mnist_test, batch_size, shuffle=False))
1.2 CIFAR-10
- CIFAR-10:10 类彩色图像(飞机、汽车、鸟、猫等),图像尺寸 32×32×3。共 60,000 张,其中 50,000 张训练,10,000 张测试。
- CIFAR-100:100 个细粒度类别,每类 600 张图像,数据规模与 CIFAR-10 相同。
CIFAR 系列适用于中小规模图像分类实验,也是验证数据增强、网络结构设计的重要基准。
1.3 PASCAL VOC
- 全称:Pattern Analysis, Statistical Modelling and Computational Learning - Visual Object Classes
- 活跃时间:2005 – 2012 年,常用版本为 VOC 2012。
- 任务:图像分类、目标检测、分割。
- 类别数量:20 类,包括 person、bird、cat、cow、dog、horse、sheep、aeroplane、bicycle、boat、bus、car、motorbike、train、bottle、chair、dining table、potted plant、sofa、tv/monitor。
- 标注格式:每张图像对应一个同名的 XML 文件,包含目标 bounding box 和类别标签。
PASCAL VOC 是早期检测和分割任务的基准数据集,虽然已被 COCO 和 ImageNet 取代,但其评价体系(mAP)延续至今。
1.4 MS COCO
- 全称:Microsoft Common Objects in Context
- 发布:2014 年起,当前是检测、分割、关键点检测等领域最权威的数据集之一。
- 规模:超过 33 万张图片,其中 20 万张有标注,个体标注总数超过 150 万个。
- 类别:80 类,分为人(1 类)、交通工具(8 类)、交通标志(5 类)、动物(10 类)、随身物品(5 类)、运动器材(10 类)、厨房餐具(7 类)、水果食品(10 类)、家具(7 类)、家庭常见物品(17 类)。
- 任务:目标检测、实例分割、全景分割、关键点检测、看图说话等。
COCO 相对于 VOC 的难点在于:目标尺度更小、图像场景更复杂、每张图中目标数量更多。COCO 的评估指标采用 AP@IoU=0.5:0.95(平均多个 IoU 阈值),对定位精度要求更高。
1.5 ImageNet 与 ILSVRC
- ImageNet:2009 年由李飞飞团队发布,大规模层次化图像数据库。总图像数约 1419 万,类别数 21,841(其中超过 100 万张带有边界框标注)。
- ILSVRC(ImageNet Large Scale Visual Recognition Challenge):2010–2017 年举办的年度竞赛,极大推动了深度学习的发展。通常所说“ImageNet 数据集”指 ILSVRC 使用的子集,包含约 1400 万张图像,21,000 个类别,其中 1000 类用于竞赛。
- JFT-300M:Google 内部数据集,3 亿张图像,超过 10 亿个标签(多标签),用于训练大模型(如 EfficientNet、ViT)。
ImageNet 预训练已经成为迁移学习的标准做法:在 ImageNet 上训练好的分类模型作为 backbone,用于检测、分割等下游任务。
2. 模型评价指标
2.1 混淆矩阵与基础指标
对于二分类问题,混淆矩阵如下:
| 真实\预测 | 正例(1) | 负例(0) |
|---|---|---|
| 正例(1) | TP | FN |
| 负例(0) | FP | TN |
- TP:正确预测为正例的数量
- FN:错误预测为负例的数量(漏检)
- FP:错误预测为正例的数量(虚警)
- TN:正确预测为负例的数量
由此定义:
- 精确率(Precision): P = T P T P + F P P = \frac{TP}{TP + FP} P=TP+FPTP,表示预测为正例的样本中有多少是真的正例。“模型有多挑剔”。
- 召回率(Recall): R = T P T P + F N R = \frac{TP}{TP + FN} R=TP+FNTP,表示真正的正例中有多少被正确检出。“模型有多敏感”。
- 准确率(Accuracy): A c c = T P + T N T P + T N + F P + F N Acc = \frac{TP+TN}{TP+TN+FP+FN} Acc=TP+TN+FP+FNTP+TN,整体分类正确率。当类别不均衡时,准确率可能失去意义。
2.2 P-R 曲线与 AP
在目标检测中,模型会输出每个预测框的置信度(confidence score)。通过改变置信度阈值,可以得到不同的 (Precision, Recall) 点,连成曲线即为 P-R 曲线。通常精确率越高,召回率越低,两者相互制约。
AP(Average Precision) 是 P-R 曲线下的面积,计算方式为:
A P = ∑ k = 1 N P ( k ) ⋅ Δ r ( k ) AP = \sum_{k=1}^{N} P(k) \cdot \Delta r(k) AP=k=1∑NP(k)⋅Δr(k)
其中 k k k按置信度排序后的第 k k k个预测, P ( k ) P(k) P(k)是在该阈值下的精确率, D e l t a r ( k ) Delta r(k) Deltar(k)是从第 k − 1 k-1 k−1到第 k k k个预测时召回率的变化量。实际计算中常采用插值法(如 VOC 的 11 点插值或 COCO 的 101 点积分)。
mAP(mean Average Precision):对所有类别的 AP 取平均值,是目标检测任务最核心的指标。
不同数据集的 AP 计算略有差异:
- PASCAL VOC:IoU 阈值固定为 0.5,AP 采用 11 点插值。
- MS COCO:IoU 阈值从 0.5 到 0.95 以 0.05 步长取 10 个值,分别计算 AP 后平均,记为 A P 0.5 : 0.95 AP_{0.5:0.95} AP0.5:0.95。此外还提供 A P 0.5 AP_{0.5} AP0.5(等同 VOC 指标)、 A P 0.75 AP_{0.75} AP0.75(更严格定位)以及针对小、中、大物体的 AP。
2.3 示例:单个类别的 AP 计算步骤
- 模型对所有测试样本输出该类的置信度 score。
- 按 score 从高到低排序,得到序列。
- 遍历排序后的列表,每遇到一个真正的正样本(ground truth),就计算当前累计 TP 和 FP 下的 Precision 和 Recall。
- 绘制 P-R 曲线,计算曲线下面积。
课件中的计算实例(10 个样本)最终 AP ≈ 0.782。
3. 目标检测与 YOLO
3.1 目标检测任务定义
目标检测需要同时解决两个问题:
- 定位:用边界框(bounding box)标出物体的位置。
- 分类:识别框内物体的类别。
检测面临的主要挑战:
- 物体尺寸变化大(从几十像素到接近整图)
- 物体可以出现在任何位置
- 任意数量的物体(包括 0 个)
- 多类别共存,且可能存在重叠
3.2 两阶段与单阶段方法概述
- 两阶段检测器(如 R-CNN 系列):先提取候选区域(region proposals),再对每个区域进行分类和回归。精度高但速度慢。
- 单阶段检测器(如 YOLO、SSD):直接在图像网格上预测类别概率和边界框偏移,端到端一次完成。速度快,适合实时应用。
3.3 YOLO(You Only Look Once)核心思想
YOLO 将检测视为回归问题:
- 将输入图像划分为 (S \times S) 的网格。
- 每个网格负责预测:
- (B) 个边界框(每个框包含位置 (x, y, w, h) 和置信度 confidence)
- (C) 个类别概率(条件概率,给定该网格包含物体)
- 最终输出张量尺寸:(S \times S \times (B \times 5 + C))。
置信度定义为:(P(\text{object}) \times \text{IoU}_{\text{pred}}^{\text{truth}})。既表示网格内是否含有物体,也表示预测框与真实框的重合度。
优势:全局推理(整图一次处理),速度快(可达实时),泛化能力强。
劣势:对小物体检测效果较差,对重叠物体的处理有限。
YOLO 已发展多个版本(v1~v8),持续改进多尺度预测、锚框、损失函数等。
3.4 YOLO 损失函数(简化版)
损失由四部分加权组成:
L = λ coord ∑ i = 0 S 2 ∑ j = 0 B 1 i j obj [ ( x i − x ^ i ) 2 + ( y i − y ^ i ) 2 ] + λ coord ∑ i = 0 S 2 ∑ j = 0 B 1 i j obj [ ( w i − w ^ i ) 2 + ( h i − h ^ i ) 2 ] L = \lambda_{\text{coord}} \sum_{i=0}^{S^2} \sum_{j=0}^{B} \mathbf{1}_{ij}^{\text{obj}} \left[ (x_i - \hat{x}_i)^2 + (y_i - \hat{y}_i)^2 \right] + \lambda_{\text{coord}} \sum_{i=0}^{S^2} \sum_{j=0}^{B} \mathbf{1}_{ij}^{\text{obj}} \left[ (\sqrt{w_i} - \sqrt{\hat{w}_i})^2 + (\sqrt{h_i} - \sqrt{\hat{h}_i})^2 \right] L=λcoordi=0∑S2j=0∑B1ijobj[(xi−x^i)2+(yi−y^i)2]+λcoordi=0∑S2j=0∑B1ijobj[(wi−w^i)2+(hi−h^i)2]
+ ∑ i = 0 S 2 ∑ j = 0 B 1 i j obj ( C i − C ^ i ) 2 + λ noobj ∑ i = 0 S 2 ∑ j = 0 B 1 i j noobj ( C i − C ^ i ) 2 + ∑ i = 0 S 2 1 i obj ∑ c ∈ classes ( p i ( c ) − p ^ i ( c ) ) 2 +\sum_{i=0}^{S^2} \sum_{j=0}^{B} \mathbf{1}_{ij}^{\text{obj}} (C_i - \hat{C}_i)^2 + \lambda_{\text{noobj}} \sum_{i=0}^{S^2} \sum_{j=0}^{B} \mathbf{1}_{ij}^{\text{noobj}} (C_i - \hat{C}_i)^2 + \sum_{i=0}^{S^2} \mathbf{1}_{i}^{\text{obj}} \sum_{c \in \text{classes}} (p_i(c) - \hat{p}_i(c))^2 +i=0∑S2j=0∑B1ijobj(Ci−C^i)2+λnoobji=0∑S2j=0∑B1ijnoobj(Ci−C^i)2+i=0∑S21iobjc∈classes∑(pi(c)−p^i(c))2
- 前两项:边界框中心坐标和宽高的回归损失(宽高取平方根以缓和大小框的尺度差异)。
- 第三、四项:置信度损失(正样本和负样本分开加权, λ noobj \lambda_{\text{noobj}} λnoobj通常较小,如 0.5)。
- 最后一项:分类损失(每个有物体的网格预测类别概率)。
更详细的推导和代码实现可参考课程配套材料。
4. 语义分割简介
4.1 任务定义
语义分割是对图像中的每个像素分配一个类别标签(如道路、天空、人、车等)。与实例分割不同,语义分割不区分同一类别的不同个体。
4.2 FCN(Fully Convolutional Network)
FCN 是语义分割的开创性工作(2015),核心贡献:
- 将分类网络(如 VGG)的全连接层替换为卷积层,使网络能接受任意尺寸输入并输出与输入同尺寸的 score map。
- 引入 转置卷积(transposed convolution) 实现上采样,恢复空间分辨率。
- 使用 跳跃连接(skip connections) 融合浅层细节和深层语义信息,改善分割边界。
4.3 DeepLab 系列
DeepLab(v1, v2, v3, v3+)是目前广泛使用的语义分割模型,主要特点:
- 空洞卷积(Atrous Convolution):在不增加参数的前提下扩大感受野,控制特征图分辨率。
- ASPP(Atrous Spatial Pyramid Pooling):多个不同膨胀率的空洞卷积并行,捕捉多尺度上下文信息。
- 条件随机场(CRF,v1/v2):后处理优化边缘细节(v3 之后逐渐被更强大的 ASPP 和 decoder 替代)。
DeepLab v3+ 引入 encoder-decoder 结构,进一步提升边界质量。
课程中提供了 deeplab.ipynb 演示文件,建议运行体验实际分割效果。
总结与常见问题
数据集选择建议
| 任务类型 | 推荐起始数据集 | 进阶/竞赛数据集 |
|---|---|---|
| 图像分类 | MNIST, CIFAR-10 | ImageNet, JFT-300M |
| 目标检测 | PASCAL VOC | MS COCO |
| 语义分割 | PASCAL VOC 2012 | Cityscapes, COCO-Stuff |
评价指标速查
| 任务 | 核心指标 | 说明 |
|---|---|---|
| 分类 | Accuracy, Top-1/Top-5 Error | Top-5 用于 ImageNet |
| 检测 | mAP | 需指定 IoU 阈值 |
| 分割 | mIoU(平均交并比) | 每个类别计算 IoU 后平均 |
常见问题
-
精确率和召回率分别关注什么?
- 精确率关注“检出的结果中有多少是正确的”(避免误报)。
- 召回率关注“所有真正的正例有多少被检出”(避免漏报)。
-
为什么 COCO 的 mAP 比 VOC 低很多?
因为 COCO 采用多个 IoU 阈值(从 0.5 到 0.95)平均,对定位精度要求更高;且 COCO 包含更多小物体和复杂场景。 -
YOLO 为什么比两阶段方法快?
YOLO 将检测视为回归问题,一次前向传播同时得到所有物体的位置和类别,无需候选区域生成和逐区域分类的过程。 -
转置卷积和上采样的区别?
转置卷积是一种可学习的上采样方式,具有参数;而双线性插值等上采样没有可学习参数。FCN 使用转置卷积,DeepLab 后来改用双线性上采样加卷积,两者各有优劣。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)