做研究这几年,收藏夹里躺了快一百个数据集下载链接。今天想聊一个平时很少有人系统讲过、但每个做实验的人都绕不开的话题:论文数据集。你可能也遇到过这样的情况——读一篇论文觉得方法很厉害,想复现,结果第一步就卡在数据集上,不知道去哪下载、不知道它到底是什么格式、也不知道这个数据集到底适不适合你手里的任务。这篇文章把我在各个方向用过、以及身边人常提到的数据集做一个系统梳理,覆盖经典入门、计算机视觉、工业故障诊断、医学与遥感、图网络与多模态几个方向,尽量说清楚每个数据集能做什么、怎么拿到手、坑在哪里。
1. 为什么说数据集才是论文的"隐形作者"
做科研评价一篇工作的时候,大家习惯性把注意力放在模型结构、损失函数、训练技巧上,但真正决定一篇论文上限的,往往是它脚下那块数据。同样的一个网络,在MNIST上跑出99%的准确率,换到ImageNet上可能连及格线都够不着,这不是模型变了,是数据变了。
我自己的体会是,选数据集本质上是在选一个"问题空间"。你选CWRU轴承数据集,那你研究的就是旋转机械的健康状态识别;你选KITTI,那你做的就是自动驾驶感知;你选BlogCatalog,那你做的是图结构上的节点分类。数据集直接定义了你的问题边界和评估标准,所以在动手之前把数据集的性质搞清楚,比急着调参重要得多。
顺着这两年学术界和工业界的趋势看,数据集本身越来越成为一个"研究对象"。早些年大家默认用UCI、MNIST这种公开data,后来CV方向形成了以ImageNet、COCO为核心的benchmark体系,再后来自动驾驶带火了KITTI、nuScenes,工业领域则慢慢沉淀出CWRU这样的事实标准。最近还有"具身智能数据集质量要求及评价方法"这类标准的讨论,说明数据集已经从附属品变成了研究基础设施。
基于这个背景,我按方向把常见的、还有热搜里大家问得比较多的数据集分成几类:经典入门、计算机视觉基准、工业信号、医学遥感特殊场景、图网络与多模态,每一类都讲清楚它解决什么问题、格式长什么样、下载和使用的注意事项。
提示:如果你只是想把一篇论文的方法复现出来,优先找论文作者明确提到的数据集和划分方式,不要自己随手找一个近似的就上。数据集不同,结果基本没法对比。
2. 新手村的三个经典:鸢尾花、MNIST 与加州房价
很多人在学术生涯里碰到的第一个数据集就是鸢尾花(Iris)。它只有150条样本、4个特征、3个类别,简单得甚至不需要深度学习就能把分类做得很漂亮。Fisher在1936年用它验证线性判别分析,这个数据集在机器学习教科书里活了快一百年,靠的就是"极小但五脏俱全"——有特征、有标签、有明确的分类边界,非常适合用来验证一个算法在小型表格数据上的基本表现。
MNIST是深度学习的"Hello World"。6万张28×28的手写数字训练图像,加1万张测试图像,总共只有10个类别。它最大的优点是训练起来极其轻量,CPU都能跑,所以适合新手第一次搭神经网络、第一次调学习率、第一次写训练循环。我到现在还记得自己用三层全连接网在MNIST上跑出98%准确率时那种"原来深度学习没那么神秘"的感受。
加州房价(California Housing)则是回归任务里的经典。它是从1990年美国加州人口普查数据里整理出来的,包含每个街区的房价中位数、收入中位数、房屋年龄、房间数等特征。因为二手房价预测和现实生活强相关,这个数据集常被拿来讲解线性回归、决策树、随机森林这些回归模型,也是sklearn里内置的基础数据集之一。它和Iris的差别在于:Iris是分类,这个任务是预测一个连续数值,评估指标用的是误差而不是准确率。
这里还有一个中文机器学习圈绕不开的数据集——西瓜数据集3.0。它来自周志华老师的《机器学习》教材,17条西瓜样本,属性包括色泽、根蒂、敲声、纹理、脐部、触感等,用来判断西瓜是好是坏。很多人看这本书的时候都会拿它来手动推演决策树的划分过程。不过要提醒一句,它本质上是教学用的小样本数据集,拿来学算法原理完全没问题,但不要指望它撑起一篇深度学习论文的实验。
这些经典数据集的共同坑点就是"太小了"。小数据集上模型的随机性非常明显,换个随机种子结果可能就波动好几个点。所以你在跑这些数据的时候要养成一个习惯:固定随机种子、做多次重复实验取均值,不要只报最好的一次。
3. 计算机视觉绕不开的五个 Benchmark:ImageNet、COCO、KITTI、nuScenes 和 DOTA
计算机视觉的方向里,数据集的影响比其他任何领域都要明显。ImageNet算是一个时代的标志。它包含超过1400万张图像、覆盖约2万多个类别,其中用于分类竞赛的子集有一千类。2012年AlexNet在ImageNet上以巨大优势夺冠,直接引爆了深度学习热潮。即便现在很多模型在ImageNet上已经刷到了很高的准确率,它依然是评估图像分类模型泛化能力的默认标尺。一个模型如果在ImageNet上没有合理的成绩,很多审稿人是不会信服你的特征提取能力的。
COCO系列是目标检测和实例分割领域的基准。2017版的结构最常用,值得你花十分钟搞清楚它的目录组织方式:
- train2017、val2017、test2017三个图像文件夹,test的标注不公开,需要提交到评测服务器才能知道分数;
- annotations目录下存放各类标注文件:instances_train2017.json负责目标检测和实例分割,captions_train2017.json负责图像描述生成,person_keypoints_train2017.json负责人体关键点检测;
- json文件内部有info、licenses、images、annotations、categories五个主要字段,其中annotations里的bbox是[x, y, width, height]格式,area表示目标面积,segmentation是多边形或RLE格式的掩码。
COCO的一个隐坑是类别id不是连续排布的。JSON里80个类别的id范围是1到90,中间跳了很多数字,比如第1类是person(id=1),第2类可能是bicycle(id=2),但后面会有空洞。写代码时一定要把category_id重新映射成0到79的顺序id,否则训练过程会在类别维度上出错。
KITTI是自动驾驶领域最有影响力的数据集之一,由德国卡尔斯鲁厄理工学院和丰田美国技术研究院联合发布。它采集自真实道路场景,包含双目图像、激光雷达点云、GPS/IMU数据,覆盖目标检测、目标跟踪、深度估计、语义分割、光流估计等任务。下载KITTI需要去官网注册,它的原始素材分了好几个压缩包,常见的是left color images和velodyne point cloud两部分。如果你只做2D目标检测,可以只下载图像和标注文件,不需要把所有东西都拽下来,因为数据量很大。
nuScenes是Motional(原Aptiv自动驾驶部门)发布的完整自动驾驶数据集,包含波士顿和新加坡两个城市的1000个场景,每个场景约20秒,标注了23类目标。它的最大特点是模态完整:6个摄像头、5个毫米波雷达、1个激光雷达,加上高精地图和CAN总线信息。相比KITTI主要在高速和结构化道路上采集,nuScenes的场景更复杂,对城市道路的覆盖更充分,所以后来很多多模态融合方法、3D目标检测方法都会在它上面做验证。它的下载流程是在官网注册后通过命令行工具下载,全套数据量非常大,动辄以TB计,建议只下载你需要的模态和分割块。
如果你做的是遥感图像或任意方向目标检测,DOTA数据集是这个领域绕不开的一块硬骨头。它采集了大量航空影像,标注的是旋转框(Oriented Bounding Box,OBB),每个目标不是用正矩形框住的,而是带角度旋转的框。DOTA分为v1.0、v1.5、v2.0等版本,类别数量不同,测试集标注的公开程度也不同。用MMRotate训练DOTA时,你需要把原始标注转成DOTA格式,再通过mmrotate自带的数据集类读取。这里最容易翻车的点是角度定义方式——DOTA给的旋转框是四顶点坐标,而很多旋转目标检测模型内部用的是(x, y, w, h, angle)的表示,转换时要确认清楚角度制是弧度还是角度,坐标系是顺时针还是逆时针,这些细节错一个地方,训练出来的模型mAP会直接崩掉。
除了上面这些,AITODV2是航空图像里的另一个旋转目标检测数据集,场景更大、目标更小,对模型的小目标检测能力要求更高,适合想挑战更难的遥感检测场景的人。COCO和DOTA系列已经在视觉感知方向形成了"通用场景+遥感场景"的覆盖面,基本能满足绝大多数目标检测论文的实验需求。
提示:初次使用这些大数据集时,先跑通一个小的subset,确认数据读取、标签解析、模型输入输出都没问题之后,再上全量数据训练。不然排版问题、类别映射问题、数据加载问题会全部堆在一起,排查起来非常痛苦。
4. 工业信号与故障诊断:CWRU 轴承、行星齿轮箱与电机振动
工业故障诊断是我个人接触下来觉得"数据集极其克制"的领域。它不像CV那样有海量公开数据,工况不同、设备不同、传感器不同,同一个轴承的振动信号可能天差地别。但正因为这样,CWRU轴承数据集成了这个领域事实上的基准。
CWRU由美国凯斯西储大学轴承数据中心发布,是滚动轴承故障诊断里被引用最多的公开数据集。它采集了电机驱动端和风扇端的振动信号,包含正常状态、内圈故障、外圈故障、滚动体故障、保持架故障等类型,故障尺寸有0.007英寸、0.014英寸、0.021英寸、0.028英寸等不同等级,采样频率有12kHz和48kHz两种。下载方式是在官网填写申请表单,审核通过后会收到下载链接,数据是.mat格式和.wav格式混着的,需要用scipy.io.loadmat这样的工具来读取。
我在用CWRU时踩过的一个坑是:网上流传的很多"预处理好的CWRU数据集"实际上是前人切好样本、做完特征工程之后重新打包的,你用这种数据训练模型结果会出奇地高,但换到真实采集的信号上就立刻失灵。原因是这些预处理好数据可能已经做了滤波、去噪甚至混入了重叠切片,导致训练集和测试集之间存在信息泄露。我的建议是自己读原始.mat文件,自己写滑窗切片,把训练集和测试集按"不同负载工况"划分,比如用0 hp负载的数据训练,用1 hp、2 hp负载的数据测试,这才是更有说服力的实验。
除了CWRU,行星齿轮箱数据集在热搜里也很常见。行星齿轮箱结构复杂,振动信号里包含齿轮啮合频率及其边频带,故障特征比普通定轴齿轮箱更难提取。目前公开的行星齿轮箱数据集相对稀缺,因为工业数据往往涉及企业机密,不容易公开。常见的做法有三种:用实验室自建的多级行星齿轮箱台架采集数据;用仿真模型生成故障振动信号;或者从论文作者主页发布的补充材料里找数据。我的经验是,如果你身边有可控的实验台架,自己采集数据做出来的工作反而更有实际价值。
声音振动信号电机数据集是另一个搜索热度很高的方向。电机异常检测通常包含轴承磨损、转子不平衡、定子匝间短路等故障类型,传感器可以是加速度计也可以是麦克风。用麦克风采集声音信号的好处是安装成本低,但缺点是对环境噪声十分敏感,实测时背景噪声很容易淹没早期故障特征。如果你要在这个方向发论文,建议在采集方案里明确标注环境噪声情况,并且使用小波变换或短时傅里叶变换把一维信号变成二维时频图,再送到CNN里做分类,效果往往比1D-CNN直接吃原始信号更稳。
这方向的数据集普遍存在的问题是样本数量少且类别不均衡。正常样本往往远多于故障样本,少数类别的故障样本可能只有几十条。处理的时候要先做类别数量统计,考虑用重采样、合成少数类过采样(SMOTE)或者设计合理的加权损失函数来缓解,不能直接硬训。
5. 医学、遥感与特殊场景:从息肉分割到桥墩病害
这类数据集在通用benchmark之外,服务于更具体的垂直任务,但需求量一直在涨,搜索热词里可以看到息肉分割、桥墩病害、水下管道裂缝、相位偏折、卫星信号信噪比、POI等一大串。
息肉分割数据集是医学图像分割里的常见任务,目标是从内镜图像中分割出肠道息肉的像素级区域。公开的常用数据集包括Kvasir-SEG、CVC-ClinicDB等,样本量不大,通常只有几百到上千张图像,但标注是像素级精细掩码。这类问题的典型难点是目标尺寸不定、图像光照不一致、息肉的边缘模糊,很多通用分割网络直接迁移过来效果并不好,所以也成为不少医学图像论文的研究对象。
MIMIC数据库是重症监护方向最有名的公开数据库,目前MIMIC-IV版本包含数万名ICU患者的人口统计学信息、生命体征、实验室检查、用药、影像报告和护理记录等一系列结构化数据。申请MIMIC需要走一套固定的认证流程:先完成CITI课程中关于人类受试者保护的培训并拿到证书,然后在PhysioNet官网注册账户并提交申请说明研究用途,审核通过后才能访问数据。整个周期通常在几天到两周不等。申请时把研究目的一栏写得具体、措辞规范一些,审核通过率会高不少。由于MIMIC是关系型数据库,常见的操作方式是用PostgreSQL或BigQuery导入后写SQL查询。
OpenNeuro则是一个面向神经影像学领域的数据共享平台,主要存放MRI、fMRI、EEG等数据,它的特色是遵循BIDS(Brain Imaging Data Structure)标准组织文件目录,用官方工具可以很方便地校验和预处理。如果做脑功能连接分析或者神经解码方向,OpenNeuro里的数据集质量整体比较可靠,因为发布时有一套格式校验机制。
桥墩病害数据集和水下管道裂缝数据集则是土木工程与计算机视觉交叉的方向。桥梁检测中需要识别裂缝、剥落、露筋等病害,这些数据的采集依赖专门检测车或无人机,标注工作更要由懂桥梁的专业人员完成,所以公开数据很难得,好多其实是论文作者发布的补充材料。水下管道数据则因为光线衰减、水体浑浊、色偏严重,成像质量和自然图像有巨大差异,做这类任务时域适应和图像增强往往是论文的核心贡献点,单纯拼网络结构很难出彩。
POI数据集(兴趣点数据)在地理信息和城市规划领域用得很多,每条记录包含地理坐标和类别属性,比如餐饮、商场、学校、医院等。公开获取渠道有OpenStreetMap这类众源地图数据,也有部分研究机构发布的去标识化数据集。POI数据经常被用来做城市功能区识别、人口空间化估算、城市活力分析,它的特点是坐标本身就是空间结构,需要配合地理编码和空间分析工具使用。处理POI时注意先做坐标统一,WGS-84、GCJ-02这些坐标系之间的差异在跨城市分析时会造成几百米的偏移,不可忽视。
相位偏折数据集来自光学检测领域,主要用于镜面或透明物体的表面缺陷检测。这类数据在工业质检里价值很高,但公开数据集极少,因为光学检测系统的硬件配置高度定制化。真要用到的时候,大概率得自己搭一套偏折测量装置并自己标注。卫星信号信噪比数据集则和导航通信质量紧密相关,一般从GNSS接收机采集,包含每颗卫星在不同时刻的载噪比、仰角、方位角等参数,可以用于信号质量评估、干扰检测和定位精度分析。因采集环境不同、接收机不同,这类数据很难出一个公认的big benchmark,论文里通常还是各用各的数据。
特殊场景数据的共同规律是:标注成本高、获取门槛高、格式统一性差。如果你准备进入这些方向,第一步不是找模型,而是找到、甚至自己制作一份质量可靠的数据集。
6. 图神经网络、驾驶轨迹与多模态的冷门宝藏
图神经网络方向的数据集在热搜里虽然不像视觉和轴承那么密集,但BlogCatalog和Cliopatria这类词出现得很频繁,说明研究图结构的人正在变多。
BlogCatalog是图神经网络里常用的社交网络节点分类数据集。它的节点代表博主,边代表博主之间的好友或社交关系,标签是博主的兴趣类别。下载之后通常是.mat格式,里面包含邻接矩阵和标签矩阵,使用PyTorch Geometric这样的库处理时需要转换成边的列表格式。这类数据的典型问题是图的规模不大、标签分布不均衡,很多GNN方法在上面跑出来的准确率相差不大,所以现在论文里纯靠这个数据集已经很难说明问题,一般会搭配Cora、Citeseer、Pubmed这些经典引文网络一起用。
Cliopatria则是历史学科的一个图数据集,它基于历史学者之间的合作关系和引用关系构建,涉及历史人物、文献、组织等多类实体和关系。它在图神经网络里常被当作异构图或知识图谱场景的测试集。如果你第一次处理这类数据,要特别注意它的实体类型和关系类型非常多,不像社交网络那样只有"人-人"关系,处理起来需要在构图时做类型编码。
HighD数据集是自动驾驶轨迹预测方向的benchmark,由德国亚琛工业大学用无人机在真实高速公路上方拍摄收集,包含数千辆车的精确轨迹、车型、车道位置和周边车辆关系。它提供的是每辆车每一帧的位置、速度、加速度和转向信息,常被用来训练车辆轨迹预测和场景生成模型。相比KITTI和nuScenes这种多传感器大而全的数据集,HighD很聚焦——它没有相机图像,就是纯轨迹数据,但正因为这样它非常轻量,适合快速验证轨迹预测算法。
D-Vlog这类视频数据的特征是"日记体"内容,数据来自个人录制的视频博客,包含长时间连续的面部表情和语音信息,常被用来做连续情感识别、人格推断和多模态交互分析。它的挑战在于时间跨度长、环境不固定、个体差异大,标签通常是在时间轴上连续标注的情感效价和唤醒度,处理起来和短时视频分类完全不同。
DTU数据集则是三维重建领域的经典基准,来自丹麦技术大学,包含一个场景从多个视角拍摄的图像以及对应的相机内外参数,MVS(多视角立体视觉)方法基本上都会在它上面评估重建精度。它的数据结构是每个场景一个文件夹,里面有图像序列和相机参数文件,需要注意不同场景的编号和相机畸变参数,加载时容易踩坑。
视觉关系数据集做的是图像中目标之间关系的识别,比如"人骑自行车""狗追球"这种(主语,谓语,宾语)三元组,典型的有Visual Genome等,这个方向的核心难点不在于目标检测本身,而在于关系建模和长尾分布的处理。
多模态数据集在近两年特别火,常见的是图文对、音视频加文本的组合。这类数据一般体量巨大,下载和预处理都是以TB为单位,之前很多人问的"多模态数据集下载"往往就卡在这里——链接失效、分卷压缩包丢包、元信息不一致都是家常便饭。我建议下载大文件时务必记录校验值,处理完一批马上归档一批,千万别全堆在一个文件夹里。
7. 数据集获取与格式转换的一线实战笔记
很多时候你遇到的问题是"知道数据集名字,但不知道怎么把它变成能训练模型的格式"。这里我把几个高频操作写出来,都是可以直接照着做的。
**先说说下载这一类事。**几乎每个正规数据集都有自己的官网下载渠道,学术数据集的常见获取方式包括:官网注册后申请、通过HuggingFace等平台直接下载、论文作者主页提供的网盘链接、以及用官方命令行工具下载。申请制的数据集(比如MIMIC和很多医学数据)审核不通过很常见,填表的时候要把研究用途、数据使用范围、是否用于商业、数据存储方式写清楚,不要只写"做深度学习"这么一句话。对于超大文件集,优先用官方提供的下载工具而不是浏览器一个个点,mega、azcopy这些工具支持断点续传,可以省下大量重下的时间。
**格式转换是出问题最多的地方。**目标检测里最常用的两个格式是YOLO的txt格式和COCO的json格式。YOLO标注格式是每个txt文件对应一张图,每一行是"class_id x_center y_center width height",坐标都是归一化到0到1的浮点数;而COCO的json结构复杂很多。写一个YOLO转COCO的脚本,核心步骤是先读取所有txt文件,把归一化坐标乘回图像宽高得到像素坐标,再生成对应的images、annotations、categories三个数组,最后json.dump写出去。转换时有一个非常容易错的地方:yolo的class_id是从0开始编号的,coco的category_id一般从1开始编号(不过具体要看你的数据集怎么定义),两边要不要加1、加多少,直接决定了mAP计算结果,建议转完以后随机挑几张图可视化检查一下框是否贴合目标。
LoRA数据集的json格式在微调扩散模型时特别常见,通常是每行或每个元素包含image字段和text字段,比如:
[ { "image": "cat_001.png", "text": "a white cat sitting on the sofa, studio lighting" }, { "image": "cat_002.png", "text": "a black cat playing with a ball, outdoor" } ]训练时读入这个json之后,用文本编码器把text转成条件向量、把image转成潜空间特征,再丢给Unet去噪。这种配对数据最怕的是图像描述写得太笼统或者简繁体混用,导致模型学到的语义关联不准确。我自己的经验是描述越具体、越能抓住主体的关键属性越好,类别词尽量统一,不要这张写"猫"、下一张写"猫咪",模型的泛化方向会被分散。
torch创建数据集其实是一个被问了很多次的点。用PyTorch训练模型时,自定义数据集要继承torch.utils.data.Dataset并实现三个方法:__init__负责把文件路径和标签列表加载到内存或准备好索引;__len__返回样本总数;__getitem__接收一个索引,读取对应样本并返回数据和标签。很多新手会在__init__里把所有图片一次性读进内存,遇到大数据集直接爆内存,正确的做法是只保存路径,在__getitem__里才真正读取图像。另一个常用操作是配合torchvision.transforms做数据增强,训练集可以做随机裁剪、翻转、颜色抖动,但验证集和测试集一般只做等比例缩放到固定尺寸,不做随机增强,否则评估指标会失去参考意义。
mmrotate训练DOTA数据集也是提问里的高频词。这里有一个比较实用的步骤:第一步,把DOTA原始txt标注按训练集、验证集划分;第二步,用mmrotate自带的dota2obb脚本把四顶点坐标框转成旋转框格式;第三步,配置data_root路径和类别名。这个流程里测试阶段通常要设置split_size=1024和overlap=200之类的参数,因为遥感图像尺寸太大,需要裁剪成patch输入网络,检测完再把所有patch的结果合并成大图。合并时重叠区域的预测框要去重,一般用NMS或WBF处理,这个环节如果没做好,大图上的mAP会明显低于小图测试结果。
还有一个值得提的方向是"具身智能数据集质量要求及评价方法"这类新标准。近年大家对数据质量的重视程度超过了以往任何时期,因为具身智能领域的数据涉及多传感器同步、空间位姿标注、操作时序标注等多个维度,质量好坏直接决定模型能否学到可迁移的技能。做这类任务时,需要把数据集采集时的时间对齐误差、传感器标定误差、标注一致性都记录下来,这既是对自己模型的负责,也方便后续写论文时给出清晰的数据说明。
8. 一点个人的小经验
这些数据集用下来,我有一个很深的体会:数据集不是一个静态的下载动作,而是一条完整的数据工程链路。从找到数据、读懂格式、做数据清洗、设计数据划分,到训练时做数据增强、测试时做结果合并,每一个环节都可能让实验结果产生巨大波动。很多人复现不出SOTA结果,原因往往不在模型代码,而在数据处理细节。
我在实际使用中养成了几个习惯,分享出来供参考:
第一个是拿到任何新数据集,先花十分钟看数据分布。统计类别数量、检查图像尺寸是否有异常、画出标签的分布直方图。这一步能提前暴露很多问题,比如标注文件里出现了坏像素的框、某些类别的样本数少到可以忽略、图像文件名和下划线重名冲突等。
第二个是实验前固定好数据划分方式。很多经典数据集都有官方划分,COCO给出train/val/test划分,CWRU可以按不同的load条件划分,如果数据集的划分方式不唯一,就把你这篇论文用的划分方式写清楚,附上随机种子。我在审稿时见过不少论文明明用的是同一个数据集,但由于随机划分的差异,两个方法之间几个点的准确率差异根本无法判定优劣。
第三个是下载跟着源头走。公开数据集的"二次加工版"存在很大的不可控风险,别人可能在预处理时过滤了部分异常样本,可能改变了采样频率,重建标签时也可能出错。除非你能拿到完整的处理脚本和中间产物,否则尽量用官方源数据,宁可自己多加一步预处理,也不要迷信现成的清理版。
最后再提一句,如果你在对比多个数据集时发现自己的某些类目效果很差,不要急着换模型,先去可视化看模型在这些类目上的预测形态,是特征不清晰、样本严重重叠,还是标注本身就有大量噪声。很多时候,拉开论文实验差距的不是那百分之几的网络结构改进,而是谁更花心思理解自己手里那份数据。