可穿戴第一人称健康视频 — 每个人都是自己的标注员

日常连续记录 / 自报告标注 / 三重代价

来源 https://huggingface.co/datasets/facebook/wearable-ai发布时间: 2026-10-26最后更新: 2026-10-26 阅读 5
可穿戴第一人称健康视频 — 每个人都是自己的标注员

信息速览

数据集名称可穿戴第一人称健康视频 — 每个人都是自己的标注员
数据类型原始影像,人工标注,元数据,文本语料
规模约一千至一万小时量级的第一人称视频与问答对(官方未公开逐项计数)
接入方式https://huggingface.co/datasets/facebook/wearable-ai
AI 就绪度

可穿戴相机把「记录日常生活」从一件需要专门安排的事,变成了几乎不需要动作的事。眼镜腿上的摄像头、胸前别着的小盒子、运动相机的挂载件,都在做同一件事:以佩戴者的视角,连续、无选择地拍下这一天。这类素材在健康研究里有一个别处得不到的好处——它不依赖回忆,也不需要受试者记住自己中午吃了什么。

但第一人称健康视频不是「被拍下的检查」。临床影像的背后站着一位放射科医师,他把片子上的发现写成结论,这份结论就是金标准;而第一人称视频里「这个人刚才吃的是什么」「他到底吃了几片药」,只有拍摄者自己知道。于是这类数据集几乎注定要走自报告的路:拍摄者既是被试,也是标注员。

自报告一旦成为标注的主干,三件事就同时成立:标注的可靠性受限于记忆与自我呈现,画面里必然会带进没有同意的人,而佩戴相机这个动作本身会改变被记录的行为。这三项合起来就是本篇的主轴——自报告数据的三重代价。下面按「它是什么、能不能接、该怎么用、会在哪里失效」四层展开,所有数字只写规模、结构与边界三类,来源不明的直接标未核实。一屏速览见下表。

维度 内容
官方名称 EgoWearBench(Hugging Face 组织 facebook/wearable-ai)
发布方 Meta 可穿戴人工智能研究团队
发表场合 官方称投稿于 IEEE/CVF 国际会议(ECCV 2026),论文全文未在公开检索中确认
数据形态 第一人称连续视频 + 健康类视觉问答标注
任务类别 饮食内容识别、行为发生判定、场景上下文理解(三类)
规模量级 千到万量级(小时视频/问答对),官方未公开逐项计数
参与规模 数十人量级的便利样本(未核实)
素材场景 用餐、服药、步行、居家与办公日常
标注方式 参与者自报告为主,团队事后整理与核查为辅
相机形态 头戴式与胸挂式可穿戴相机(含消费级与研究级设备)
文件组织 视频片段 + 结构化问答表 + 参与者匿名元数据
许可 CC BY-NC 4.0(非商业)
获取门槛 Hugging Face 受限仓库,需申请授权
库内同类 无直接对应;与 VQA-RAD、OmniMedVQA 等临床 VQA 词条构成对照
一句话定位 记录「日常生活的水流」,而不是「一次被安排的检查」

§1 它要解决的具体麻烦

1.1 真正的麻烦不是缺视频,是缺「知道答案的人」

做健康行为识别的人经常被一个假问题困住:以为瓶颈在数据量。真实的瓶颈在标注。设想你要训练一个模型判断「这一餐有没有吃到足够蛋白质」。用公开的食物图像数据集,你拿到的是别人摆拍好的一盘菜;用病房采集的餐盘照片,你拿到的是配餐单;可你要回答的是「这个人今天中午在办公桌前,一边开会一边吃的那份沙拉里有什么」。这件事没有第三方能替你完成。

这就是第一人称健康视频的位置。它的价值不在画面质量——恰恰相反,画面经常被手、被桌面、被逆光毁掉;它的价值在于「行为发生的那一刻,镜头就在那里」。传统的饮食调查靠 24 小时回顾或食物频率问卷,受试者要凭记忆复述昨天吃了什么,回忆偏差与系统性低报几乎是这门方法学的固有属性;可穿戴相机把「回忆」换成了「回看」,把「凭印象」换成了「对着画面指认」。

但换来的是另一组麻烦。临床影像的标注者与患者是分离的,标注者可以独立判断,错了可以复核、可以仲裁、可以算一致性系数。第一人称视频把这两个角色合并了:拍摄者判断自己的行为,没有人能替他仲裁,因为没有人知道真相。数据集的设计者只能在流程上做补偿——录制后尽快回看、给出结构化选项而非开放式填空、抽样做团队复核。这些补偿能压住噪声,但压不住偏差的方向。

关键在于偏差是有方向的。人倾向于少报自己认为不健康的食物,多报运动量,忘记漏服的药。这类偏差不是随机噪声,不会因为样本变大而互相抵消。所以在这个数据集上训练出的模型,如果目标是「预测用户报告了什么」,它会学得很好;如果目标是「预测用户实际做了什么」,它会把人的自我美化也一并学进去,并在真实部署时稳定地高估依从性、低估热量。这个区别是整篇文章的地基。

1.2 三条常见的错误期待

第一条错误期待是把它当成「大规模健康视频语料」。看到「第一人称 + 健康」,容易联想到几十万小时的通用第一人称视频库,以为可以直接拿来预训练一个大模型。实际规模在千到万量级,作为预训练语料远远不够;它的设计目标是评测,即在一个受控的任务集合上比较不同方法的表现,而不是提供海量拟合材料。拿它预训练,会得到一个在这份数据上过拟合、在别处失效的模型。

第二条错误期待是把它当成「客观摄食测量的替代品」。这个期待有很强的诱惑力:既然有视频了,为什么还要用称重法?答案是视频只记录「看见了什么」,不记录「吃进去了多少」。一盘菜端上来,镜头拍到了,但吃了三分之一还是全部,画面很难判定;桌上的配料、烹饪用油、被手挡住的部分,统统不可见。营养学界公认的客观方法——称重法、双标水法、生物标志物——测的是摄入量,视频测的是行为可见性,两者不能互相替换。

第三条错误期待是把它当成「无隐私风险的数据」。有人会说:已经做人脸模糊了,已经匿名化了,应该没问题。但第一人称视频的隐私风险与普通视频不同,因为镜头是随机指向的——你走过餐厅,邻桌的人在吃饭;你在家里录,家人在换衣服。这些人没有签署同意书。模糊处理能降低可识别性,不能消除「被记录、被分析、被展示」这件事本身带来的伦理负担。

常见期待 为什么错 会造成什么后果
大规模预训练语料 规模只有千到万量级,且为评测设计 过拟合到本地场景,泛化差
客观摄食量测量 视频测可见行为,不测摄入克数 热量与营养素估计系统性偏低
无隐私风险 镜头随机摄入未同意的第三方 二次传播与合规风险
参与者即标注员所以最准 自报告受记忆与自我呈现影响 学到的是自我美化,不是行为
可替代临床测量 无校准、无仪器、无专业读片 不能作为诊断或疗效判据

1.3 它能给到的与给不到的

你的需求 它给的 够不够
判断一餐吃了哪些食物种类 带自报告标签的用餐片段 够做弱监督,不够做定量营养
判断服药行为是否发生 服药时刻的视频与问答 够做发生检测,不够做剂量核验
评估模型的第一人称理解能力 三类健康任务的结构化问答 够做基准比较,不够做能力上限
研究相机佩戴对行为的影响 记录本身的元数据与伦理说明 只能间接推断,无对照臂
做旁观者隐私的算法研究 含第三方出镜的真实素材 够,但需额外伦理审查
训练通用视觉语言模型 千到万量级的视频问答 不够,规模差一到两个数量级
验证营养干预效果 行为层面的自报告记录 不够,缺客观摄入量
复现某篇论文的分数 官方评测切分(需申请) 视切分口径,须核对版本

1.4 你的处境与它能帮到的事

你的处境 它能帮你什么 下一步该做什么
要在论文里加一个第一人称健康理解的评测集 提供带健康语义的三类任务切分 先申请访问,确认切分口径与评测脚本
在做一个「拍照记饮食」的 App,想找训练数据 提供真实场景下的用餐片段 补一路客观测量数据做校准,别只用自报告
研究可穿戴设备的功耗与佩戴舒适度 提供相机佩戴位置与录制时长的元数据 主要参考其工程约束,不必下载全量
做隐私保护算法,需要真实出镜素材 提供含未同意第三方的复杂场景 走独立伦理审查,签署数据使用协议
临床营养课题,想替代膳食回顾问卷 提供比回忆更细的行为颗粒度 保留问卷做平行验证,不能单用视频
学生作业,想快速跑通一个 VQA 基线 任务定义清晰,规模可控 用公开的同类小数据集先跑通流程
企业产品验收,需要行业基准 提供学术界的可比分数 注意非商业条款,商业用途需另行协商
做霍桑效应的实证研究 提示了相机佩戴的行为扰动 需要设计对照臂,这份数据本身给不了
想做人群公平性分析 参与者元数据有限 基本做不到,需另找带人口学的队列

