
1. 先聊聊我对“常用数据集”的判断标准1.1 一个视觉数据集到底“好不好用”先看这四点经常有人私信问我“刚接触计算机视觉到底该从哪个数据集开始”“为什么大家翻来覆去就用那老几个数据集新出的不是更大吗”这个问题看着简单但真回答起来挺费劲。因为“数据集”这个词背后是任务类型、标注格式、评测协议、版权约束、下载方式这些一连串现实问题。有的人想做图像分类上来就下载了 COCO结果发现 COCO 的主业是目标检测和实例分割分类只是辅助标注有的人想训练 YOLOv8 做目标检测照着老教程下载了 VOC 2012结果跑了半天才发现只用了 20 个类别和项目里的需求对不上。所以我判断一个数据集“常用不常用”从来不是看它新不新、参数多不多而是看四件事生态成熟度官方是否还维护下载入口配套的 Python API、评估工具是否能用社区里能不能轻松搜到踩坑经验任务覆盖度能不能覆盖图像分类、目标检测、语义分割、实例分割、关键点检测这些主流任务中的至少一个协议稳定度训练集、验证集、测试集的划分是否固定大家发论文的时候能不能在同一条起跑线上横向对比实际生命力今天用 PyTorch、用 MMDetection、用 Ultralytics 的人是不是还在拿它当基准按照这个标准筛下来真正符合的也就是那十来张老面孔。这次我就把其中十个最常用、也最能支撑日常工作的数据集按任务分好类从原理到实操一次性讲清楚。1.2 十大数据集整体画像我先给出一张速览表目标类型、关键规模、常用场景都在里面后文再逐个拆开讲。数据集核心任务规模要点类别规模典型用途ImageNet图像分类、预训练约 128 万张训练图1000 类Backbone 预训练、模型结构对比MS COCO检测、实例分割、关键点训练集约 12 万张80 类目标检测 BenchmarkPASCAL VOC检测、分割VOC2012 约 1.1 万张20 类入门检测框架、格式转换练手Open Images检测、视觉关系900 多万张600 类大规模检测预训练KITTI3D 检测、立体视觉、里程计约 1.5 万张 3D 标注图8 类常用 3 类自动驾驶感知算法Cityscapes语义分割5000 张精细标注30 类评测用 19 类城市场景分割ADE20K场景解析、语义分割约 2.5 万张150 类场景理解、分割预训练CIFAR-10 / CIFAR-100图像分类6 万张 32x32 图10 / 100 类快速实验、教学MNIST手写数字分类7 万张 28x28 图10 类入门教学、全流程调试Fashion-MNIST图像分类7 万张 28x28 图10 类替代 MNIST 做算法对比这里我把 CIFAR-10 和 CIFAR-100 算作一组MNIST 和 Fashion-MNIST 分开算整体刚好十个。你如果仔细看这张表会发现一个有意思的现象真正撑起计算机视觉日常工作的大多不是“新”数据集而是那些已经稳定运行了很多年、大家早已形成默契的老数据。原因很简单论文也好、比赛也好、实际项目也好都需要一个所有人都认的“固定标尺”尺子反复换结果就没法比了。2. 图像分类的三件套ImageNet、CIFAR、MNIST与Fashion-MNIST2.1 ImageNet一切预训练权重的“祖传基座”ImageNet 可能是整个计算机视觉领域出场率最高的数据集。它最初的目标是让机器识别真实世界里的日常物品后来因为 ILSVRC 比赛ImageNet 大规模视觉识别挑战赛彻底火了。我们平时常说的“ImageNet 预训练权重”绝大多数指的是 ILSVRC 2012 分类任务那个子集1000 个类别大约 128 万张训练图5 万张验证图10 万张测试图。我自己用 ImageNet 从来不会直接端到端训练而是重点干三件事加载torchvision或timm里的 ImageNet 预训练权重把它作为迁移学习的起点。这是大多数实际项目最常用的做法哪怕你的任务是工业缺陷检测经过 ImageNet 预训练的 ResNet、ConvNeXt、ViT 也比随机初始化强得多。做模型结构设计时的精度对比。比如你新写了一个注意力模块想证明它有收益最扎实的做法就是在 ImageNet 上跑出 Top-1/Top-5 精度的对比曲线。验证自己在一个小数据上学到的特征到底有没有泛化能力。如果在小数据集上训练出来的权重放到 ImageNet 的图片上提取特征依然有判别力说明你的训练流程是健康的。这里有个新手很容易踩的误区以为 ImageNet 只有“分类标签”其实它还有目标检测数据。很多人拿了 ImageNet 检测子任务去跑 YOLO才发现类别体系和分类任务不完全一样。另外 ImageNet 的 1000 类并不均衡有些细分类别只有几张到几十张图所以用它训练时要额外注意采样策略否则长尾类别会出现欠拟合。还有一个现实问题ImageNet 的原始下载入口有官方申请流程通常需要注册并同意协议。很多教程直接给一句话“去官网下载”但真去操作的人会发现没那么简单。建议用wget配合断点续传或者找高校、机构搭建的合法镜像站。下载完一定要做 MD5 校验我见过不少人在传输过程中文件损坏训练到一半才发现图片打不开。2.2 CIFAR-10 与 CIFAR-100低成本验证 idea 的标配实验田CIFAR 系列是学术界的最爱。CIFAR-10 一共有 6 万张 32x32 的彩色图片10 个类别每个类别 6000 张其中 5 万张训练1 万张测试类别包括飞机、汽车、鸟、猫、鹿、狗、青蛙、马、船、卡车。CIFAR-100 则是 100 个类别每个类 600 张图并且还额外给这 100 个类分了 20 个超类方便你做层级分类实验。为什么大家那么爱用 CIFAR核心就是便宜。32x32 分辨率很小显存占用低一张普通显卡几分钟就能跑完一个 epoch研究数据增强、损失函数、网络结构时可以非常快地试错。我有个习惯新想法先在 CIFAR-10 上验证有效果再上 ImageNet 和大数据集的消融实验这样能省下大量算力成本。但我必须提醒一件事CIFAR 上有效果不代表真实场景一定有效。它的图像背景干净物体占整个画面的比例很高和真实拍摄场景差别非常大。我踩过一个很典型的坑把 CutMix 数据增强在 CIFAR-10 上调参后涨点明显迁移到工厂的零件表面缺陷检测时反而掉点。原因就是 CIFAR 的物体位置大体居中、尺度变化小而真实场景里缺陷目标可能很小也可能被遮挡。所以在 CIFAR 上的结果要当作“高速路测试”而不是“越野测试”。2.3 MNIST 没过时但 Fashion-MNIST 更值得拿来横向对比MNIST 是几乎每个深度学习初学者的第一个数据集7 万张 28x28 的灰度手写数字图10 个类别6 万张训练1 万张测试。它最大的贡献是让所有人知道“深度学习到底是怎么跑起来的”整个数据加载、模型定义、训练循环、精度评估的流程用 MNIST 跑一遍基本就通了。不过如果你现在还要拿 MNIST 做算法对比我劝你换掉。今天随便一个简单 CNN 在 MNIST 上都能轻松做到 99.5% 以上的准确率模型之间的差距几乎被压缩没了区分度太低根本看不出哪个方法更好。我更推荐 Fashion-MNIST。它和 MNIST 长得一模一样同样是 7 万张 28x28 灰度图同样是 10 个类别但内容是 T 恤、裤子、套头衫、连衣裙、外套、凉鞋、衬衫、运动鞋、包、短靴这些服饰物品。它的难度更高也更接近真实业务里的图像复杂度用它做算法对比模型之间的性能差异拉得开实验结果更有参考价值。另外 Fashion-MNIST 的版权约束很宽松数据划分固定连很多论文作者都开始默认用它替代 MNIST。我个人的建议是框架调试用 MNIST算法对比用 Fashion-MNIST两者都不要用于最终的项目效果评估。3. 目标检测和实例分割绕不开的三大数据集3.1 PASCAL VOC入门检测框架的第一站PASCAL VOC 是目标检测和语义分割领域的元老级数据集很多老教材都拿它举例。目前大家用得最多的是 VOC 2007 和 VOC 2012 两个版本共同点是 20 个类别人、鸟、猫、牛、狗、马、羊、飞机、自行车、船、公共汽车、汽车、摩托车、火车、瓶子、椅子、餐桌、盆栽、沙发、电视。在检测任务里社区里约定俗成的训练方式是“0712”用 VOC 2007 的 trainval 加上 VOC 2012 的 trainval 一起训练再用 VOC 2007 的 test 做测评。为什么这么组合因为 VOC 2012 的官方 test 标签没有公开需要提交到官方评测服务器才能拿到结果而 VOC 2007 的 test 标签是公开的所以大家在本地就能自行评估。VOC 数据集的优势是标注干净、格式简单每个目标是一个 XML 文件告诉你类别、边界框坐标、是否截断、是否困难等非常容易解析。YOLOv5、YOLOv8、MMDetection 等框架都内置了 VOC 格式的支持所以它特别适合用来学习检测框架的完整流程。但它的短板也很明显类别少只有 20 类图片数量也就一万多张按现在的标准来说规模不大再加上很多类别的目标偏大难度不够。如果拿来入门、拿来练手、拿来验证自己的框架理解完全没有问题如果要做真实项目还需要额外补充数据才能上量。3.2 MS COCO检测指标界的“国际比赛”MS COCOMicrosoft Common Objects in Context几乎是当前目标检测领域公认的评测标准。它包含 80 个物体类别训练集约 12 万张图片验证集约 5000 张测试集约 2 万张。和 VOC 不同COCO 的标注不只是边界框还包含实例分割掩码、全景分割标注、图像描述、人物关键点等信息种类非常丰富。COCO 为什么会成为事实标准关键在于它把评测指标推上了一个台阶。VOC 时代大家普遍用 mAPIoU0.5也就是 AP50COCO 直接改成在 IoU 从 0.5 到 0.95 之间每隔 0.05 取一次平均算出一个综合 mAP。这个指标更严格也更贴合真实场景中目标框“不能太粗糙”的要求。现在发论文如果不报 COCO 的 mAP[0.5:0.95]审稿人通常都会追问。用 COCO 时有几点我需要反复提醒COCO 数据集的类别 ID 不是连续的 0-79而是从 1 到 90 之间有跳号。比如“人”的类别 ID 是 1“自行车”是 2但“汽车”是 3“摩托车”是 4“飞机”是 5整体顺序和名称排序有关。在 DIY 训练流程时一定要做类别 ID 的连续映射否则模型输出层和标注会错位。官方划分是 train2017、val2017训练时不要自己随便重新打乱分配否则你训练模型的评测结果和别人的论文没法对标。val2017 上面跑出的 mAP 只能用来调试真正要参加 COCO 官方比赛需要用 test-dev 集把结果提交到官方服务器。很多人刚接触时拿 test 集本地算精度忽略了官方标签不公开这件事会走弯路。COCO 还有一个常见用途是作为“检测预训练”。有人在大型自定义数据集上做检测时会先在 COCO 上训练几十个 epoch再用这个权重初始化自己的数据。这个方法本身没问题但要注意 COCO 的 80 类和你的业务类别可能差别很大迁移效果不一定是正向的最好做对比实验。3.3 Open Images更接近真实世界的大规模选项如果说 COCO 是“精而全”那 Open Images 就是“大而杂”。Open Images 数据集由谷歌维护最新版本的图片总量超过 900 万张其中带有边界框标注的训练集就覆盖了 600 多个类别标注框数量达到千万级。更难得的是它除了目标框还提供视觉关系标注、图像级标签和分割掩码层次非常丰富。我项目里用到 Open Images 的场景主要是两个做大规模检测预训练。当业务数据和 COCO 差异较大时在 Open Images 上预训练一个检测器再迁移到业务数据上有时会比直接用 ImageNet 分类权重更好因为它包含了检测任务的结构先验。做长尾类别和多标签分类研究。Open Images 的图片很多并非只有一个主物体标注本身就是多标签的这非常贴近真实相册或视频监控画面。不过 Open Images 用起来门槛比 COCO 高。它的类别体系有层级关系比如“动物”下面有“哺乳动物”“哺乳动物”下面又有“狗”“狗”下面还有“金毛犬”。如果你直接用扁平化的类别清单训练父类和子类之间的标签会被错误地当作互斥关系导致结果混乱。正规做法是理解标签树的剪枝规则根据任务需要保留合适的层级。还有一个问题是 600 个类别的数量对普通学生党来说偏多光是类别均衡和数据采样就要花不少功夫所以新手我不建议第一个检测项目就用它。4. 自动驾驶感知KITTI与Cityscapes4.1 KITTI3D检测任务的多模态老大哥KITTI 是自动驾驶领域最经典的数据集由德国卡尔斯鲁厄理工学院和丰田美国研究院联合打造。它用的是真实车辆在德国卡尔斯鲁厄市区、乡村和高速公路上采集的数据包含图像、雷达点云、GPS/IMU 导航信息等多种模态。目标检测任务里有 14999 张图片其中 7481 张用于训练7518 张用于测试标注的目标类别包括 Car汽车、Pedestrian行人、Cyclist自行车骑行者等。对这个数据集我特别想纠正一个误区很多人以为 KITTI 只能做 2D 检测。实际上它在 3D 目标检测、立体视觉匹配、光流估计、视觉里程计、多目标跟踪这些任务上都有对应标注尤其是 3D 检测像 PointPillars、SECOND、PV-RCNN 这些经典算法都是在 KITTI 上比较的。它每一帧都提供了 Velodyne 激光雷达点云以及相机与激光雷达之间的标定参数这是很多纯视觉数据集没有的宝贵信息。实操中 KITTI 有几个容易让人难受的地方官方没有公开测试集标签本地验证时需要自己从官方训练集里再切出一部分。社区里最常见的做法是把 7481 张训练图再次按约 1:1 的比例划分成 train 和 val。但不同论文的划分方法可能不一样所以对比精度时一定要看对方用的是哪个 split。KITTI 的困难等级分为 Easy、Moderate、Hard 三档取决于目标高度、截断程度、遮挡程度。三个档位的结果差异会非常大写报告时别只挑最好看的 Easy 数据报。数据中有连续帧的相似场景。如果在做车辆目标检测划分训练集和验证集时千万别把同一段连续帧分别放进 train 和 val否则会变相“泄题”得到的精度虚高换到新路段上就露馅。KITTI 还有很多配套工具比如kitti2bag把 KITTI 转成 ROS bag以及官方的devkit评估工具。跑 3D 检测算法前先把这个评估工具跑通能省去很多后期对齐坐标的麻烦。4.2 Cityscapes街道级语义分割的高分辨率标尺Cityscapes 是城市街景语义分割领域使用率最高的数据集影像来自德国等地 50 个城市的街道图像分辨率为 2048x1024一共包含 5000 张精细标注的图片另外还有 2 万张粗糙标注的图片。类别有 30 个但官方评测时只用其中 19 个比如道路、人行道、建筑、墙体、围栏、杆子、红绿灯等。这里有个很关键的概念Cityscapes 评估的 19 类不是单纯的“忽略其他类”而是把部分类别做了合并和剔除。如果自己写训练脚本就要把原始标注的 30 个类别 ID 映射到 0-18 这 19 个评测类别上同时把被忽略的类在 loss 里设成 ignore_index。我第一次在这个项目上就吃过亏直接拿原始 30 类去训练模型输出通道写成了 30提交到官方服务器却提示类别数不对后来才发现是评测协议的问题。Cityscapes 对显存要求不低。2048x1024 全分辨率训练一张图在普通 24G 显存的卡上也需要精打细算。常见的做法是使用官方提供的leftImg8bit_sequence序列做预测时可以选择 padding 或者裁剪训练时把 2048x1024 缩放到 1024x512或者做随机裁剪到 768x768能显著降低显存占用分割模型的评估指标主要是 mIoU它计算的是预测掩码和真实掩码的交并比均值。19 类中的道路、建筑这些大类别通常 mIoU 很高反而是杆子、摩托车这类小目标容易被模型忽略也是提分的关键点。Cityscapes 还有一个配套协议注册后可提交测试集结果。因为测试集标签不公开同样要注意评测账号和提交格式别等到项目收尾才发现测试协议填错了。5. 场景解析的隐藏主力ADE20K5.1 场景解析和普通语义分割不完全是一回事ADE20K 是麻省理工学院发布的场景解析数据集训练集有大约 2 万张图片验证集约 2000 张测试集约 3000 张覆盖 150 个语义类别。它的标注不止包含物体还包含大量的场景部件和材质属性比如墙壁、地板、天花板、窗户、门、天空、水、草地、家具、电器等。很多人会把语义分割和场景解析混在一起其实两者的侧重点不一样。语义分割通常专注于有限类别里把每个像素分对场景解析强调的是“整张图的理解”类别覆盖极其密集一张室内图片里可能同时出现几十个不同类别的物体和区域。ADE20K 的计算式粒度使得它对模型的感受野设计、多尺度特征融合能力要求非常高。实际用 ADE20K 做分割训练有几个细节需要特别留意150 个类别中很多类别出现的频率差异极大比如“墙”“地板”几乎每张室内图都有而“水龙头”“烤箱”可能只有极少数样本。直接训练会出现严重的长尾问题常见解决办法是使用类别加权损失或者采样策略。图像分辨率不是固定尺寸有些图只有 300 多像素宽有些则接近 2000 像素训练时通常需要统一调整到固定输入尺寸。这里我建议保留原始宽高比做 resize再用 padding 补到 512x512 或 640x640而不是直接拉伸否则物体比例会发生形变导致小目标更难学。ADE20K 的标注格式和 COCO 类似同样是 JSON但语义分割部分用的是多边形坐标。ML 和纯分割平台之间转换时要特别小心像素坐标是否需要四舍五入以及标注是否闭合。5.2 用 ADE20K 做预训练和评测的实操建议ADE20K 最被低估的价值是它作为通用分割预训练数据集的效果。很多分割模型在 COCO 上预训练再到业务数据上微调但也有团队改用 ADE20K理由是它的类别跨度很广能让模型学到更通用的“像素级语义”先验。我自己试过在 ADE20K 上预训练一个轻量级分割头再迁移到卫星遥感影像的建筑物提取任务上。对比直接用 ImageNet 分类权重初始化ADE20K 预训练权重在小样本情况下确实有一定的提升尤其是对边界区域的分割更干净。不过这个优势在训练数据量超过 5000 张之后会明显减弱所以它更适合标注稀缺的项目。ADE20K 的评估协议也值得注意官方提供的测试集同样不公开标签本地验证通常用 val 集计算 mIoU 和像素准确率pixel accuracy。由于 ADE20K 类别数多且长尾严重很少有人会只看一个 mIoU通常还要配合 per-class IoU 看哪些类拖了后腿。多类别场景下“平均 IoU”比“整体像素准确率”更能反映模型真实水平。6. 实操避坑下载、格式转换、数据集划分6.1 大规模数据集的下载与本地化管理很多人第一次下载 COCO 或 Open Images 时会直接被文件体积吓到。COCO 的 train2017 图片压缩包大约 19G解压后 20 多 GOpen Images 如果下载全量图像需要 TB 级硬盘。所以在动手前先想清楚你只需要哪些子集。我的建议是这样先看任务需求再决定下载范围。如果只是学 YOLOv8 官方项目通常支持自动下载 COCO128 或者用自己的小数据集没必要全量下载 ImageNet。如果是想跑通训练流程用 COCO2017 的 val 集或者 train 集里抽出的几千张就够了。下载工具推荐支持断点续传。比如wget -c、curl -C -或者用成熟的下载工具。COCO 官方链接分布在多个大文件上网络稍不稳定就会中断没有断点续传会让人崩溃。下载完一定校验。很多数据集官方会提供 SHA256 校验值。不要嫌麻烦文件损坏导致训练中途报“图片打开失败”的排查成本远比下载后校验一次高得多。目录结构尽量保持官方原样。比如 COCO 是images/train2017、annotations/instances_train2017.jsonKITTI 是training/image_2放左图、training/velodyne放点云。后续不管是加载 PyTorch 的 Dataset 还是跑现成框架省去自己改路径的麻烦。6.2 COCO JSON 转 YOLO txt一句注释背后全是细节YOLO 系列天然使用 txt 标签格式每行表示一个目标类别ID 中心点x 中心点y 宽度 高度坐标都是相对图像宽高的归一化值。而 COCO 的标注是 JSON边界框是[x, y, width, height]x 和 y 表示框左上角坐标。所以转换时要做两步一是把左上角格式变成中心点格式二是除以图像宽高做归一化。下面这段 Python 代码是我实际项目里常用的简化版import json import os def coco_to_yolo(coco_json_path, output_dir): with open(coco_json_path, r, encodingutf-8) as f: coco json.load(f) # 建立 image_id 到图像信息的映射 img_map {img[id]: img for img in coco[images]} # 把 COCO 稀疏的类别 ID 转换成从 0 开始的连续 ID sorted_cats sorted(coco[categories], keylambda c: c[id]) cat_id_to_new_id {cat[id]: idx for idx, cat in enumerate(sorted_cats)} print(类别映射表:) for cat in sorted_cats: print(f {cat[id]} - {cat_id_to_new_id[cat[id]]} {cat[name]}) # 每个图像的标注先聚合避免重复打开文件 anns_by_img {} for ann in coco[annotations]: img_id ann[image_id] anns_by_img.setdefault(img_id, []).append(ann) os.makedirs(output_dir, exist_okTrue) for img_id, anns in anns_by_img.items(): img img_map[img_id] img_w, img_h img[width], img[height] txt_name os.path.splitext(img[file_name])[0] .txt lines [] for ann in anns: x, y, w, h ann[bbox] # 中心点坐标 cx x w / 2.0 cy y h / 2.0 # 归一化到 0~1 cx / img_w cy / img_h w / img_w h / img_h # 防止浮点误差导致越界 cx max(0.0, min(1.0, cx)) cy max(0.0, min(1.0, cy)) w max(0.0, min(1.0, w)) h max(0.0, min(1.0, h)) new_cat_id cat_id_to_new_id[ann[category_id]] lines.append(f{new_cat_id} {cx:.6f} {cy:.6f} {w:.6f} {h:.6f}) with open(os.path.join(output_dir, txt_name), w, encodingutf-8) as f: f.write(\n.join(lines)) print(f转换完成共 {len(anns_by_img)} 张图片)这段转换脚本里藏着几个非常容易出问题的点类别映射不是简单地按原始 ID 直接用。YOLO 的类别 ID 必须从 0 开始连续排列而 COCO 的类别 ID 是稀疏的直接保留原 ID 会对不上模型输出。归一化时一定要除以当前图片自己的宽高而不是所有图片的最大宽高。如果误用了全局最大值小图上的目标框位置会整体偏移。输出 txt 文件名要和图片名完全对应比如000000000139.jpg对应000000000139.txt区分大小写、后缀名都要严格一致。框架加载标签时通常是用图片路径替换后缀来找 txt任何不一致都会导致训练时漏标签。6.3 train/val/test 划分时的三个隐蔽坑数据集的划分方式直接决定你模型的评估结果靠不靠谱。很多人觉得无非就是随机打乱切一下但在真实场景里有三个坑我见过无数次第一个坑场景重叠。自动驾驶、安防监控这类数据里同一辆车、同一个人可能连续出现在相邻多帧。如果按帧随机划分训练集里出现过的人很可能在验证集里再次出现模型相当于提前“见过答案”。正确做法是按视频片段、按拍摄时间、按目标身份划分保证 train 和 val 中不出现同源目标。KITTI、Cityscapes 这类数据集天然存在这个风险一定要自己处理。第二个坑类别比例失真。目标检测领域长尾现象非常常见比如“行人”有几万标注“骑摩托车的人”只有几百标注。如果随机划分时没有做分层采样验证集里可能不光类别分布和训练集不一致极端情况下某个稀有类别甚至一条标注都抽不到。这时模型在稀有类别上的效果就成了盲盒。建议按类别做 stratified split或者至少保证每类在验证集里都有一定数量。第三个坑测试集“消失”了。有些官方数据集的测试集不公开标注比如 KITTI、Cityscapes、COCO test-dev、ADE20K test都需要提交到官方服务器。很多人不提前注册账号、不熟悉提交格式等到论文要出结果了才手忙脚乱。我的建议是项目一开始就去把官方评测账号注册好并用现成模型跑一次假提交确认流程没问题。6.4 根据任务选型我的个人建议最后给一些非常实际的选择参考你可以按自己的身份对号入座学生刚入门想学目标检测框架直接用 PASCAL VOC 或者 COCO2017 的子集。VOC 数据量小、格式清楚适合跑通流程COCO 更有代表性适合写论文。学术研究发论文需要对比模型精度COCO 的检测和实例分割、ImageNet 的分类、Cityscapes 的分割这三个是硬基准。跑完这三个审稿人通常不会质疑你基准选择。真实业务数据还未收集别纠结于用哪个公开数据集先把任务定义清楚再用本文提到的数据集做预训练同时尽快启动自己的数据采集和标注。公开数据集永远是“起步燃料”不是“最终答案”。算力有限只能小范围试CIFAR-10、Fashion-MNIST 是首选。它们小到可以在单卡上快速跑实验适合验证 idea但不适合作为最终效果背书。从我自己的经验来看熟悉这十个数据集基本就摸清了计算机视觉研究的方法论骨架。它们每一个都不是随便冒出来的背后都有一套关于任务定义、标注协议、评估指标的完整约定。你能吃透这套约定换个新数据集、新任务也能很快举一反三。