- 人工智能
- 深度学习
- NLP
- 计算机视觉
- 强化学习
【免费下载链接】google-research
Google Research
导读
本文围绕 Google Research 仓库中 federated_vision_datasets 目录,系统讲解由论文《Federated Visual Classification with Real-World Data Distribution》(ECCV 2020)发布的联邦学习视觉数据切分:涵盖 Landmarks、iNaturalist、CIFAR 五大数据集的规模统计、CSV 文件格式约定、下载方式,以及配套的 inspect_splits.py 检查工具。读完本文,你将掌握这些"真实用户分布"数据切分的字段语义与解析逻辑,能够在自己的联邦学习(尤其是 TensorFlow Federated)实验中正确加载、校验并引用这些数据。
背景:为什么要用"真实数据分布"的视觉切分
传统联邦学习基准通常采用随机划分或人为模拟的非独立同分布(Non-IID)数据,而真实世界的联邦数据天然围绕"用户"组织——不同用户拍摄的照片风格、场景、类别偏好差异极大。该项目正是为了弥合这一差距:由 Tzu-Ming Harry Hsu、Hang Qi、Matthew Brown 在 ECCV 2020 发表的论文中,将大规模视觉数据集按真实世界的"数据所有者"进行切分,直接以用户为基本划分单位,从而在联邦学习实验中获得更贴近真实场景的客户端数据分布。
仓库本身只发布数据切分(split)文件,不直接分发图片。所有切分均以 CSV 形式提供,图片需要从各自源数据集另行下载,这样的设计保证了切分文件的轻量与源数据集版权的独立性。
数据集总览
仓库共提供五个数据切分,覆盖三个源数据集(Google Landmarks Dataset v2、iNaturalist 2017、CIFAR-10/100)。下表完整汇总了各切分的用户数、类别数与样本数(数据取自 README.md):
| 数据集 | 用户数 | 类别数 | 样本数 | 分片下载文件 | TFF 支持 |
|---|---|---|---|---|---|
| Landmarks-User-160k | 1,262 | 2,028 | 164,172 | landmarks-user-160k.zip | 是(TFF gldv2 文档) |
| iNaturalist-User-120k | 9,275 | 1,203 | 120,300 | inaturalist-user-120k.zip | 是(TFF iNaturalist 文档) |
| iNaturalist-Geo | 11 到 3,606 | 1,203 | 120,300 | inaturalist-geo.zip | 是(TFF iNaturalist 文档) |
| CIFAR-10 | 100 | 100 | 50,000 | cifar10_v1.1.zip | 否 |
| CIFAR-100 | 100 | 100 | 50,000 | cifar100_v1.1.zip | 否 |
对上述数据可以得出几个直观结论:
- Landmarks-User-160k面向地标识别:1,262 个用户、2,028 个类别,平均每用户约 130 张图片,客户端类别覆盖相对稀疏;
- iNaturalist-User-120k与iNaturalist-Geo样本数相同(120,300),但划分依据截然不同:前者按用户(9,275 人)划分,后者按**地理单元格(geo cell)**划分,用户数在 11 到 3,606 之间浮动——这正是"以真实世界数据分布"划分的典型体现;
- CIFAR-10/100为合成划分,各拆成 100 个用户(而非论文数据集原本的 10/100 类别),类别数一栏是论文中重标注后的类别标签口径。
下载时需要注意:README 提示部分浏览器可能需要在新标签页中打开下载链接才能触发下载,或者直接复制链接地址后用命令行工具(如wget)获取。
数据分片文件格式:train / test 的列约定
切分文件按训练/测试分开存放,命名约定如下:
- 训练分片:
federated_train*.csv(不同划分策略如 alpha 值、地理划分对应不同文件名); - 测试分片:
test.csv。
CSV 文件包含以下列(见 README.md 的 File Format 小节):
| 列名 | 含义 | 适用范围 |
|---|---|---|
user_id | 联邦学习中属于同一"用户"的图片共享同一 id;可以是数字 id、地理单元格标识,也可以是图片作者名。测试分片不包含此列 | 训练分片 |
image_id | 源数据集中的图片 id,用于从源数据集检索对应图片 | 训练/测试 |
class | 论文所用联邦视觉分类任务的类别标签 | 训练/测试 |
label | 源数据集中的原始类别标签 | 仅 iNaturalist |
这里有一个容易被忽略的关键点:user_id只在训练分片中给出。因为测试阶段模拟的是"新用户"的图片,联邦学习评测需要看模型能否泛化到训练中未见过用户的分布上。
不同数据集的列数差异(源码视角)
从 inspect_splits.py 的get_parser()可以看到,虽然 README 统一描述了上述列,但具体 CSV 的列数因数据集而异:
- iNaturalist训练行有 4 列:
user_id, image_id, class_id, label;测试行有 3 列:image_id, class_id, label(多了源数据集原始label); - Landmarks 与 CIFAR训练行有 3 列:
user_id, image_id, class_id;测试行只有 2 列:image_id, class_id。
源码中cifar直接复用了landmarks_parser(注释landmarks and cifar uses the same parser),说明两个数据集的 CSV 结构完全一致。这一差异意味着:如果你绕开工具自行解析 CSV,必须先确认数据集类型,再决定按 3 列还是 4 列读取。
使用 inspect_splits.py 检查数据分片
仓库提供了一个轻量级工具 inspect_splits.py,用于解析 CSV 并输出数据集整体统计信息(用户数、图片数、类别数),便于在训练前快速校验分片文件的完整性与划分规模。
环境依赖
工具依赖极简,只需 requirements.txt 中声明的absl-py>=0.6.0,安装后即可运行:
pip install absl-py命令行参数
| 参数 | 类型 | 可选值/说明 | 是否必填 |
|---|---|---|---|
--dataset | 枚举 | landmarks(默认)、inat、cifar,决定 CSV 解析器 | 必填 |
--train_file | 字符串 | 训练分片 CSV 路径 | 二选一或同时提供 |
--test_file | 字符串 | 测试分片 CSV 路径 | 二选一或同时提供 |
约束:--train_file与--test_file至少提供其一;若都未提供,程序会打印提示并退出(见 main 函数)。
示例用法
# 检查 CIFAR-10 alpha-0 划分的训练分片与测试分片 $ python inspect_splits.py --dataset=cifar \ --train_file=cifar10/federated_train_alpha_0.00.csv \ --test_file=test.csv # 查看详细参数说明 $ python inspect_splits.py --help输出与实现逻辑解读
工具的两个核心函数分别处理训练与测试分片:
- inspect_train_file():跳过表头后逐行解析,用
collections.Counter统计user_image_counter(每个用户的图片数)、unique_images(去重后的图片 id)与unique_classes(去重后的类别),最终输出:
Train file: cifar10/federated_train_alpha_0.00.csv 100 users. 50,000 images. 100 classes.- inspect_test_file():测试分片没有
user_id列,因此只统计去重后的图片数与类别数。
实现上还做了两类健壮性处理:文件不存在时打印Error: file does not exist.并直接返回;所有统计都基于set去重,因此可以避免同一图片 id 在 CSV 中重复出现导致的统计虚高。这套"先校验后训练"的流程对于复现论文实验、或验证自己重新打包的分片文件是否合规,都非常实用。
图片获取:源数据集与 TFF 自动下载
仓库不随分片文件分发任何图片。使用分片文件时,图片必须从源数据集自行下载:
- Google Landmarks Dataset v2(Landmarks 切分);
- iNaturalist 2017(iNaturalist-User-120k 与 iNaturalist-Geo 切分);
- CIFAR-10/100(CIFAR 切分)。
README 特别提示:这些源数据集与图片可能使用不同的许可证与使用条款,仓库不拥有其版权,使用者需自行确认合规性。
如果使用TensorFlow Federated(TFF),情况会简化很多:README 明确说明,在 TFF 中以数据集 API 形式加载(如 Landmarks v2 与 iNaturalist 数据集)时,框架会自动从源数据集下载图片,无需手动拼接image_id与图片文件。这也是该项目与 TFF 生态衔接最顺畅的路径。
论文引用
若在你的研究中使用了这些数据切分,请按以下 BibTeX 引用(见 README.md 的 Paper 小节):
@inproceedings{hsu2020federated, author = {Tzu-Ming Harry Hsu and Hang Qi and Matthew Brown}, title = {{Federated Visual Classification with Real-World Data Distribution}}, booktitle = {Proceedings of the European Conference on Computer Vision (ECCV)}, month = {August}, year = {2020} }Changelog 与版本注意事项
README 记录了两次重要更新(Changelog 小节):
- 2022 年 1 月 10 日:修复了 CIFAR-10/100 的图片 id,新版压缩包文件名带
v1.1后缀(即上表中的cifar10_v1.1.zip、cifar100_v1.1.zip)。如果你的旧代码引用了不带v1.1的旧版本文件,需要注意重新下载,避免 image id 与源数据集对不上; - 同日新增了 Landmarks 与 iNaturalist 数据集在 TFF 中的托管链接,方便 TFF 用户直接以数据集 API 加载。
这提醒使用者:下载分片文件时请认准带v1.1后缀的 CIFAR 版本;而 Landmarks 与 iNaturalist 的切分至今没有版本变动,可直接使用。
总结
federated_vision_datasets提供了一套以"真实世界用户分布"为核心的联邦视觉分类数据切分,配合 inspect_splits.py 可以快速完成格式校验与规模统计。其核心实践要点可归纳为三条:训练/测试分片文件分离且test.csv无user_id列;iNaturalist 多一列原始label,解析时必须按数据集类型选择解析器;图片需要从源数据集获取,若走 TFF 数据集 API 则可自动完成下载。理解这些约定,是复现 ECCV 2020 该论文实验、或在其切分之上开展联邦视觉研究的第一步。
- 人工智能
- 深度学习
- NLP
- 计算机视觉
- 强化学习
【免费下载链接】google-research
Google Research
相关推荐
Flower Datasets 本地数据联邦化实战:用 Partitioner 切分 CSV、JSON、图像、音频与内存数据
Flower Datasets 本地数据联邦化实战:用 Partitioner 切分 CSV、JSON、图像、音频与内存数据 本指南以 Flower Datas
人工智能联邦学习机器学习深度学习Flower Datasets(flwr-datasets):联邦学习数据集下载、划分与可视化的完整使用指南
Flower Datasets(flwr datasets):联邦学习数据集下载、划分与可视化的完整使用指南 Flower Datasets( flwr dat
人工智能联邦学习机器学习深度学习ClickHouse多数据源联邦查询实战指南:5分钟实现跨数据库联合分析
ClickHouse多数据源联邦查询实战指南:5分钟实现跨数据库联合分析 ClickHouse多数据源联邦查询功能让数据分析师能够轻松实现跨数据库的联合分析。作
数据库OLAP列式数据库大数据实时分析数据分析
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考