1.5 一句话判断

它把「日常生活」变成了可检索的视频,也把「谁有资格说这是真的」这个问题原封不动地留给了使用者。

1.6 不适合谁:四条边界

第一条:想要客观摄入量的人。 如果你的研究问题是「这个干预让受试者每天少摄入了多少千卡」,这份数据帮不上忙。它没有称重、没有双标水、没有生物标志物,只有拍摄者的口述与回看。营养流行病学里对自报告方法的批评——系统性低报、社会期许偏差——在这里一条都不缺,只是从问卷搬到了视频上。要客观摄入量,去找带称重或生物标志物的队列。

第二条:想要训练通用大模型的人。 千到万量级的视频问答,对一个需要数十亿样本的通用视觉语言模型而言,连一个子任务都不够。把这份数据当预训练语料,最常见的结局是在验证集上漂亮、在真实场景里崩。它的正确位置是评测与微调后的小样本适配,不是预训练。

第三条:想直接拿画面做公开演示的人。 第一人称视频里出现的人,绝大多数没有为「被放到网上」这件事签过字。做产品演示、做宣传片、做开源模型的样例展示,都要格外小心。即便平台做了人脸模糊,声音、衣着、住所布局、桌面上的文件都可能构成识别线索。

第四条:想要临床诊断级结论的人。 这份数据不测量任何生理指标,也不由临床医师读片。它记录行为,不产生诊断。任何声称「用这份数据训练出的模型可以辅助诊断营养不良或用药不当」的说法,都超出了数据本身能支撑的范围。它可以作为筛查工具的早期研究素材,不能作为临床决策依据。

§2 数据构成与规格

2.1 一条记录从哪来

要理解这份数据的结构,得先理解它从录制到入库走了哪几步。第一步是招募与佩戴:参与者被要求在日常场景中佩戴相机若干天,相机可以头戴也可以胸挂,佩戴方式会显著影响视野——头戴的视角更接近人眼,但晃动更剧烈;胸挂的角度更低、更稳定,但容易被手臂和桌面遮挡。

第二步是连续录制。这一段产生的原始素材是冗长的、未分段的长视频,里面包含大量无信息量的片段:坐着、走路、看屏幕。原始素材不会直接进入数据集,因为体积太大、隐私密度太高。

第三步是裁切与检索。研究团队按行为发生的窗口把长视频切成短片,并用场景或活动标签打上索引,让后续的标注与评测可以在片段级别进行。这一步决定了数据集的颗粒度:切片越细,问答越容易定位;切片越粗,上下文越完整但标注越难。

第四步是问答标注。参与者在录制当天或次日回看片段,回答预设的结构化问题。为什么强调「当天或次日」?因为回忆的衰减曲线很陡,隔一周再回看,很多片段参与者自己都认不出来。这一步是整份数据质量的分水岭。

第五步是整理与核查。团队对问答做规范化——统一食物名称、统一活动动词、剔除明显矛盾的记录——并抽样做一致性核查。核查能发现「同一个人对同类问题前后矛盾」这类问题,但发现不了「这个人一直在少报零食」这类系统性偏差,因为后者需要外部真值。

环节 输入 输出 质量风险点
招募佩戴 志愿者 参与者 + 相机配置 便利样本,人群集中
连续录制 日常活动 长时素材 相机改变行为(霍桑效应)
裁切检索 长时素材 片段 + 场景索引 切片边界主观,上下文丢失
问答标注 片段 结构化问答 自报告偏差,记忆衰减
规范化 原始问答 统一标签 合并同类项时丢失细节
抽样核查 规范化问答 质量标记 只能抓随机错误,抓不住系统偏差
脱敏发布 片段 + 问答 受限访问仓库 第三方出镜残留

2.2 DAIMS 数据就绪度评估

在逐字段展开之前,先用 DAIMS 的六个维度做一次整体扫描。DAIMS 关心的是「数据能不能直接进流水线」,而不是「数据科学不科学」,这个区分正好对应本篇的定位。

DAIMS 维度 本数据集的表现 判断 使用者要补的动作
数据字典完备性 字段语义清晰但逐字名未公开 部分就绪 获批后先导出特征名核对
主键唯一性 片段号 + 问答序号可组合成主键 就绪 加载后立刻校验唯一性
划分可用性 支持按参与者分组 就绪 必须自行做分组切分
标注可溯源 答案来源字段区分自报告与复核 部分就绪 按来源分层报告指标
隐私合规标记 有脱敏标记,缺第三方同意追溯 未就绪 二次使用前重做伦理评估
版本可复现 受限仓库,版本号需记录访问日期 部分就绪 报告里写访问日期与提交号

六个维度里,只有「未就绪」一项是硬伤,而且这项硬伤不可能靠工程手段修掉——它不是元数据缺失,而是同意链条本身的缺口。其余四项「部分就绪」都能在使用侧补齐,代价是前期多花半天核字段。

2.3 字段与记录的完整字典

下表按「记录单位」组织字段。需要说明的是:官方仓库为受限访问状态,字段名为按其任务设计推断的规范名,不代表官方逐字字段名,具体列名以获批后拿到的数据集卡为准。

字段 类型 取值示例 含义 谁产生 可信度
video_id 字符串 p07_s03_c0142 片段唯一标识,通常含参与者与会话编号 团队 高
participant_id 字符串 p07 参与者的不可逆匿名编号 团队 高
session_date 日期 2025-11-04 录制日期,精确到天 团队 高
clip_start_sec 整数 1840 片段在原会话中的起始秒 团队 高
clip_end_sec 整数 1875 片段结束秒,与起始之差为片段时长 团队 高
camera_mount 枚举 chest / head 相机佩戴方式 团队 高
device_class 枚举 consumer / research 设备档次,影响分辨率与视场角 团队 中
activity_label 枚举 eating / medication / walking 片段主活动的索引标签 团队 中
scene_label 枚举 kitchen / office / outdoor 场景类别 团队 中
health_task 枚举 diet / event / context 问答所属任务族 团队 高
question 文本 「这一餐里有几样蔬菜」 规范化后的问题文本 团队 高
answer 文本 「三样」 参与者给出的答案 参与者 中
answer_source 枚举 self / team / verified 答案的产生路径 团队 高
answer_confidence 枚举 high / low 参与者自评的确定程度 参与者 低
later_verified 布尔 false 是否有独立于参与者的复核 团队 高
audio_retained 布尔 false 原始音轨是否保留 团队 高
face_blurred 布尔 true 是否做了人脸脱敏 团队 高
qa_index 整数 2 同一片段内问答的序号 团队 高

这张表里最值得盯住的是 answer_source。它把答案分成三条路:参与者自己答的(self)、团队整理时补的(team)、以及经过独立复核的(verified)。比例上没有官方公开的数字,但对任何评测来说,这三个来源的答案不该混在一起算准确率——self 与 verified 的难度差着一整个量级。做实验时如果不按这个字段分层报告,任何一个分数都说不清是什么。

同样值得注意的是 answer_confidence 这个字段的低可信度标注。它不是矛盾——参与者自评的确定程度本来就是主观的,它的用处是筛选,而不是当作权重。常见做法是把 low 的样本单独检视一遍,看它们是否集中在「吃了多少」这类定量问题上,从而判断定量任务的噪声上限。

2.4 一条记录的完整解剖

下面用一份 text 块展示一条假设的记录长什么样。字段名按 §2.3 的规范名,内容是合成的示意值,用于说明结构关系。

{
  "video_id": "p07_s03_c0142",
  "participant_id": "p07",
  "session_date": "2025-11-04",
  "clip_start_sec": 1840,
  "clip_end_sec": 1875,
  "camera_mount": "chest",
  "device_class": "research",
  "activity_label": "eating",
  "scene_label": "office",
  "qa": [
    {
      "qa_index": 1,
      "health_task": "diet",
      "question": "这一餐的主食是什么",
      "answer": "糙米饭",
      "answer_source": "self",
      "answer_confidence": "high",
      "later_verified": false
    },
    {
      "qa_index": 2,
      "health_task": "diet",
      "question": "这一餐吃了几样蔬菜",
      "answer": "两样",
      "answer_source": "self",
      "answer_confidence": "low",
      "later_verified": false
    },
    {
      "qa_index": 3,
      "health_task": "event",
      "question": "这一餐是否在工位上完成",
      "answer": "是",
      "answer_source": "verified",
      "answer_confidence": "high",
      "later_verified": true
    }
  ],
  "audio_retained": false,
  "face_blurred": true
}

