news 2026/9/20 3:47:57

Federated Vision Datasets 深度指南:面向真实数据分布联邦视觉分类的数据切分、格式与检查工具

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Federated Vision Datasets 深度指南:面向真实数据分布联邦视觉分类的数据切分、格式与检查工具
  • 人工智能
  • 深度学习
  • NLP
  • 计算机视觉
  • 强化学习

【免费下载链接】google-research

Google Research

项目地址:https://gitcode.com/gh_mirrors/go/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-160k1,2622,028164,172landmarks-user-160k.zip是(TFF gldv2 文档)
iNaturalist-User-120k9,2751,203120,300inaturalist-user-120k.zip是(TFF iNaturalist 文档)
iNaturalist-Geo11 到 3,6061,203120,300inaturalist-geo.zip是(TFF iNaturalist 文档)
CIFAR-1010010050,000cifar10_v1.1.zip
CIFAR-10010010050,000cifar100_v1.1.zip

对上述数据可以得出几个直观结论:

  • Landmarks-User-160k面向地标识别:1,262 个用户、2,028 个类别,平均每用户约 130 张图片,客户端类别覆盖相对稀疏;
  • iNaturalist-User-120kiNaturalist-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(默认)、inatcifar,决定 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.zipcifar100_v1.1.zip)。如果你的旧代码引用了不带v1.1的旧版本文件,需要注意重新下载,避免 image id 与源数据集对不上;
  • 同日新增了 Landmarks 与 iNaturalist 数据集在 TFF 中的托管链接,方便 TFF 用户直接以数据集 API 加载。

这提醒使用者:下载分片文件时请认准带v1.1后缀的 CIFAR 版本;而 Landmarks 与 iNaturalist 的切分至今没有版本变动,可直接使用。

总结

federated_vision_datasets提供了一套以"真实世界用户分布"为核心的联邦视觉分类数据切分,配合 inspect_splits.py 可以快速完成格式校验与规模统计。其核心实践要点可归纳为三条:训练/测试分片文件分离且test.csvuser_id列;iNaturalist 多一列原始label,解析时必须按数据集类型选择解析器;图片需要从源数据集获取,若走 TFF 数据集 API 则可自动完成下载。理解这些约定,是复现 ECCV 2020 该论文实验、或在其切分之上开展联邦视觉研究的第一步。

  • 人工智能
  • 深度学习
  • NLP
  • 计算机视觉
  • 强化学习

【免费下载链接】google-research

Google Research

项目地址:https://gitcode.com/gh_mirrors/go/google-research
点击查看免费下载

相关推荐

上一篇:如何用Ant Design + React Query v5构建现代化数据管理界面:从入门到精通
下一篇:50%提速!DeepSeek-V3混合精度推理实践:FP8与BF16的平衡艺术

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/20 3:47:48

从黑库到蓝库:Simulink电力电子仿真迁移实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/20 3:47:42

F5扩展AI安全防护平台:聚焦API与数据通路安全

F5最近把AI安全防护平台做了一次比较大的扩展,新增了一系列面向AI应用与API流量的防护能力。这个消息在圈子里讨论度不低,但不少人看完新闻稿还是一头雾水——F5到底在原有防护体系上加了什么,这些新能力解决的是哪类问题,以及它跟…

作者头像 李华
网站建设 2026/9/20 3:47:12

MATLAB实现模型预测控制的船舶艏向控制:从原理到代码

前阵子在调船舶自动舵算法,连续几个晚上对着Simulink里的PID参数反复折腾——超调压下去了响应又变慢,响应提上来舵角又开始高频抖。后来我把MPC(模型预测控制)真正跑起来做船舶艏向控制,才意识到之前的纠结大多来自控…

作者头像 李华
网站建设 2026/9/20 3:45:45

React异步数据渲染实战:从白屏竞态到Suspense工程化解法

如果你用React做过带接口请求的页面,大概率见过这个场面:页面先白屏,loading转圈,数据一回来整个页面“弹”出来;运气差一点,直接给你一个红色报错——Cannot read property map of undefined。这个现象背后…

作者头像 李华