12大类150个开源数据集:图像处理与深度学习数据集选型与避坑指南
图像处理和深度学习这行最怕的不是没思路而是没数据。算法调参调了半天模型结构换了一版又一版最后发现瓶颈根本不在网络而在手里那几千张标注质量参差不齐的图片。我见过太多人把时间耗在满世界找数据集上GitHub 翻一遍、Kaggle 搜一圈、各种网盘链接存了几十个G结果打开一看要么类别对不上要么标注格式不兼容要么干脆下载链接已经失效。所以当我第一次看到有人把 12 大类、150 个开源数据集整理成一份清单的时候第一反应是这东西值得好好拆一拆——它到底覆盖了哪些方向每个方向的数据集适合什么任务拿到之后怎么快速判断能不能用以及在实际项目里怎么把这些数据集用出效果来。这份清单的价值不在于“多”而在于“分类清晰”。150 个数据集如果只是堆在一起那跟搜索引擎结果没区别。但按 12 大类拆开之后你会发现它其实对应的是图像处理和深度学习领域最核心的十几个任务方向图像分类、目标检测、语义分割、人脸识别、姿态估计、OCR、遥感、医学影像、自动驾驶、工业缺陷检测、图像增强与复原、视频理解。每个方向下面再挂具体的数据集找起来就有章法了。下面我按自己的使用经验把这 12 大类里真正值得关注的数据集、它们的技术背景、实际使用中的坑以及怎么跟主流框架对接系统地聊一遍。1. 图像分类数据集从入门到细粒度识别图像分类是绝大多数人接触深度学习的第一个任务也是数据集最丰富的一个方向。但“丰富”不等于“随便选一个就行”不同数据集之间的难度差异、类别体系、图像质量差距非常大选错了会直接影响你对模型能力的判断。1.1 MNIST 和 CIFAR入门可以但别拿它们下结论MNIST 是手写数字数据集60000 张训练图加 10000 张测试图28×28 灰度。CIFAR-10 是 10 类彩色小图32×32每类 6000 张。这两个数据集几乎是所有教程的标配用来跑通第一个 CNN 没问题。但我要说的是在 MNIST 上做到 99% 准确率不代表你会做图像分类。MNIST 的类间差异太大类内差异太小模型甚至不需要学到真正的纹理特征靠像素分布就能分得差不多。CIFAR-10 比 MNIST 难一些但 32×32 的分辨率决定了它丢失了大量细节信息。你在 CIFAR-10 上验证有效的注意力模块换到 224×224 的 ImageNet 上未必成立。我的建议是MNIST 和 CIFAR 用来验证代码流程、调试数据加载管道、确认训练循环没问题这些用途完全够。但如果你要写论文或者做实际项目选型至少得上 ImageNet 子集或者更贴近业务场景的数据。1.2 ImageNet绕不开的基准但用法有讲究ImageNet 有 1000 个类别训练集约 128 万张验证集 5 万张。它是图像分类领域最权威的基准几乎所有预训练模型都在上面刷过。但完整下载 ImageNet 需要不小的存储空间和带宽而且训练一轮的成本对个人开发者来说不低。实际使用中我通常不会从头训练 ImageNet而是直接拿预训练权重做迁移学习。具体做法是把 ImageNet 预训练的 ResNet、EfficientNet 或者 ConvNeXt 作为骨干网络替换最后的全连接层在自己的数据集上微调。这时候你不需要完整下载 ImageNet只需要确保你用的预训练权重是在 ImageNet 上训练的就行。如果你确实需要 ImageNet 的子集来做实验可以用 ImageNet-100 或者 ImageNet-1K 的某个子集。有些研究把 1000 类缩减到 100 类或者 200 类训练成本大幅降低同时保留了足够的多样性。1.3 细粒度分类数据集CUB-200、Stanford Cars、FGVC-Aircraft细粒度分类是图像分类里比较难的一个方向要求模型区分同一大类下的不同子类比如不同品种的鸟、不同型号的车、不同系列的飞机。CUB-200 有 200 种鸟类约 11788 张图Stanford Cars 有 196 类汽车约 16185 张FGVC-Aircraft 有 100 类飞机约 10000 张。这些数据集的难点在于类间差异极小有时候只有喙的形状、车灯的轮廓、机翼的翼尖小翼这些局部特征不同。用常规的全局平均池化加全连接层效果往往一般。实践中比较有效的做法是引入注意力机制或者双线性池化让模型聚焦到判别性区域。另外这些数据集通常还提供部件标注可以用来做弱监督定位进一步提升分类精度。注意细粒度数据集的类别不平衡问题比较常见有些类的样本数远少于其他类。训练时建议用类别加权或者重采样否则模型会偏向样本多的类。2. 目标检测数据集从通用检测到垂直场景目标检测是工业界需求最大的方向之一数据集也分好几个层次。通用检测数据集用来验证算法本身的能力垂直场景数据集用来解决具体业务问题。两者不能混用否则要么模型泛化不行要么业务指标上不去。2.1 COCO 和 VOC通用检测的基准线Pascal VOC 有 20 个类别约 11540 张图标注格式是 XML。COCO 有 80 个类别约 33 万张图标注格式是 JSON除了边界框还有实例分割掩码和关键点。VOC 适合快速验证COCO 适合做更全面的评估。实际使用中VOC 的 20 类覆盖了人、车、动物、家具等常见物体用来调试 YOLO 系列或者 Faster R-CNN 的代码流程很方便。COCO 的评估指标更细mAP 按 IoU 从 0.5 到 0.95 取平均还有不同尺度目标的 AP能更全面地反映模型性能。我自己的习惯是新算法先在 VOC 上跑通确认训练和评估流程没问题再上 COCO 看真实水平。因为 COCO 的训练时间长如果代码有 bug在 VOC 上暴露比在 COCO 上暴露成本低得多。2.2 垂直场景检测数据集遥感、交通、工业、农业垂直场景的数据集才是真正解决业务问题的关键。遥感方向有 DOTA、NWPU VHR-10DOTA 包含大量航拍图像目标有飞机、船舶、储油罐、棒球场等标注是旋转框。交通方向有 KITTI、BDD100KKITTI 偏自动驾驶感知包含车辆、行人、骑行者还有激光雷达点云BDD100K 规模更大有 10 万段视频覆盖多种天气和场景。工业缺陷检测有 NEU-DET 钢材表面缺陷数据集包含裂纹、夹杂、斑块、麻点、压入氧化铁皮、划痕六类缺陷。农业方向有各种农作物病虫害数据集比如 PlantVillage 虽然主要是分类但也有检测版本的扩展。这些垂直数据集的使用有个共同点标注规范跟通用数据集不一样。DOTA 用旋转框KITTI 有 3D 框和遮挡等级工业缺陷数据集的缺陷区域往往很小。直接套用 COCO 的训练配置效果通常不好。需要根据数据特点调整 anchor 尺寸、损失函数权重、数据增强策略。2.3 小目标检测数据集难点不在模型在数据小目标检测是目标检测里公认的难点。COCO 里定义面积小于 32×32 像素的目标为小目标但实际业务中的小目标可能只有几个像素。VisDrone 是无人机视角的数据集包含大量小目标TinyPerson 是远距离行人检测数据集行人目标非常小。小目标检测的核心问题不是模型结构不够强而是下采样过程中小目标的特征丢失太严重。常见的解决思路包括提高输入分辨率、使用特征金字塔的多尺度融合、在浅层特征图上做检测、用超分辨率预处理。但所有这些方法都有代价提高分辨率会增加计算量浅层特征语义信息弱超分辨率可能引入伪影。我的经验是先分析数据集中小目标的实际像素分布如果大部分目标在 16×16 以下那单纯改模型结构收益有限必须从数据采集端想办法比如提高相机分辨率、降低拍摄高度、增加目标在画面中的占比。3. 语义分割与实例分割数据集像素级的理解语义分割要求对每个像素分类实例分割还要区分同一类别的不同个体。这两个任务的数据集标注成本极高所以开源数据集的数量比分类和检测少但每个都很有分量。3.1 Cityscapes 和 ADE20K场景解析的主力Cityscapes 有 5000 张精细标注的城市街景图30 个类别标注质量非常高。ADE20K 有 2 万多张图150 个类别覆盖室内外多种场景。这两个数据集是场景解析和语义分割最常用的基准。Cityscapes 的标注特点是类别体系偏自动驾驶有道路、人行道、建筑、车辆、行人、交通标志等。如果你做的是自动驾驶或者智慧城市相关项目Cityscapes 的类别定义可以直接参考。ADE20K 的类别更泛化适合做通用场景理解。训练语义分割模型时Cityscapes 的图像分辨率是 2048×1024直接输入显存吃不消。通常的做法是随机裁剪到 512×512 或者 768×768 进行训练推理时用滑动窗口或者整图推理。这里有个细节裁剪时要保证类别分布均衡否则某些小类别可能在一个 batch 里完全没出现导致训练不稳定。3.2 医学影像分割数据集ISIC、LiTS、BraTS医学影像分割是语义分割里门槛最高的方向之一。ISIC 是皮肤病变分割数据集包含皮肤镜图像和对应的病变区域掩码。LiTS 是肝脏肿瘤分割数据集有 CT 扫描和肝脏、肿瘤的标注。BraTS 是脑肿瘤分割数据集提供多模态 MRI 和肿瘤子区域标注。医学影像数据集的使用有几个特殊点。第一图像格式通常是 DICOM 或者 NIfTI不是常见的 JPEG/PNG需要专门的库来读取比如 pydicom、nibabel。第二数据维度是 3D 的CT 和 MRI 都是体积数据分割模型需要处理 3D 卷积或者 2.5D 切片。第三类别极度不平衡病变区域往往只占整张图像的很小一部分损失函数需要用 Dice Loss 或者 Tversky Loss 来处理。提示医学影像数据集通常有严格的伦理和使用协议下载前要仔细阅读许可条款确认自己的使用场景是否被允许。3.3 遥感语义分割数据集LoveDA、PotSdam遥感语义分割和自然图像分割的差异很大。遥感图像是俯视视角目标尺度变化大类别体系也不同通常包括建筑、道路、水体、植被、农田等。LoveDA 有 5987 张高分辨率遥感图像覆盖城市和农村场景。PotSdam 是另一个遥感语义分割数据集标注精度较高。遥感图像的一个特点是多光谱。很多遥感数据集除了 RGB 还有近红外波段这对植被分析特别有用。如果你的任务涉及植被监测或者土地利用分类一定要用上近红外波段不要只拿 RGB 训练。4. 人脸识别与人体分析数据集从检测到属性人脸和人体相关的数据集在安防、零售、娱乐等行业应用广泛。这个方向的数据集有个特点伦理敏感性高很多经典数据集因为隐私问题已经下架或者限制使用选择时要特别注意合规性。4.1 人脸检测与识别WIDER FACE、LFW、CelebAWIDER FACE 是人脸检测数据集有 32203 张图393703 个人脸框覆盖不同尺度、姿态、遮挡、表情。LFW 是人脸识别验证数据集有 13233 张图5749 个人用来评估人脸验证的准确率。CelebA 有 20 万张名人脸图40 个属性标注适合做人脸属性识别。WIDER FACE 的难点在于小人脸和遮挡人脸。数据集中有大量人脸尺寸小于 20×20 像素还有各种遮挡情况。训练人脸检测器时需要对小脸和遮挡脸做专门的数据增强比如随机缩放、随机遮挡、马赛克增强。LFW 的评估协议是人脸验证给一对图片判断是不是同一个人。这个协议跟实际的人脸识别系统有差异实际系统通常是 1:N 的检索或者比对。所以 LFW 上的准确率只能作为参考不能完全代表实际性能。4.2 人体姿态估计COCO Keypoints、MPIICOCO Keypoints 是人体关键点检测的标准数据集标注了 17 个关键点包括鼻子、眼睛、耳朵、肩膀、手肘、手腕、髋部、膝盖、脚踝。MPII 有约 25K 张图标注了 16 个关键点还有人体框和活动类别。姿态估计的难点在于遮挡和复杂姿态。COCO Keypoints 里有很多人被遮挡或者做瑜伽、体操等复杂动作。训练时需要用 OKSObject Keypoint Similarity作为评估指标而不是简单的像素距离。另外自顶向下和自底向上两种范式对数据集的使用方式不同自顶向下需要先用人脸或者人体检测器框出每个人再对每个人做关键点回归自底向上是先检测所有关键点再聚类成不同的人。4.3 行人重识别Market-1501、DukeMTMC-reID行人重识别是跨摄像头的行人检索任务给定一个行人的图片在另一个摄像头拍摄的图片中找到同一个人。Market-1501 有 1501 个行人32668 张图6 个摄像头。DukeMTMC-reID 有 1812 个行人36411 张图8 个摄像头。行人重识别的核心挑战是跨摄像头的外观变化光照不同、角度不同、分辨率不同、遮挡情况不同。常用的方法包括特征对齐、度量学习、重排序。训练时需要用三元组损失或者四元组损失确保同一个人的特征距离小于不同人的特征距离。5. 图像增强与复原数据集低层视觉的基石图像增强与复原包括去噪、去模糊、超分辨率、去雨、去雾、低光增强等任务。这些任务的数据集构造方式跟高层视觉不同通常需要成对的低质量图像和高质量图像。5.1 超分辨率Set5、Set14、BSD100、DIV2KSet5 和 Set14 是超分辨率的小型基准数据集分别只有 5 张和 14 张图用来快速评估。BSD100 有 100 张自然图像。DIV2K 是训练集有 800 张 2K 分辨率的高质量图像用来训练超分辨率模型。超分辨率的评估指标是 PSNR 和 SSIM。但这两个指标跟人眼感知并不完全一致有时候 PSNR 高的结果看起来反而更模糊。所以近年来的研究越来越关注感知质量引入了 LPIPS、NIQE 等指标。实际使用中如果你做的是监控图像超分PSNR 更重要如果是照片美化感知质量更重要。5.2 去噪SIDD、DNDSIDD 是智能手机图像去噪数据集包含真实噪声图像和对应的干净图像。DND 也是真实噪声数据集但只提供噪声图像和评估服务器不公开干净图像防止过拟合。真实噪声和合成噪声高斯噪声的分布差异很大。在合成噪声上训练的模型拿到真实噪声图像上效果往往不好。所以现在去噪研究的主流是用真实噪声数据集训练。SIDD 提供了成对的真实噪声和干净图像是目前最常用的真实去噪基准。5.3 去雾RESIDERESIDE 是去雾数据集包含室内和室外场景有合成雾图和真实雾图。合成雾图用大气散射模型生成真实雾图是实际拍摄的。去雾的难点在于雾的浓度和分布不均匀而且真实雾图的干净参考图很难获取。实际做去雾项目时如果只有真实雾图没有干净参考可以用无监督或者自监督的方法比如 CycleGAN 的思路或者用物理模型引导的网络结构。但评估会比较困难通常只能靠主观视觉判断。6. OCR与文本检测识别数据集文档数字化的核心OCR 方向的数据集分文本检测和文本识别两类。文本检测是找出图像中文字的位置文本识别是把文字区域转成字符序列。6.1 文本检测ICDAR 2015、Total-Text、CTW1500ICDAR 2015 是自然场景文本检测数据集有 1000 张训练图和 500 张测试图标注是四边形框。Total-Text 增加了弯曲文本标注是多边形。CTW1500 也是弯曲文本数据集标注是 14 个点的多边形。文本检测的难点在于任意形状文本。传统方法用水平框或者旋转框但弯曲文本用四边形框会包含大量背景。现在的主流方法是用多边形或者像素级分割来表示文本区域。训练时需要用 Dice Loss 或者 IoU Loss 来处理分割输出。6.2 文本识别IIIT5K、SVT、ICDAR 2013IIIT5K 有 5000 张裁剪好的文本图像SVT 有 350 张ICDAR 2013 有 3000 张。这些数据集都是裁剪好的单词图像用来评估文本识别模型。文本识别的主流方法是 CRNN 加 CTC 或者注意力机制。CRNN 用 CNN 提取特征RNN 建模序列CTC 做对齐。注意力机制的方法则用 Seq2Seq 框架编码器是 CNN解码器是 RNN 加注意力。两种方法各有优劣CTC 训练更稳定注意力方法在长文本上表现更好。7. 视频理解数据集从动作识别到目标跟踪视频理解比图像理解多了时间维度数据集也更大更复杂。视频数据集通常以视频片段为单位标注包括动作类别、时序边界、目标轨迹等。7.1 动作识别UCF101、KineticsUCF101 有 101 个动作类别13320 个视频片段。Kinetics 有 400 到 700 个类别每个类别至少 400 个视频片段规模非常大。动作识别的模型通常用 3D 卷积或者双流网络双流网络分别处理 RGB 帧和光流。UCF101 的类别包括体育运动、乐器演奏、人物交互等。Kinetics 的类别更广泛覆盖日常动作、运动、社交活动等。训练动作识别模型时视频解码是性能瓶颈需要用高效的视频读取库比如 decord 或者 PyAV不要用 OpenCV 逐帧读取。7.2 目标跟踪OTB、VOT、MOTOTB 和 VOT 是单目标跟踪数据集给定第一帧的目标框跟踪后续帧中的目标。MOT 是多目标跟踪数据集需要同时跟踪多个目标并保持 ID 一致。单目标跟踪的评估指标是成功率Success和精度Precision。多目标跟踪的指标是 MOTA、IDF1、HOTA 等。MOT 数据集的难点在于目标遮挡、目标消失重现、相似目标混淆。实际做多目标跟踪时检测器的质量对跟踪效果影响很大检测不准跟踪肯定不准。8. 遥感与地理空间数据集从分类到变化检测遥感方向的数据集在前面语义分割部分提了一些这里补充分类和变化检测的数据集。8.1 遥感场景分类UC Merced、AID、NWPU-RESISC45UC Merced 有 21 类场景每类 100 张图分辨率 256×256。AID 有 30 类约 10000 张图。NWPU-RESISC45 有 45 类每类 700 张图。这些数据集用来做遥感场景分类比如区分农田、森林、城市、河流等。遥感场景分类的难点在于类内差异大、类间差异小。同一条河流在不同季节、不同光照下差异很大而农田和草地可能看起来很像。常用的方法是引入多尺度特征融合和注意力机制让模型关注判别性区域。8.2 变化检测LEVIR-CD、WHU-CD变化检测是比较两个时间点的遥感图像找出发生变化的区域。LEVIR-CD 有 637 对高分辨率图像标注了建筑变化。WHU-CD 也是建筑变化检测数据集。变化检测的模型通常用孪生网络两个分支共享权重分别提取两个时间点的特征然后融合特征做变化区域分割。难点在于伪变化季节变化、光照变化、配准误差都会导致伪变化。训练时需要用数据增强模拟这些伪变化提高模型的鲁棒性。9. 医学影像数据集从分类到三维重建医学影像在前面分割部分提了 ISIC、LiTS、BraTS这里补充分类和检测的数据集。9.1 医学影像分类ChestX-ray14、Diabetic RetinopathyChestX-ray14 有 112120 张胸部 X 光片14 种疾病标注。Diabetic Retinopathy 是糖尿病视网膜病变数据集有多个等级的分类标注。医学影像分类的难点在于标注噪声不同医生的标注可能不一致有些疾病的确诊需要结合其他检查。训练医学影像分类模型时数据增强要特别小心。自然图像常用的随机裁剪、旋转、颜色抖动在医学影像上可能改变病变的形态或者密度导致标签失效。建议用保守的增强策略比如小角度旋转、轻微平移、亮度对比度微调。9.2 医学影像检测LUNA16、DeepLesionLUNA16 是肺结节检测数据集有 888 个 CT 扫描标注了肺结节的位置和直径。DeepLesion 有 32120 个病灶标注覆盖多种器官和病灶类型。医学影像检测的难点在于病灶尺寸小、对比度低而且 3D 上下文信息很重要。肺结节检测通常用 3D CNN 或者 2.5D 切片先做候选检测再分类过滤假阳性。LUNA16 的评估指标是 FROCFree-response ROC关注不同假阳性率下的召回率。10. 自动驾驶数据集多传感器融合的试验场自动驾驶数据集通常包含相机、激光雷达、毫米波雷达等多种传感器数据标注包括 2D 框、3D 框、语义分割、车道线等。10.1 KITTI、nuScenes、Waymo Open DatasetKITTI 是最经典的自动驾驶数据集有相机图像、激光雷达点云、GPS/IMU 数据标注包括车辆、行人、骑行者。nuScenes 有 1000 个场景每个场景 20 秒包含 6 个相机、1 个激光雷达、5 个毫米波雷达。Waymo Open Dataset 规模更大有 1150 个场景标注质量很高。这些数据集的使用门槛不低。激光雷达点云是 3D 的需要专门的库来读取和可视化比如 Open3D、PCL。多传感器融合需要做时间同步和空间标定把不同传感器的数据对齐到同一坐标系。标注格式也各不相同KITTI 用文本文件nuScenes 用数据库Waymo 用 protobuf。10.2 车道线检测CULane、TuSimpleCULane 有 133235 张图标注了车道线场景包括城市、乡村、高速公路。TuSimple 有 6408 张图标注是车道线的点序列。车道线检测的难点在于遮挡和复杂光照还有车道线本身的模糊和断裂。车道线检测的方法分两类基于分割的方法和基于检测的方法。分割方法把车道线当像素级分割任务检测方法直接回归车道线的点坐标或者多项式参数。两种方法各有优劣分割方法对遮挡更鲁棒检测方法速度更快。11. 工业与农业数据集垂直领域的刚需工业和农业数据集虽然不如通用数据集出名但在实际落地中价值极高。11.1 工业缺陷检测MVTec AD、NEU-DETMVTec AD 是工业异常检测数据集有 15 个类别包括纹理和物体训练集只有正常样本测试集有正常和异常样本。NEU-DET 是钢材表面缺陷数据集有六类缺陷。MVTec AD 的设定是无监督异常检测训练时只有正常样本测试时要找出异常区域。这个设定非常贴近实际工业场景因为缺陷样本很难大量收集。常用的方法包括自编码器、GAN、特征嵌入方法。评估指标是 AUROC按图像级和像素级分别计算。11.2 农业数据集PlantVillage、DeepWeedsPlantVillage 有 54306 张植物叶片图像38 个类别包括健康叶片和患病叶片。DeepWeeds 有 17509 张杂草图像9 个类别。农业数据集的难点在于田间环境的复杂性光照变化、土壤背景、叶片重叠、病虫害程度不一。实际做农业图像项目时实验室环境下训练的模型拿到田间往往效果下降明显。建议在数据采集阶段就尽量覆盖不同光照、不同角度、不同生长阶段训练时用强数据增强模拟田间变化。12. 三维点云与深度估计数据集从2D到3D的跨越三维视觉是近年来的热点数据集包括点云分类分割、深度估计、三维重建等。12.1 点云分类分割ModelNet、ShapeNet、S3DISModelNet 有 127915 个 3D CAD 模型40 个类别。ShapeNet 有 300 万个模型55 个类别还有部件级标注。S3DIS 是室内场景点云数据集有 6 个区域的 3D 扫描标注了 13 个语义类别。点云数据处理跟图像完全不同。点云是无序的、稀疏的、旋转不变的。PointNet 是最早直接处理点云的深度学习模型用对称函数保证置换不变性。后续的 PointNet、DGCNN、Transformer 方法在此基础上改进。实际使用中点云需要先做下采样、归一化、旋转增强否则训练很难收敛。12.2 深度估计NYU Depth、KITTI DepthNYU Depth 是室内深度数据集有 1449 张 RGB-D 图像标注了深度图。KITTI Depth 是室外深度数据集用激光雷达生成深度真值。深度估计的方法分监督和自监督监督方法直接用深度真值训练自监督方法用立体图像或者视频序列构造监督信号。深度估计的评估指标包括 RMSE、ABS REL、δ 精度。室内和室外的深度分布差异很大室内深度范围通常 0.5 到 10 米室外可能到 80 米。训练时需要对深度做归一化或者对数变换否则大深度值会主导损失函数。13. 数据集使用中的通用避坑经验聊完 12 大类数据集再分享一些跨数据集的通用经验。这些是我在实际项目中踩过坑之后总结出来的跟具体数据集无关但每一条都影响过我的项目进度。13.1 标注格式转换别等到训练时才处理不同数据集的标注格式五花八门VOC 用 XMLCOCO 用 JSONYOLO 用 TXTKITTI 用 TXT 但格式不同DOTA 用旋转框 TXT。如果你要混合多个数据集训练第一步就是统一标注格式。我的做法是写一个转换脚本把所有数据集的标注统一转成 COCO 格式。COCO 格式的兼容性最好主流框架都支持而且 JSON 结构清晰方便做统计分析。转换时要注意类别 ID 的映射不同数据集的类别体系不一样合并时要么取交集要么重新定义类别。提示转换脚本一定要做验证随机抽几张图可视化标注框确认转换后的框位置和类别都正确。我见过太多人转换完直接训练结果 mAP 一直上不去最后发现是标注框偏移了几个像素。13.2 数据泄漏训练集和测试集必须严格隔离数据泄漏是学术研究和工业项目都容易犯的错误。常见的数据泄漏包括同一张图的不同增强版本分别出现在训练集和测试集同一个视频的相邻帧分别出现在训练集和测试集同一个病人的不同切片分别出现在训练集和测试集。避免数据泄漏的方法是按实体划分数据集而不是按样本。如果是视频数据按视频划分如果是医学数据按病人划分如果是同一场景的多张图按场景划分。划分完之后检查训练集和测试集的类别分布是否一致如果不一致需要重新划分或者用分层抽样。13.3 评估指标的选择别只看一个数不同任务的评估指标不同但共同的原则是不要只看一个指标。分类任务看准确率的同时要看混淆矩阵检测任务看 mAP 的同时要看不同 IoU 阈值下的 AP分割任务看 mIoU 的同时要看每个类别的 IoU。我见过一个项目模型在测试集上的整体准确率 95%看起来很好但混淆矩阵显示某个重要类别的召回率只有 60%。如果只看整体准确率这个问题就被掩盖了。所以评估时一定要分类别看指标找出短板类别针对性优化。13.4 数据增强不是越多越好数据增强是提升模型泛化能力的有效手段但增强策略要跟任务匹配。分类任务可以用随机裁剪、翻转、颜色抖动检测任务要注意裁剪后框的坐标要同步变换分割任务要注意掩码也要做同样的几何变换。有些增强策略在特定任务上是有害的。比如医学影像分类颜色抖动可能改变病变的颜色特征导致标签失效。遥感图像分类垂直翻转可能不符合地理常识因为河流的流向、建筑的朝向是有规律的。所以增强策略要根据数据特点来设计不能盲目套用。14. 从数据集到模型我的实际工作流最后分享一下我从拿到数据集到训练出可用模型的实际工作流。这个流程不一定适合所有人但至少是我试过比较顺的路径。第一步是数据探查。拿到数据集后先统计类别分布、图像尺寸分布、标注框尺寸分布。如果类别极度不平衡先想好怎么处理。如果图像尺寸差异大确定统一的输入尺寸。如果标注框尺寸偏小考虑提高输入分辨率或者用专门的小目标检测方法。第二步是可视化验证。随机抽几十张图把标注画上去肉眼检查标注质量。这一步能发现很多问题标注框偏移、类别标错、漏标、重复标注。如果标注质量差要么清洗数据要么换数据集。第三步是基线模型。选一个成熟的模型和训练配置先跑通整个流程得到一个基线指标。不要一上来就调参或者改结构先确认数据管道、训练循环、评估代码都没问题。第四步是错误分析。看基线模型在哪些样本上出错是分类错还是定位错是漏检还是误检。根据错误类型决定优化方向如果是分类错可能需要更强的骨干网络或者更好的数据增强如果是定位错可能需要调整回归损失或者 anchor 设置。第五步是迭代优化。每次只改一个变量记录指标变化。改完一个变量确认有效后再改下一个。不要同时改多个变量否则无法判断哪个改动起了作用。这套流程看起来慢但实际上比盲目试错快得多。我见过太多人一上来就改模型结构调各种超参数跑了几十组实验最后发现是数据标注有问题。先把数据搞清楚再动模型这是最省时间的做法。150 个数据集也好12 大类也好数量本身不是目的。目的是让你在遇到一个新任务时能快速找到对应的数据集知道这个数据集的标注格式、评估指标、常见坑然后快速跑通基线把精力集中在真正需要创新的地方。数据集是起点不是终点。