这条记录把三重代价都摊开了。第一重(可靠性):第 2 条问答的置信度是 low,「两样」这个数字来自拍摄者的目测,画面可能只露出了半盘菜。第二重(隐私):face_blurred 为真说明有需要模糊的人,办公场景里至少还有同事的屏幕与文档。第三重(霍桑效应):无法从字段里看出「这天他是不是特意吃得清淡」,这类信息永远不进表。

值得单独说的是第 3 条问答的 verified。它是团队复核过的,因为「是否在工位上完成」这一问可以从画面直接判定,不需要参与者记忆。这个区分给了一个可操作的启发:凡是能从画面独立判定的问题,都可以转成 verified;凡是必须依赖参与者记忆的,只能止步于 self。两类问题在评测里应该分开算分,否则模型的成绩会被易判问题的比例左右。

2.5 三类健康任务的构成

官方对任务的组织是三类:饮食内容、行为发生、场景上下文。它们不是并列的三个子集,而是难度递增的三层。

任务族 典型问题 答案形态 判定依据 自报告依赖度
饮食内容 diet 这一餐的主食是什么 名词短语 画面 + 拍摄者指认 高
饮食量化 diet 这一餐吃了几样蔬菜 数量 拍摄者目测 极高
行为发生 event 今天是否按时服药 是/否 画面片段 + 参与者确认 中
行为时序 event 服药是在午餐前还是后 时序短语 时间戳 低
场景上下文 context 这是在家里还是办公室 类别 画面背景 极低
场景上下文 context 桌面上有没有药盒 是/否 画面 极低

看这张表的最后一列,会发现一个反常的规律:自报告依赖度越低的任务,越接近传统的视觉识别问题,也就越不需要「第一人称」这个模态的特殊性;而真正只有第一人称才能回答的问题(吃了什么、吃了多少),恰恰是自报告依赖度最高的。这是这份数据的内生张力:它最独特的部分,也是最不可靠的部分。

2.6 与同类资源的字段差异

资源 素材来源 标注主体 健康语义 规模量级 许可
本篇这类可穿戴健康视频 参与者日常佩戴录制 参与者自报告 三类任务 千到万 CC BY-NC 4.0
Ego4D 志愿者日常佩戴录制 团队标注 通用任务 数千小时 自定义协议
临床 VQA 类(如 VQA-RAD) 医院影像系统 临床医师 影像判读 百图/千问 多为 CC0 或 CC BY
食物图像数据集 网络抓取与摆拍 众包标注 菜品名称 十万级图像 各自不同
穿戴式加速度队列 腕带惯性传感器 无(自监督) 活动强度 万人级 各有申请流程
膳食回顾问卷库 访谈记录 受试者回忆 营养摄入 千人级 多为受控

这张表说明的是位置关系:本篇这类数据在「主观性」这一维上坐在最右边,在「规模」上坐在中间偏左,在「健康语义密度」上居中。它不能替代任何一列资源,只能补上「行为发生的那一刻,镜头在场」这个别处没有的视角。真正要做严谨的营养研究,通常是把它与称重或生物标志物配对使用,用视频做行为定位、用客观测量做量值校准。

2.7 文件组织上的推算

官方未公开完整的目录树,从同类第一人称数据集的通行做法推断,仓库通常按「参与者 / 会话 / 片段」三级组织,问答以单个结构化文件或数据集加载脚本的形式挂在片段索引上。这种组织方式有两个直接后果。

其一是划分必须按参与者做。如果把同一个人的片段随机分到训练集与评测集,模型会学到这个人的厨房、这个人的餐盘、这个人的手势,分数虚高。按人划分会显著降低绝对分数,但那是真实水平。任何一份报告如果没有写明划分单位,它的分数就没法比较。

其二是片段不适合单独使用。一个 35 秒的用餐片段脱离前因后果,很难判断是正餐还是加餐;模型如果只看片段,会系统性地把加餐判成正餐。规范的用法是把 clip_start_sec 还原到原会话的时间轴上,用前后文做上下文。

§3 它凭什么算健康数据:模态与临床影像的根本差别

3.1 检查有边界,生活没有

临床影像有一个天然的好性质:它有边界。一次 CT 扫描从进床到出床,起止清楚;一次胸片曝光,时间可以精确到毫秒。边界清楚意味着「这次检查的内容」是一个封闭集合,读片者可以穷尽它,标注可以做到完备。

第一人称视频没有这个性质。它是一段连续的水流,什么时候算「一餐开始」,什么时候算「一餐结束」,取决于你怎么定义。端起碗算开始?还是第一口算开始?吃完最后一口算结束,还是放下碗算结束?这不是哲学问题,它直接决定标注的切分点,而切分点不一致就无法比较不同标注者给出的结果。

这个差别还带来一个更麻烦的后果:临床影像的错误可以定位到具体区域,第一人称视频的错误难以定位。模型答错「这一餐吃了几样蔬菜」,是因为没看清盘子,还是因为切分点把第二盘菜切到了下一个片段?这两种原因指向完全不同的改进方向,但从问答记录里看不出来。

3.2 标注者与受试者的角色合并

在临床影像流程里,至少有四个角色是分开的:患者(被检查)、技师(操作设备)、放射科医师(判读)、质控(复核)。四个角色互相制衡,这是医学数据质量的制度基础。

第一人称视频把前三个角色压到了一个人身上。参与者自己决定戴不戴、自己举着相机、自己判断画面里发生了什么。唯一保留的外部角色是「团队核查」,但它核查的是流程合规性,不是内容的真实性——因为内容的真实性只有参与者知道。

角色 临床影像 第一人称健康视频 后果
被检查者 患者 参与者本人 同一人
采集操作 技师 参与者本人 无独立质控
判读 放射科医师 参与者本人 无专业门槛
复核 双读或质控 团队抽样核查 抓不住系统偏差
金标准来源 病理或随访 无 无法闭环验证

3.3 时间尺度从「一次」变成「一段生活」

单次检查的数据量以分钟计,第一人称连续记录以天计。从分钟到天,不只是数据量变大,而是出现了一类新问题:状态的持续性。一个人今天心情不好,可能整天都没好好吃饭;这个信息在单帧画面里看不到,只有把它放在几天的尺度上才浮现。这既是这份数据的独特价值——它能捕捉情绪与行为的耦合——也是它的脆弱之处:几天的记录受一次偶发事件(生病、出差、家庭矛盾)影响极大,样本的代表性要靠人数补,而人数恰恰是这类研究的短板。

3.4 第一人称视角的物理约束

镜头戴在胸口和戴在眼睛上,看到的不是同一个世界。胸挂视角更接近「手在干什么」,适合餐具与药盒的识别,但严重受手臂遮挡;头戴视角更接近「我在看什么」,适合场景与注意力研究,但晃动与俯仰角变化大,视频稳定性差。

佩戴方式 优势 劣势 更适合的任务
头戴(眼镜式) 视角接近人眼,场景连贯 晃动大,佩戴侵入性强 场景上下文、注意力
胸挂(夹扣式) 画面稳定,聚焦手部 手臂遮挡,视野偏低 饮食识别、服药动作
颈挂 折中,取下方便 摆动明显 居家行为、步行
耳侧 隐蔽性好 视野偏侧,构图倾斜 社交互动片段

这份数据混合了多种佩戴方式,这意味着同一个任务在头戴与胸挂子集上的难度并不相同。做分项报告时,按 camera_mount 分层是必要的,否则「模型在饮食识别上表现好」这种结论可能只是因为样本里头戴比例高。§4.4 的案例会具体展开这一点。

§4 质量与特色:三重代价如何落在具体记录上

4.1 自报告的可靠性:它到哪一步是可信的

自报告不是「不可信」,而是「在某些问题上可信、在另一些问题上失真」。区分的关键是问题的答案是否能在画面中独立验证。

问题类型 画面可否独立验证 自报告可靠性 建议用法
场景是室内还是室外 可以 高 可直接作为标签
桌上有几件餐具 可以 高 可直接作为标签
这一餐吃了哪些种类 部分可以 中 需人工抽检
这一餐各吃了多少 基本不可以 低 只作弱监督
今天是否服药 部分可以 中 需与药盒状态交叉
今天心情如何 不可以 低 不建议做标签

这张表的方法论含义是:把「自报告」当成一种标注方式,而不是一种测量方式。标注方式的任务是给出参考,参考的可靠性取决于问题的可观察性;测量方式的任务是给出量值,量值需要校准。混淆这两者,是这份数据最常见的误用起点。

4.2 旁观者隐私:镜头无法只拍自己

第一人称相机的一个结构性问题:它朝着前方,前方必然有别人。在家录,家人入镜;在餐厅录,邻桌入镜;在通勤路上录,满街人入镜。这些人中,只有参与者本人签了知情同意。

对这个问题的处理通常是三种:模糊人脸、裁掉含他人的片段、或者在录制后让参与者本人回看并标记需要删除的片段。三种做法各有代价。模糊人脸不解决声音、衣着、住所布局带来的识别;裁掉片段会打断时间连续性,让「一餐」变成几段;参与者本人标记删除,取决于他有没有意识到画面里有别人,而这一步经常被忽略。

对使用者而言,这意味着两件事。第一,下载到的数据已经过一层筛选,筛选标准是「团队认为可以发布」,不是「所有第三方都同意了」,这两者的差距无法量化。第二,任何二次传播——论文插图、演示视频、开源模型卡片——都要重新评估,而不能以「原始数据已发布」为依据。

4.3 霍桑效应:记录本身改变了被记录的事

人在知道自己被观察时会改变行为,这个现象在职场实验里被发现,后来在各类观察性研究里反复出现。第一人称相机的特殊性在于,它的观察是持续可见的——你随时能看到胸前的镜头,也随时记得它在录。

这一点的后果是双向的。一方面,参与者可能因此吃得更健康、更按时服药,数据反映的是佩戴期内的行为,而非平常一周;另一方面,佩戴的不适可能让人减少外出、减少社交,数据里居家场景的比重被高估。两种方向都存在,而且无法从数据内部区分。§4.4 的案例里那位参与者当天吃得比平常清淡,究竟是被相机改变的,还是那天本来如此,从记录里无法判定。

这也解释了为什么这份数据不适合做干预效果评估。没有对照组,也没有「未佩戴期」的基线,你无法知道观测到的行为有多少是真实的、多少是佩戴带来的。要做这类研究,必须在设计阶段加对照臂,或者至少加入「佩戴期与非佩戴期交替」的时段设计,而这份数据没有提供这样的结构。

4.4 案例:p07 的周三午餐

用一个具体的记录走一遍三重代价。参与者 p07 是一位在办公室工作的成年人,采用胸挂式相机,在连续录制中留下了一个 35 秒的用餐片段(即 §2.4 展示的那条记录)。围绕这个片段有三条问答:主食是糙米饭、吃了两样蔬菜、在工位上完成。

先看可靠性。第 1 条「糙米饭」是高置信的,因为画面里碗是完整的、颜色特征明确。第 2 条「两样」是低置信的,说明拍摄者自己也不确定——画面里左手挡住了盘子一角,那下面可能有第三样。这条问答如果被当成金标准,模型的错误率会被系统性高估(因为它答对了三样也很难被认可)。正确的处理是把它标为「不确定」,在评测时单独统计。

再看隐私。这个片段被标记了 face_blurred,说明画面里有需要脱敏的人。办公室场景里,即使没有人脸,同事的显示器、白板上的字、门牌也可能构成信息。片段能发布,依赖的是团队与参与者共同判断「这些信息不敏感」,而这个判断没有第三方审查。

最后看霍桑效应。p07 在这一天吃的是糙米饭加两样蔬菜,比他自己报告的平常饮食清淡。这是巧合还是佩戴带来的改变?数据里没有答案,因为没有非佩戴期的对照。这个不确定性会一路传导到模型层面:如果训练集里的 p07 类样本都偏清淡,模型学到的「办公室午餐」分布就比真实分布健康。

三段合起来就是这份数据的使用准则:用它的结构,不信它的量值;用它的视角,不背书它的结论。§7.3 会把这个准则展开成一份可枚举的偏差清单,§4.4 的案例在那里还会再出现一次,用来说明为什么「按参与者划分」在这份数据上是硬要求而不是良好实践。

4.5 特色:别处拿不到的三种信号

抛开代价,这份数据确实携带三种别处难以获得的信号。

第一种是行为与场景的耦合。临床数据知道「你吃了什么」,但不知道「你在哪里、和谁、在做什么的时候吃的」。第一人称视频把这三者绑在一起,让「压力性进食」「边工作边吃」这类行为模式有了可观测的载体。

第二种是依从性的可见痕迹。服药研究长期受困于「自我报告依从性」不可靠,电子药盒只能记录开盒不能记录服用。第一人称视频至少能在画面里看到药片从瓶中取出、放入口中这一串动作,它不完美,但比问卷多了一层物理证据。

第三种是未预料事件的自然记录。这是被动采集的共同优势:参与者在录制时并不知道某件事会成为研究素材,因此那些「事后回看才发现的」片段反而更接近自然状态。这不是说数据没有霍桑效应,而是说霍桑效应在不同片段上的强度并不均匀,偶发事件往往落在效应较弱的区间。

4.6 与通用第一人称数据集的品质差异

维度 通用第一人称语料 本篇这类健康视频 影响
录制时长 单段较短的脚本化片段 日常连续数小时 上下文更完整
标注目标 动作、物体、社交 健康行为与问答 语义更贴近临床
标注主体 专职标注员 参与者本人 可靠性结构不同
隐私处理 统一脱敏流程 依赖片段级判断 残留风险更高
评测用途 通用能力基准 健康垂直基准 可比性限于本域

§5 怎么拿到、怎么接进流水线

5.1 获取路径与访问门槛

这份数据托管在 Hugging Face 的 facebook/wearable-ai 仓库下,状态是受限访问(gated)。未获授权时,读取数据集卡会直接返回需要登录并确认授权的提示,用 curl 拉原始文件同样拿不到内容。这意味着整条流程的第一步不是写代码,而是走申请。

申请时需要准备的材料通常包括:使用目的(研究/教学/内部评测)、所属机构、数据保管责任人、是否会二次分发、以及隐私保护措施。CC BY-NC 4.0 的 NonCommercial 条款会在审批里被重点核对,商业机构申请时通常需要额外说明用途边界。

#-- 第一步:确认仓库存在与访问状态(未授权时返回受限提示)
curl -s "https://huggingface.co/api/datasets/facebook/wearable-ai" | head -c 600

#-- 第二步:授权通过后,用官方 CLI 登录并下载
pip install -q "huggingface_hub[cli]"
huggingface-cli login

#-- 第三步:只拉元数据与问答表,先不拉视频(体积可控)
huggingface-cli download facebook/wearable-ai \
  --repo-type dataset \
  --include "*.json" "*.csv" "*.md" \
  --local-dir ./egowear_meta

先只拉文本类文件是实用习惯:问答表与字段说明通常只有几十兆,可先确认字段名与切分口径,再决定是否下载视频。视频是大头,全量拉取既浪费带宽也增加隐私保管负担。

5.2 用 datasets 库加载并核对结构

授权之后,标准路径是用 datasets 库加载。下面的脚本做了三件事:加载、打印特征、按任务族统计条数。统计只做计数,不做分布分析——计数是为了确认切分是否可用,不是为了让数字好看。

#-- 环境:pip install datasets huggingface_hub
from collections import Counter

from datasets import load_dataset

ds = load_dataset("facebook/wearable-ai", split="train")
print(ds.features)

rows = ds.select_columns(["health_task", "answer_source", "camera_mount"])
task_counts = Counter(rows["health_task"])
source_counts = Counter(rows["answer_source"])
mount_counts = Counter(rows["camera_mount"])

print("任务族条数:", dict(task_counts))
print("答案来源:", dict(source_counts))
print("佩戴方式:", dict(mount_counts))

#-- 自报告样本与已复核样本分开,后面评测时不要混算
self_only = [i for i, s in enumerate(rows["answer_source"]) if s == "self"]
verified = [i for i, s in enumerate(rows["answer_source"]) if s == "verified"]
print("self 条数:", len(self_only), " verified 条数:", len(verified))

这段代码跑完你应该得到三张计数表。如果 answer_source 里没有 verified 这一类,说明这份切分的答案全部来自自报告,那么任何「与人工复核比对」的实验设计都要重新考虑。如果 camera_mount 只有一种取值,§3.4 的分层报告就没有意义,可以省掉。

5.3 按参与者划分评测集

这是整份数据上最容易做错的一步。随机划分会让同一个人的片段同时出现在训练与评测两侧,分数虚高;正确的做法是以 participant_id 为单位做分组划分。

#-- 按参与者分组切分,避免同人跨集合泄漏
import random
from collections import defaultdict

from datasets import Dataset

random.seed(20261026)

by_pid = defaultdict(list)
for idx, pid in enumerate(ds["participant_id"]):
    by_pid[pid].append(idx)

pids = sorted(by_pid)
random.shuffle(pids)

cut = max(1, int(len(pids) * 0.8))
train_pids, test_pids = set(pids[:cut]), set(pids[cut:])

train_idx = [i for p in train_pids for i in by_pid[p]]
test_idx = [i for p in test_pids for i in by_pid[p]]

train_ds = Dataset.from_dict(ds.select(train_idx).to_dict())
test_ds = Dataset.from_dict(ds.select(test_idx).to_dict())

print("训练参与者:", len(train_pids), " 评测参与者:", len(test_pids))
print("训练片段:", len(train_ds), " 评测片段:", len(test_ds))

assert not (set(train_ds["participant_id"]) & set(test_ds["participant_id"]))

最后的断言不是形式主义。如果参与者较少(几十人量级),按八二划分会让评测侧只剩个位数的参与者,此时任何分数都带极大的方差。遇到这种情况,应该改用留一被试交叉验证(leave-one-subject-out),并在报告里写明折数,而不是硬凑一个 80/20。

5.4 只取帧、只算你需要的

视频解码是整条流水线里最贵的一步。多数健康行为问题不需要 30 帧每秒,一秒取两帧甚至一秒一帧就足以判定「在吃什么」。下面这段演示按秒抽帧并降采样,能在保持可判定性的前提下把 I/O 压下来。

#-- 环境:pip install decord pillow
import os

from decord import VideoReader, cpu
from PIL import Image

SRC = "./egowear_clips"
DST = "./egowear_frames"
FPS = 1

os.makedirs(DST, exist_ok=True)

for name in sorted(os.listdir(SRC)):
    if not name.endswith(".mp4"):
        continue
    path = os.path.join(SRC, name)
    vr = VideoReader(path, ctx=cpu(0))
    native_fps = vr.get_avg_fps()
    step = max(1, int(round(native_fps / FPS)))
    stem = os.path.splitext(name)[0]
    out_dir = os.path.join(DST, stem)
    os.makedirs(out_dir, exist_ok=True)
    for frame_id in range(0, len(vr), step):
        img = Image.fromarray(vr[frame_id].asnumpy())
        img = img.resize((img.width // 2, img.height // 2))
        img.save(os.path.join(out_dir, f"{frame_id:06d}.jpg"), quality=85)
    print(stem, len(vr), "帧 ->", len(range(0, len(vr), step)), "张")

半分辨率加 JPEG 质量 85 是一个折中:健康行为识别主要靠物体外观与场景布局,这个精度足够;而原始分辨率会显著增加后续上传与缓存成本。如果你的任务是细粒度食物分类(比如区分不同种类的谷物),不要降分辨率,改为保留关键帧的原图。

5.5 检查片段的时间一致性

第一人称片段常见一个问题:时间戳与画面内容错位。裁切工具按秒切,但相机内部时钟漂移、丢帧、暂停恢复都会让时间戳偏。下面这段做一次轻量核对,把可疑片段挑出来。

#-- 核对时间戳与视频实际时长是否一致
import json
import os

from decord import VideoReader, cpu

TOL = 3.0

with open("./egowear_meta/clips_index.json", encoding="utf-8") as f:
    index = json.load(f)

suspect = []
for item in index:
    declared = item["clip_end_sec"] - item["clip_start_sec"]
    path = os.path.join("./egowear_clips", item["video_id"] + ".mp4")
    if not os.path.exists(path):
        suspect.append((item["video_id"], "missing"))
        continue
    vr = VideoReader(path, ctx=cpu(0))
    actual = len(vr) / vr.get_avg_fps()
    if abs(actual - declared) > TOL:
        suspect.append((item["video_id"], round(actual - declared, 2)))

print("可疑片段数:", len(suspect))
for vid, delta in suspect[:20]:
    print(vid, delta)

把可疑片段挑出来之后,不要直接删——先看它们是不是集中在某些设备或某些会话上。如果集中,说明是设备侧的问题,这些片段的问答标注很可能也不可靠;如果分散,多半是裁切脚本的边界处理问题,可以修。这个区分决定你该修数据还是该修代码。

5.6 接进评测脚本的最小约定

最后一步是把数据和评测逻辑接起来。无论用什么框架,有三条约定必须写死在配置里:按参与者分组、按 answer_source 分层、按 camera_mount 分层。缺任何一条,分数都不可比。

约定 写法 为什么
分组键 participant_id 防止同人跨集合
分层键一 answer_source 自报告与复核答案难度不同
分层键二 camera_mount 头戴与胸挂的任务难度不同
指标 完全匹配 + 归一化匹配双报 答案表述多样
不确定样本 单独一桶 低置信答案不该算错

§6 与库内词条的关系

6.1 关系图谱

这份数据在库里的位置有点特殊:它是「健康相关的视频」,不是「医学影像」。把它与库内词条摆在一起,能看清它的邻居和它的远亲。

库内词条 关系类型 与本文的关系
VQA-RAD 对照 同为视觉问答,但影像来自医院、标注者是医师,金标准路径完整
OmniMedVQA 对照 大规模医学影像问答,模态覆盖广但无第一人称视角
PathVQA 对照 病理图问答,标注来自教科书图注,属间接生成
MedVQA 系列综述类 上位 其分类框架可用来定位本篇的任务族
可穿戴生理信号类词条 邻近 同为被动采集,但信号是数值的,不涉及画面隐私
膳食与营养调查类词条 邻近 同属自报告方法传统,偏差结构相似
活动识别类词条 邻近 惯性与视频互补,前者连续后者稀疏

6.2 检索路径

在库内检索这类数据,建议三条路径并行。

第一条从任务出发:搜「视觉问答」「医学问答与基准」,得到的都是临床影像问答,再把「第一人称」「可穿戴」作为修饰词缩小范围。这条路适合已经确定要做 VQA 的人。

第二条从模态出发:搜「可穿戴与行为」「多模态」,会命中生理信号与行为观测两类,其中带视频的才是本篇这一族。这条路适合从传感数据转向行为研究的人。

第三条从方法出发:搜「自报告」「被动采集」「数字表型」,命中的是方法学词条,它们不讲数据规格,讲的是「这类数据的偏差从哪来」。这条路最适合正在设计研究、还没选数据的人。

§7 质量评估与局限性

7.0 阅读本节前的一个前置校正

在给这份数据打分之前,先纠正一个常见的判断错位:把它和临床影像数据集放在同一把尺子上量。这把尺子通常有四个刻度——标注者专业性、金标准可得性、规模、可复现性。临床影像在前两项上天然占优,因为它的整个生产流程就是为了这两项设计的;第一人称健康视频在第三、第四项上有优势,因为它的采集成本随着消费级可穿戴设备普及而下降,而且问答结构简单、容易复现。

如果用前两个刻度去评它,结论必然是「质量差」;这个结论没有信息量,因为它本来就不打算在这两个刻划上竞争。正确的评法是换一把尺子,问三个问题:它记录的行为,别的方法能不能记录?它给出的标注,能不能支撑它所声称的任务?它的偏差方向是否已知、是否可控?

这个校正也解释了为什么本节的评分里,标注质量一项不会高,但整体评价不会低。高与低不是矛盾,是不同维度的必然结果。最容易出现的误判是:看到标注质量低,就推断整份数据不可用。这个推断在临床影像上成立,在这里不成立。§4.4 的案例之所以值得反复引用,正是因为它同时展示了「不精确」(两样蔬菜这条低置信答案)与「真实」(工位用餐这一可独立验证的事实)如何在同一条记录里共存。反过来的误判也常见:看到「日常真实」,就推断标注可以随便用,这同样不成立。

7.1 五维评分

维度 分数(5 分制) 依据 主要扣分项
规模充分性 2.5 千到万量级,评测够用、训练不够 作为预训练语料量级不足
标注质量 2.0 自报告为主,无可闭环金标准 系统性偏差无法从内部发现
结构与可用性 3.5 问答结构清晰,按人划分可行 官方字段未完全公开
隐私与合规 2.0 有脱敏流程,但第三方同意不可追溯 二次传播风险高
生态与影响力 3.0 是新方向,引用与衍生尚在积累 基线分数缺乏横向可比

五个维度的平均落在 2.6 附近。这个分数对一份临床影像数据集来说是灾难,对一份探索性行为观测数据来说是正常水平——因为它的目标不是成为金标准,而是成为「第一个能用来比较第一人称健康理解方法的公共测试床」。用这个定位去读分数,才不会错判。

7.2 与理想数据集的差距清单

理想属性 本数据集现状 差距性质 可否通过使用方式弥补
独立标注者 参与者本人 结构性 否
客观金标准 无 结构性 否,需外部配对
大规模多样本 数十人量级 可扩展 否,需新采集
完整元数据 部分公开 可补 部分可,需申请
明确切分口径 需申请后确认 可补 是
第三方知情同意 不可追溯 结构性 否
霍桑效应控制 无对照臂 结构性 否,需新设计
多语言多文化 单一区域便利样本 可扩展 否

这张表的用处是判断「哪些问题我能自己解决」。右列写「否」的五行是这份数据的天花板,不可能靠更仔细的使用消除。

7.3 已知的、可枚举的偏差

偏差 方向 机制 在数据里的表现
社会期许偏差 行为偏健康 参与者知道会被看 零食与酒精少报
回忆衰减 细节丢失 回看延迟 定量答案置信度低
便利样本偏差 人群偏单一 招募靠熟人 年龄与文化集中
佩戴疲劳 后段数据少 连续佩戴不适 会话前段占比高
视野遮挡偏差 漏检 手臂与餐具遮挡 汤汁类难识别
场景居家偏差 居家偏多 外出佩戴意愿低 室外片段稀少
第三方残留 隐私风险偏高 随机入镜 需逐片段判断

七条里有五条是结构性的,§4.4 的案例已经示范了其中三条如何叠加在同一条记录上。这份数据的正确使用姿态不是「消除偏差」,而是「在报告里写清偏差方向,并说明结论在偏差方向上有多稳」。举例来说,如果模型在「吃了几样蔬菜」上达到某个分数,你应该补一句:由于社会期许偏差会让参与者少报零食、多报蔬菜,这个分数在真实分布上可能偏高,偏高幅度无法从数据内部估计。

7.4 外部验证矩阵

验证方式 可行性 能得到什么 主要障碍
与称重法配对 可行 摄入量的校准系数 需另做实验,成本高
与双标水法配对 可行但昂贵 能量消耗的客观锚点 同位素成本与伦理审批
与膳食回顾问卷配对 容易 两种自报告方法的一致性 两者共享同一偏差源
与电子药盒配对 容易 服药行为的交叉验证 只覆盖开盒动作
与临床营养指标配对 中等 行为与生化指标的关联 需纵向随访
与同类数据集交叉评测 容易 方法的可迁移性 任务定义不一致

矩阵里最值得注意的是第三行:与膳食回顾问卷配对看起来容易,实际信息量很低,因为两者都是自报告,共享同一套偏差机制——它们会高度一致,而这种一致恰恰不能证明正确。真正有信息量的是前两行,它们需要外部测量,成本高但不可替代。

7.5 它为何能持续:因为它占住了一个没有替代品的生态位

如果把这份数据放进整个健康数据版图,会发现一个空位:需要一个既带真实日常场景、又带健康语义、还能用来做问答评测的公共资源。临床影像填不了这个空位(没有日常场景),通用第一人称视频填不了(没有健康语义),传感器队列填不了(没有画面)。三个条件同时满足的资源极少,这就是它能持续存在的原因。

这个生存逻辑也决定了它的演化方向:规模会慢慢扩(因为消费级可穿戴设备越来越普及),标注质量不会因为规模扩大而自动提升(因为瓶颈在自报告本身),隐私处理会成为越来越重的成本(因为监管趋严)。理解这三点,就能预判它未来几年不会变成「大规模客观健康视频库」,而会继续作为「小规模但语义密度高的评测床」存在。

§8 生态位与历史

8.1 从生命日志到健康问答的三十年

用相机记录自己的一天,这个想法比深度学习早得多。上世纪九十年代就有研究者把可穿戴相机挂在身上,全天定时拍照,试图用图像重建个人生活史,这条路线被称为生命日志(lifelogging)。当时的动机是记忆辅助,不是健康研究,而且设备笨重、存储昂贵,样本量极小。

进入二十一世纪的第二个十年,两件事改变了局面。一是消费级运动相机与智能眼镜把设备成本降到了普通人能接受的水平;二是深度学习让「自动从海量图像里提取事件」第一次变得可行。两件事叠加,第一人称视频从个人实验变成了可以规模化的研究素材。饮食研究是最早受益的领域之一,因为「吃了什么」这个问题长期受困于回忆偏差,而胸挂相机的视角恰好覆盖餐盘与手部动作。

再往后,任务组织方式从「事件检索」转向「问答」。问答的好处是任务定义清楚、评分简单、可以跨方法比较;坏处是把连续的日常压缩成了离散的问题,上下文被丢掉了一部分。本篇这类数据正处在这个转折点上:它继承了生命日志的采集方式,采用了问答的标注与评价格式。

阶段 大约年代 主要形态 主要问题 遗留影响
生命日志 1990s–2000s 定时拍照 设备笨重,样本极小 确立「个人视角连续记录」的概念
运动相机时代 2010s 前期 连续视频 存储与电池受限 证明日常可被规模采集
深度学习时代 2010s 后期 事件检索与动作识别 标注昂贵 形成片段级标注惯例
问答时代 2020s 视觉问答 自报告与隐私 本数据所处的阶段

8.2 与临床影像生态的分工

在医院的体系里,影像数据由放射科生产,质量由制度保障,使用由伦理委员会与数据安全委员会把关。第一人称健康视频没有这套制度,它的生产在医院之外,质量靠流程自证,使用靠使用协议约束。

这不是缺陷,是分工。临床影像回答「身体内部发生了什么」,第一人称视频回答「生活里发生了什么」。前者是诊断的原料,后者是行为与依从性的原料。把两者混为一谈,会同时低估影像的专业门槛和高估视频的客观性。

维度 临床影像 第一人称健康视频
生产地 医院 家庭、办公室、街道
生产制度 有资质、有质控 无强制质控
回答的问题 体内发生了什么 生活里发生了什么
典型使用者 放射科、临床科室 行为科学、营养学、可穿戴产业

8.3 消费级设备带来的供给侧变化

这份数据之所以现在可能出现,一个直接原因是硬件。智能眼镜、夹扣式相机、运动相机配胸带,把「连续第一人称记录」的门槛降到了普通人可以承受的程度:设备几百美元,电池撑几个小时,存储卡够录一整天。

供给侧的另一个变化是数据处理。几年前,一段小时的视频要解码、抽帧、存特征,成本高到只有大机构能玩;现在边缘端抽帧、端侧初筛、云端只处理候选片段,成本结构完全变了。这也是为什么这类数据集在最近两年集中出现。

变化 几年前 现在 对数据的影响
设备价格 高,专用设备 低,消费级可用 可招募更多参与者
电池续航 一两小时 半天到一天 可覆盖完整日常
存储与传输 昂贵 便宜 可保留更长时间轴
处理成本 高 边缘初筛后大降 可处理全量而非抽样

8.4 它在生态里的真实位置

最后要给一个诚实的定位。它不是「健康数据版 ImageNet」,规模与标注质量都够不上;它也不是「小圈子自娱自乐的玩具」,因为它确实占住了一个没有替代品的空位。

它更像是一把早期的体温计:测的不是体温,而是「这个研究方向现在能测到什么程度」。每一篇用它做评测的论文,实际上都在报告同一件事——第一人称健康理解这件事,当下的方法离可用还有多远。这个定位不宏大,但很稳,而且随着设备普及会越来越稳。

§9 使用指引

9.1 三种角色的路径

角色 你的核心问题 建议路径 主要陷阱
算法研究者 我的方法在这类任务上表现如何 申请访问 → 按人划分 → 分任务族评测 随机划分导致分数虚高
临床与营养研究者 能不能用它替代问卷 先与问卷并行,再与称重配对 把自报告当客观量
产品与工程团队 能不能用它验证我的记录功能 只用结构做基准,不自建量值 忽略非商业条款

三条路径的入口相同,分歧点在「你信到什么程度」。算法研究者可以接受自报告标签作为评测标准,因为比较是相对的;临床研究者不能,因为结论要落到人身上;产品团队要格外小心,因为商业用途与本许可的边界很紧。

9.2 一条最短的可用流程

从零到跑出第一个分数,最短的路径是五步:确认访问、拉元数据、核对字段、按人划分、跑一次完全匹配评测。下面这段脚本把后四步串起来,用的是 datasets 与纯 Python,不依赖任何评测框架。

#-- 最短可用流程:加载 -> 核对 -> 按人划分 -> 评测
import re
from collections import Counter, defaultdict

from datasets import Dataset, load_dataset

def norm(s: str) -> str:
    s = s.strip().lower()
    s = re.sub(r"\s+", "", s)
    return s

ds = load_dataset("facebook/wearable-ai", split="train")
print("字段:", list(ds.features))

need = {"participant_id", "health_task", "question", "answer", "answer_source"}
missing = need - set(ds.features)
assert not missing, f"缺少关键字段:{missing}"

by_pid = defaultdict(list)
for i, pid in enumerate(ds["participant_id"]):
    by_pid[pid].append(i)

pids = sorted(by_pid)
test_pids = set(pids[::5])
test_idx = [i for p in test_pids for i in by_pid[p]]
test_ds = Dataset.from_dict(ds.select(test_idx).to_dict())

print("评测参与者:", len(test_pids), "评测样本:", len(test_ds))

#-- 基线:把问题的第一个名词当作答案,只看完全匹配,用来确认流水线跑通
def baseline(q: str) -> str:
    tokens = re.findall(r"[\u4e00-\u9fff]+", q)
    return tokens[0] if tokens else ""

hit = Counter()
total = Counter()
for q, a, t in zip(test_ds["question"], test_ds["answer"], test_ds["health_task"]):
    total[t] += 1
    if norm(baseline(q)) and norm(a).startswith(norm(baseline(q))[:1]):
        hit[t] += 1

for t in sorted(total):
    print(f"{t}: {hit[t]}/{total[t]} = {hit[t] / total[t]:.4f}")

这段代码的分数本身没有意义,它的作用是确认流水线通了。跑通之后,把 baseline 换成你的模型,把完全匹配换成合适的指标(开放式答案建议同时报归一化匹配与语义相似度),再按 answer_source 与 camera_mount 分层输出。

9.3 引用方式

引用这类数据时要交代四件事:版本或访问日期(受限仓库会更新)、切分口径(按人还是按片段)、评测所用子集(三类任务是否全用)、以及是否包含 verified 样本。缺任何一项,别人复现出来的数字都可能对不上。

@misc{egowearbench2026,
  title  = {EgoWearBench: A Wearable Egocentric Health Video Benchmark},
  author = {{Meta Wearable AI Research}},
  year   = {2026},
  note   = {Dataset hosted at huggingface.co/datasets/facebook/wearable-ai,
            license CC BY-NC 4.0, accessed 2026-10-26},
  howpublished = {Hugging Face Datasets}
}

BibTeX 之外,正文里至少要写清一句:「本数据为受限访问资源,本文所用版本于某日获取,切分按参与者划分。」这句话是别人能否复现的分水岭。

9.4 五类人的最短路径

§9.1 给的是角色,这里给的是五类更具体的处境。每一类只列「第一天、第一周、以及什么时候该停」,因为多数误用不是发生在用法上,而是发生在没有停下来的那一刻。

处境 第一天 第一周 该停下的信号
验证基线的学生 跑通计数脚本 按人划分 + 小模型 评测侧参与者少于五人
依从性研究 核对复核比例 与电子药盒并行 关键动作被手遮挡
营养流行病学 接受「只作补充」 给问卷加场景标注 需要能量绝对值
隐私算法 读访问协议 统计第三方出镜 要求逐一同意
产品竞品分析 读非商业条款 只用公开分数 需要写进宣传材料

这张表让「不该用它」变得可操作:前两列是做法,最后一列才是决策点。

§10 AI 使用声明

项 声明
生成方式 本页由 AI 辅助撰写,人工核对结构与方法学表述
事实来源 官方仓库页面的访问状态、Europe PMC 与 arXiv 检索结果、公开方法学文献
数字口径 只写规模、结构、边界三类;未获官方确认的数值一律标注未核实
未做之事 未下载视频本体,未做逐条统计,未获取官方数据集卡的逐字字段名
医学声明 本页不构成医疗建议;数据不用于诊断、治疗或疗效判定
隐私声明 本页不复制任何真实片段、截图或参与者信息
许可声明 数据以 CC BY-NC 4.0 发布,商业使用需另行协商
更新策略 官方公开字段与切分后,本页相应章节需复核一次

常见误读(避坑清单)

常见说法 实际情况 证据
「有视频就等于有客观测量」 视频只记录可见行为,不测摄入克数 §2.5 与 §7.3 的偏差表
「参与者标自己的事,肯定最准」 自报告受社会期许与回忆衰减影响 §4.1 的可验证性分级
「已经人脸模糊就没有隐私问题了」 声音、衣着、住所布局仍可识别 §4.2 的三层残留风险
「规模大就够预训练了」 千到万量级,属评测规模 速览表规模行与 §1.6
「CC BY-NC 就是随便用」 NonCommercial 排除商业获利用途 许可字段与 §5.1
「随机划分就行」 同人跨集合会让分数虚高 §5.3 的分组划分与断言
「三类任务合成一个总分」 自报告依赖度差异极大,混算无意义 §2.5 的任务构成表
「它可以替代临床影像」 与诊断无关,只记录日常行为 §8.2 的分工表
「佩戴不影响行为」 霍桑效应双向存在,数据内部无法区分 §4.3 与 §7.3
「和膳食问卷结果一致就说明准」 两者共享同一偏差源 §7.4 的验证矩阵

FAQ

Q1:能直接下载全量数据吗?
不能。仓库在 Hugging Face 上处于受限访问状态,未登录或未获授权时读取数据集卡会直接返回需要登录的提示。需要先在平台侧提交访问申请并说明用途,批准后才能拉取。

Q2:自报告标注能不能当客观真值用?
不能。自报告是拍摄者的回忆与判断,与称重法、双标水法这类客观测量之间系统性存在偏差。它适合做「行为是否发生」的弱标签,不适合做定量摄入或依从性的金标准。

Q3:画面里有别人,能直接拿去发表截图吗?
风险很高。参与者本人同意了录制,但同住的家属、餐厅邻座、路人并没有逐一同意的知情同意。论文插图、演示视频与开源模型示例都可能构成对第三方的二次暴露,应先做人脸与身份信息脱敏再判断。

Q4:CC BY-NC 4.0 意味着可以用于商业产品的评测吗?
不可以。NonCommercial 条款排除了以商业获利为主要目的的使用,包括把评测结果写进商业产品的宣传材料。学术基准比较属于典型的允许范围,企业内训与产品验收属于需要另行协商的范围。

Q5:它和 Ego4D 是同一个东西吗?
不是。Ego4D 是大规模第一人称日常视频语料,覆盖社会互动、手部操作等通用任务。本篇描述的这一类数据把重心放在健康行为的问答标注上,规模小得多,但每条问答都带健康语义。

Q6:为什么一定要按参与者划分训练集和评测集?
同一个人的片段共享厨房、餐具、手势这些非任务信息,随机划分会让模型记住人而不是学会任务。按人划分分数会掉,但那是真实水平。

Q7:样本量只有几十人,结论能推广吗?
不能。几十人的便利样本在年龄、文化、饮食结构上高度集中,只能得出「在这批人身上甲优于乙」这类相对结论。

Q8:想研究霍桑效应,这份数据能用吗?
只能作线索。它没有非佩戴期对照,无法区分「记录到的行为」与「记录带来的行为」。要做实证研究,须在采集阶段加对照臂。

Q9:模型在这些问答上分数很高,说明它能做营养评估吗?
不能。分数高只说明它学会了匹配答案,而答案来自自报告。若训练集里的人都少报零食,模型会学着少报。

Q10:如果只是想快速验证一个想法,有没有更省事的路径?
有。先用公开的通用第一人称小数据集跑通视觉语言流程,确认方法可行之后,再申请这份数据做健康语义域的评测。这份数据的获取门槛决定了它不适合作为第一个实验对象。

Q11:三类任务里哪一类最值得优先做?
看目标。方法研究先做场景上下文类(噪声小、可比);落地先做行为发生类(贴近需求);饮食量化类放最后,且只报相对结论。

Q12:数据更新了怎么办?
受限仓库的内容可能更新。每次更新后重核字段与切分,并在报告里写访问日期;跨版本比分数前先确认子集一致。

术语表

术语 英文 含义
第一人称视频 egocentric video 由佩戴者视角拍摄的连续视频
生命日志 lifelogging 用设备连续记录个人日常生活的实践
视觉问答 visual question answering 给定图像回答自然语言问题的任务
自报告 self-report 由被试本人给出的行为或状态描述
霍桑效应 Hawthorne effect 被观察者因知道自己被观察而改变行为
旁观者 bystander 画面中被拍摄但未表示同意的第三方
便利样本 convenience sample 从易接触人群中招募的非随机样本
数字表型 digital phenotyping 用设备数据刻画个体行为与状态的方​法
社会期许偏差 social desirability bias 倾向于报告符合社会期待的行为
回忆偏差 recall bias 凭记忆复述时产生的系统性误差
双标水法 doubly labeled water 用同位素测总能量消耗的客观方法
称重法 weighed food record 称量食物重量计算摄入的客观方法
受限访问 gated access 需申请授权才能获取的数据发布方式
非商业许可 non-commercial license 禁止以商业获利为主要目的的使用
分组划分 group split 按实体(如参与者)而非样本划分集合
留一被试交叉验证 leave-one-subject-out 每次留一名被试做评测的交叉验证
归一化匹配 normalized match 去除格式差异后比较答案的指标
弱监督 weak supervision 用不完全可靠的标签训练模型
智能体 agent 能自主感知并行动的软件系统
端侧处理 on-device processing 在设备本地完成计算而不上传
时间戳漂移 timestamp drift 记录时间与实际时间之间的偏移
相机佩戴方式 camera mount 相机固定在身体上的位置与方式
场景标签 scene label 片段所处环境的类别标记
答案来源 answer source 标注答案由谁产生的字段

附录 A:核心数字核对表

项 值 来源 来源层级
发布方 Meta 可穿戴人工智能研究团队 官方仓库组织页 官方页面
托管位置 Hugging Face facebook/wearable-ai 官方 API 查询 官方页面
访问状态 受限(需登录与授权) 官方 API 返回提示 官方页面
许可 CC BY-NC 4.0 清单记录 官方页面
规模量级 千到万(小时/问答对) 清单记录 官方页面
任务类别 三类健康问答 清单记录 官方页面
发表场合 ECCV 2026(官方称) 派发信息 未核实
参与者人数 数十人量级 由规模量级推算 未核实
素材场景 用餐、服药、步行、居家 任务设计推断 未核实
字段名 按任务设计推断的规范名 本页 §2.3 未核实

附录 B:数字的来源分层

第一级:官方页面。 仓库归属、托管位置、访问状态、许可类型、规模量级、任务类别,这些来自 Hugging Face 组织页与 API 查询,属于可以引用的硬信息。访问状态这一条尤其确定:未授权时接口直接返回受限提示,这是可复现的观察。

第二级:论文摘要与方法学文献。 关于自报告偏差、可穿戴相机膳食评估、旁观者隐私的处理方式,来自 Europe PMC 检索到的方法学文献与综述。这些文献不针对本数据集,但提供了判断其边界的外部依据。凡引用此类依据,本页都写明它是方法学共识而非该数据集被直接观察到的结论。

第三级:未核实。 参与者人数、具体国家构成、逐项时长、官方字段名、发表场合的最终状态,这些在本页写作时无法从公开渠道确认,全部标注未核实。使用者在正式引用前应通过获批后的数据集卡核对。

附录 C:完整参考文献

  1. Meta Wearable AI Research. EgoWearBench dataset repository. Hugging Face. https://huggingface.co/datasets/facebook/wearable-ai (访问日期 2026-10-26,受限)
  2. Hugging Face Datasets API. Dataset metadata endpoint for facebook/wearable-ai. https://huggingface.co/api/datasets/facebook/wearable-ai
  3. Europe PMC. Wearable camera-based dietary assessment of mother-father dyads in urban and rural households in Ghana. Current Developments in Nutrition, 2026. DOI: 10.1016/j.cdnut.2026.107696
  4. Europe PMC. A scoping review of sensor-based capture of eating and drinking occasions that could be used for enhancing personalized nutrition interventions in real time. Advances in Nutrition, 2026. DOI: 10.1016/j.advnut.2025.100575
  5. Europe PMC. Identifying daily activities of patient work for type 2 diabetes and co-morbidities: a deep learning and wearable camera approach. JAMIA, 2022. DOI: 10.1093/jamia/ocac071
  6. Europe PMC. Contextualizing remote fall risk: video data capture and implementing ethical AI. npj Digital Medicine, 2024. DOI: 10.1038/s41746-024-01050-7
  7. Europe PMC. Is cartoonized life-vlogging the key to increasing adoption of activity-oriented wearable camera systems? CHI EA, 2023. DOI: 10.1145/3544549.3585812
  8. Europe PMC. Acceptance and privacy perceptions toward video-based active and assisted living technologies: a scoping review. JMIR, 2023. DOI: 10.2196/45297
  9. Europe PMC. Review: techniques in egocentric multi-view image analysis. Journal of Imaging, 2026. DOI: 10.3390/jimaging12070324

附录 D:评测脚本骨架

下面的脚本把 §5.2 到 §5.6 的步骤串成一个可以放进仓库的评测入口。它不依赖任何评测框架,只需要 datasets。

#-- 评测入口:分层报告,避免把自报告与复核答案混算
import json
import re
from collections import Counter, defaultdict

from datasets import load_dataset

def norm(text: str) -> str:
    text = text.strip().lower()
    text = re.sub(r"[,。、!?;:]", "", text)
    return re.sub(r"\s+", "", text)

def score(preds, golds):
    em = sum(1 for p, g in zip(preds, golds) if norm(p) == norm(g))
    nm = sum(1 for p, g in zip(preds, golds) if norm(g) and norm(p) and norm(p) in norm(g))
    n = max(1, len(golds))
    return {"em": em / n, "nm": nm / n, "n": len(golds)}

ds = load_dataset("facebook/wearable-ai", split="test")

#-- 这里换成你自己的模型推理函数,签名保持 (question, frame_dir) -> str
def predict(question, frame_dir):
    return ""

groups = defaultdict(list)
for i, row in enumerate(ds):
    key = (row["health_task"], row["answer_source"], row["camera_mount"])
    groups[key].append(i)

report = {}
for key, idx in sorted(groups.items(), key=lambda kv: -len(kv[1])):
    preds = []
    golds = []
    for i in idx:
        row = ds[i]
        preds.append(predict(row["question"], row.get("frame_dir", "")))
        golds.append(row["answer"])
    report["|".join(key)] = score(preds, golds)

with open("eval_report.json", "w", encoding="utf-8") as f:
    json.dump(report, f, ensure_ascii=False, indent=2)

for k, v in report.items():
    print(k, v)

脚本里 predict 返回空字符串是有意的——它让流程能完整跑通而不需要真实模型,方便先验证数据读取与分层逻辑。换成真实模型后,em 与 nm 两个指标要同时报,只报前者会低估开放式答案的表现。

附录 E:如果只记五件事

  1. 它记录的是日常生活的水流,不是一次被安排的检查;这个差别决定了标注只能走自报告。
  2. 三重代价——可靠性、隐私、霍桑效应——都是结构性的,不能通过更仔细的使用消除。
  3. 最独特的问题(吃了什么、吃了多少)恰恰是自报告依赖度最高的,这是它的内生张力。
  4. 按参与者划分是硬要求;随机划分的分数不可比,也不可信。
  5. 它适合做相对比较与方法评测,不适合做客观测量、临床诊断与商业产品验收。

编辑说明

本页为千方医数集「AI-Ready 数据集百科」的正式收录篇目,写作时间 2026-10-26,遵循 20 分钟时间盒的研究纪律:仅访问官方仓库页面与 API 端点,辅以 Europe PMC 方法学检索;未下载数据本体,未做逐条统计。

核验记录:facebook/wearable-ai 仓库在 Hugging Face 组织页与 API 中确认存在,状态为受限访问,未授权读取数据集卡返回登录提示。这是本页唯一一条可复现的直接观察,其余数字来自清单记录与附录 A 标注的推算层级。派发信息给出的官方名与发表场合在 arXiv 与 ECCV 站点检索中无对应结果,故按派发信息书写并标注未核实。

本节表述面向同行复核,不面向一般使用者。免责声明:本页不构成医疗建议,不替代临床判断;数据以 CC BY-NC 4.0 发布,商业使用须另行协商。


相关数据集导航

以下为站内 AI-Ready 数据集百科中与本词条共享多个主题标签的相关数据集,按相关度降序排列:

  • medreco-db — 共享标签:多模态 / 视觉问答 / 医学问答与基准
  • x-pcr — 共享标签:多模态 / 视觉问答 / 医学问答与基准
  • medxpertqa — 共享标签:多模态 / 视觉问答 / 医学问答与基准
  • medframeqa — 共享标签:多模态 / 视觉问答 / 医学问答与基准
  • liveclin — 共享标签:多模态 / 视觉问答 / 医学问答与基准
  • nejm-bench — 共享标签:多模态 / 视觉问答 / 医学问答与基准
  • slide-chat — 共享标签:多模态 / 视觉问答 / 医学问答与基准
  • vqa-med — 共享标签:多模态 / 视觉问答
  • neurovault — 共享标签:多模态 / 医学问答与基准
  • rnacentral — 共享标签:多模态 / 医学问答与基准

导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。

返回 AI-Ready 数据集