信息速览
二〇一八年,天普大学的一群工程师在《Frontiers in Neuroinformatics》上写了一句话,后来被引用了几百次:「癫痫发作在原始临床脑电里的产出率约为 0.2%。」他们紧接着补了一句评价——「这是一个相当令人清醒的统计量」。
这句话的分量得放在上下文里看。天普大学医院从二〇〇二年起把全部临床脑电归档,十四年攒下两万六千多条记录、一万六千多小时。按 0.2% 算,发作的总量也就是三十来个小时。而想训练一个能识别发作的模型,你需要的是小时级的发作片段,不是分钟级。
于是这份数据集的核心工作不是「收集」,是「淘金」。三分之一的工作量花在了怎么从一万六千小时里找出那三十小时——用报告关键词、用商业软件、用自研深度学习模型,三条路并行交叉。最终淘出 675 名受试者、1,476 小时、4,029 次发作。
**它今天的地位不完全来自规模。**更大的功劳是二〇二五年那场挑战赛:十九支队把算法装进 Docker 交上去,统一在丹麦一家癫痫中心从未公开的 4,360 小时记录上跑。结果最好的算法事件级 F1 只有 43%,而同一批算法在自己选的数据上报的数字常常是 60% 到 90%。这份数据集于是变成了那把尺子——它让「你报的 85% 到底是真的还是自选测试集造出来的」第一次有了可验证的答案。
§1 它是什么:一份「淘」出来的临床脑电语料
1.1 一句话定义与四条边界
这是一份从单中心临床归档脑电中筛选并手工标注的癫痫发作时段语料:母体是天普大学医院 2002 至 2017 年的全部临床脑电(26,846 条记录),筛选后保留 7,377 个 EDF 文件、675 名受试者、1,476 小时,其中 4,029 次发作被逐通道标注了起止秒与亚型。
四条边界先划清楚:
- **不是连续长程监测。**全部是修剪后的短片段,平均约十分钟,单个文件不超过一小时。想练「长程背景里的误报抑制」,这份数据给不了你连续背景——这正是它在 SzCORE 挑战赛上被打得最惨的原因之一。
- **不是多中心数据。**全部来自天普大学医院一家机构,同一套设备采购体系、同一批读图医师、同一套报告书写习惯。跨机构泛化能力在这份数据内部无法检验。
- **不是平衡数据。**局灶非特异型(FNSZ)占已标注事件的 81.1%,失神型(ABSZ)只有 43 次、加起来 5 分 13 秒,肌阵挛型(MYSZ)只有 3 次、来自 2 名患者,多数研究直接把它剔掉。
- **不是无门槛下载。**必须签署数据使用协议才能拿到——这一点与论文里「无需数据共享协议」的表述看似冲突,§3 会专门拆解。
1.2 母体有多大,子集有多小
理解这份数据的关键是那张漏斗图。天普大学医院的归档脑电(TUEG)与发作语料(TUSZ)的关系不是「一部分样本」,是「从矿石里炼出来的金属」。
| 层级 | 规模 | 说明 |
|---|---|---|
| TUEG 母体 | 26,846 条记录 | 2002–2017 全部临床脑电,约 1.6 万小时 |
| 走完筛选流程的会话 | 16,168 个 | 进入三方筛选的那些 |
| 筛出的高概率会话 | 872 个 | 含 2,582 个文件 |
| 人工标注后确认真有发作 | 280 个会话 | v1.2.0 口径 |
| 现行 TUSZ(v2.0 系列) | 7,377 个文件 / 675 人 / 1,476 小时 | 4,029 次发作 |
**注意第三行与第四行之间的落差:872 个会话被判定为「高概率含发作」,人工看完只剩 280 个。**也就是说,自动筛选的假阳性率在会话层面高达 68%。这个数字比任何算法指标都更能说明临床脑电筛选有多难——三个独立的检测系统说「这里有发作」,三分之二的时候它们错了。
1.3 筛是怎么筛的:三条路并行
论文把筛选(triage)写得很细,值得完整复述,因为这是这份数据最核心的方法论贡献。
**第一条路:读报告。**脑电报告是神经科医师看完图写的自由文本,里面常有「发作起于」「演变」这类句式。研究团队用 NegEx 算法(一个专门处理否定语境的规则系统,能把「未见发作」和「见发作」区分开)检索了 18,000 个会话。结果:844 个会话被标记,人工确认后 174 个真有发作。分类器在 100 份试点报告上的正确率是 99%。
**第二条路:商业软件。**Persyst P13,临床在用的发作检测系统,跑了 34,698 个文件,判定 1,388 个含发作。
**第三条路:自研模型。**AutoEEG,团队自己的深度学习系统,跑了 31,645 个文件,高置信度检出 1,466 个。
**关键的交叉验证:两个自动系统都判定有发作的文件只有 146 个,占整个语料的 0.42%。**两个独立的检测器,在同一批数据上的一致率低到这个程度。论文自己的结论是:三条路里,读报告最有效。
这个结论有点反直觉——深度学习时代的论文说关键词检索赢了。但它经得起推敲:报告里写「发作」的,是医师真的看到了发作;软件判定的,是信号形态像发作。前者是临床判断,后者是模式匹配。在筛选这个环节,你要的是前者。
1.4 为什么产出率只有 0.2%
论文给出的解释很干脆:临床脑电的主体是已经修剪过的。技师在把记录送上工作站之前,已经删掉了大段无信息的片段。所以进入语料的每一分钟,都是「技师觉得可能有东西」的分钟。在这之上再找发作,命中率自然低。
模型训练者常有一个误解:以为临床数据是「连续录制、原始未剪」。不是。真实流程是技师一边看一边剪,把疑似事件段留下、把大段平稳背景删掉。**这意味着背景段的分布是被人工筛过的,不是自然分布。**所有在这类数据上训练的误报抑制模型,到了真实连续数据上都会失准——因为它从没见过真正漫长的平静。
1.5 二〇一八年的三个数字
论文 v1.2.0 口径:315 名受试者、822 个会话(其中 280 个含发作)、总时长超过 504 小时、发作时长约 36 小时(占 7%)。训练集 265 人,评估集 50 人,两批人完全不重叠。
评估集里含发作的文件占约 34%——比真实临床数据高得多。这是刻意设计的:要评估算法,就得保证测试集里有足够的正例。
性别比也给了:训练集女性 50.5%,评估集女性 56%。年龄分布只有直方图,没有数值表。
1.6 数字发生了什么:504 小时到 1,476 小时
这是这份数据最需要说清楚的一处口径断裂。同一个名称,两套规模数字,差了三倍。
| 指标 | v1.2.0(2018 论文) | v2.0.0 及之后(现行) |
|---|---|---|
| 受试者 | 315 | 675 |
| 会话 / 文件 | 822 个会话 | 7,377 个 EDF |
| 总时长 | 超过 504 小时 | 1,476 小时 |
| 发作时长 | 约 36 小时 | 4,029 次事件(总时长未公开) |
| 划分 | 训练 265 人 / 评估 50 人 | 训练 / 开发 / 评估三划分 |
**这三倍的增量从哪来,官方页面没说。**可能的解释有两个:一是新增了一整批年份的记录(母体 TUEG 覆盖 2002–2017,而 v1 可能只用到其中一部分);二是标注标准放宽,把原先判为「不确定」的片段也纳入了。没有 changelog,就没有答案。
**这个断裂带来的实际后果是:任何引用「TUSZ 有 504 小时」的论文,用的都是八年前的口径。**审稿时看到这类引用,基本可以判断作者没有真的下载过数据。
顺带一提版本号的密度。官方 rsync 路径最新是 v2.0.6,而绝大多数论文引用 v2.0.0 或 v2.0.3。三个版本之间差别有多大,官方同样没有 changelog。
1.7 规模放在国际坐标里
SzCORE 挑战赛的组织者给过一张横向对比表,是这份数据最好的定位依据:
| 数据集 | 受试者 | 时长 | 发作次数 |
|---|---|---|---|
| TUSZ | 675 | 1,476 小时 | 4,029 |
| CHB-MIT(PhysioNet) | 24 | 982 小时 | 198 |
| Siena Scalp EEG | 14 | 128 小时 | 47 |
**看这张表要注意一件事:CHB-MIT 的时长接近 TUSZ 的三分之二,受试者却只有 TUSZ 的三十三分之一。**这不是 CHB-MIT 效率高,是它的人均监测时长极长——每个孩子连着录几十个小时的连续记录。而 TUSZ 是上百人各贡献几段十分钟的片段。
这个差异决定了两者的用途完全不同:**CHB-MIT 适合练连续长程的误报抑制,TUSZ 适合练跨患者的泛化。**想两边都要,就得两个都用——SzCORE 挑战赛的赢家正是这么干的。
1.8 版本演进与维护主体
维护方是 NEDC(Neural Engineering Data Consortium),一个挂在天普大学电气与计算机工程系下、由 Joseph Picone 教授主持的数据联盟。TUSZ 不是孤立的语料,是一整个家族里的一员:
| 语料 | 内容 | 现行版本 |
|---|---|---|
| TUEG | 母体,全部临床脑电 | v2.0.2(26,846 条) |
| TUAB | 正常 / 异常二分类 | v3.0.1 |
| TUAR | 五类伪迹标注 | v3.0.1 |
| TUEP | 癫痫 100 人 / 非癫痫 100 人 | v3.1.0 |
| TUEV | 六类事件(尖波、周期性放电等) | v2.0.1 |
| TUSZ | 发作时段标注 | v2.0.6 |
| TUSL | 慢波事件标注 | v2.0.1 |
**这张表本身就是一条使用建议:如果你的任务不是纯发作检测,先看兄弟语料。**做伪迹抑制的用 TUAR,做异常筛查的用 TUAB,做尖波检测的用 TUEV。很多人不知道这些存在,硬在 TUSZ 上标伪迹。
§2 数据构成:7,377 个文件里装了什么
2.1 目录与文件组织
按 NEDC 的分发约定,语料按受试者、会话、文件三层组织:
tuh_eeg_seizure/
v2.0.6/
edf/
train/
<受试者编号>/
<会话编号>/
<会话编号>_00000001.edf
...
dev/
eval/
annotations/
train/
<会话编号>_00000001.csv
<会话编号>_00000001.lbl
...
_DOCS/
AAREADME.TXT
LICENSE ...
**三个顶层划分(train / dev / eval)是按受试者切的,不是按文件切的。**这一点必须强调:同一个患者的所有会话只会出现在一个划分里。这是癫痫检测的基本要求——同一个人重复出现会造成严重的乐观偏差。
_DOCS 目录里的 AAREADME 是引用要求的关键依据。协议第一条就写明:使用者必须按 AAREADME 里指定的文献致谢。别跳过这一步,协议把它列为第 (1) 条。
2.2 标注的两种口径:LBL 与 TSE
这是理解这份数据的第一道坎,也是最容易被写错的地方。
LBL(label,按通道):每一条标注绑定到具体的通道。它记录的是「这次发作在哪些电极上可见、从哪个电极先开始、怎么扩散、怎么终止」。一次发作在 LBL 里可能产生十几行,每行对应一个通道的一个时间段。
TSE(term,按词项):所有通道共享同一条标注,只记整场发作最早的起始与最晚的结束。一次发作在 TSE 里就是一行。
论文对这个设计的解释是:发作「是一个逐渐建立的生物学过程,常常缺少离散的起止时刻」。所以两种视角都要给——LBL 给空间演化,TSE 给时间边界。
**用哪个?取决于你的标签定义。**做逐通道的发作起始检测(哪一导先变),用 LBL;做整段「有没有发作」的片段级分类,用 TSE。两者混用会出大问题:TSE 的时长天然大于等于该次发作在任意单通道上的时长,用它算出来的敏感度会虚高。
2.3 CSV 标注里有什么
每条标注给四个核心字段:起始时间、结束时间、通道、发作类型。全部以秒为单位,相对文件开头。
另有配套的受试者会话元数据表,字段覆盖:
| 字段 | 取值 |
|---|---|
| 患者 ID | 匿名 |
| 会话 ID | 匿名 |
| EEG 类型 | EMU(癫痫监测单元)、ICU、NICU、NSICU、PICU、CICU、RICU、SICU、BURN、Inpatient、ER、OR、General Outpatient、Outpatient、Unknown |
| 记录性质 | LTM(长程监测)或 Routine(常规,约 30 分钟) |
| 正常 / 异常 | Normal 或 Abnormal |
| 每会话发作数 | 整数 |
| 每文件起止时间与发作类型 | 结构化字段 |
**这张表里最有价值的是「EEG 类型」那一列。**它把同一批数据切成了十几个临床场景:癫痫监测单元的长时间视频脑电、急诊的短程记录、各专科 ICU 的床旁监测、手术室记录。这些场景的信号质量、伪迹构成、发作形态差异极大。
**绝大多数论文只用了 EMU 那部分。**如果你想做「跨场景泛化」,这份元数据是现成的分组依据——而且几乎没人做过。
2.4 十一类发作亚型
标注体系里有 11 个标签:
| 代码 | 全称 | 中文 |
|---|---|---|
| SEIZ | Seizure | 未分类发作 |
| GNSZ | Generalized Non-Specific Seizure | 全面性非特异发作 |
| TNSZ | Tonic Seizure | 强直发作 |
| FNSZ | Focal Non-Specific Seizure | 局灶非特异发作 |
| CNSZ | Clonic Seizure | 阵挛发作 |
| SPSZ | Simple Partial Seizure | 简单部分发作 |
| TCSZ | Tonic Clonic Seizure | 强直阵挛发作 |
| CPSZ | Complex Partial Seizure | 复杂部分发作 |
| ATSZ | Atonic Seizure | 失张力发作 |
| ABSZ | Absence Seizure | 失神发作 |
| MYSZ | Myoclonic Seizure | 肌阵挛发作 |
这套标签是旧版国际抗癫痫联盟分类的产物,不是 2017 年后的新分类。「简单部分」与「复杂部分」的区分依赖意识是否受损,而意识在脑电上不可直接读出;新版分类已经改用「局灶起源、意识保留 / 意识受损」这类描述,并且承认很多发作无法归入明确亚型。
这不是要挑刺。用这套标签时要明白:**它编码的是标注员当时的临床判断,不是可复现的信号特征。**两个人看同一段爆发,一个人标 FNSZ、另一个标 GNSZ,都可能合理。
2.5 类别失衡有多严重
这是全库最硬的统计事实。按有人对 v2.0.0 的逐条统计:
| 亚型 | 事件数 | 总时长(秒) | 占比 |
|---|---|---|---|
| FNSZ | 6,924 | 396,670.1 | 81.1% |
| SPSZ | 942 | 31,985.1 | 11.0% |
| TNSZ | 380 | 7,986.0 | 4.5% |
| TCSZ | 247 | 11,869.4 | 2.9% |
| ABSZ | 43 | 313.2 | 0.5% |
| 合计 | 8,536 | 448,824 | 100% |
**看最后一行的时间数:五类加起来 44.9 万秒,也就是 124.7 小时。**而 SzCORE 给出的整个语料是 1,476 小时。也就是说,这五类发作只覆盖了整个语料的 8.4%——剩下 91.6% 是背景。
**再看 ABSZ 那一行:43 次,加起来 313.2 秒,5 分 13 秒。**平均每次 7.3 秒。这就是失神发作的真实面貌——它本来就短。但对机器学习来说,5 分 13 秒的总正例,在 1,476 小时里基本等于噪声底。
**MYSZ 更极端:3 次,来自 2 名患者。**前面引用的那篇论文直接把它剔除了,理由写得很直白——样本量不足以可靠地训练与评估。
**这个失衡不是数据集的缺陷,是癫痫本身的流行病学。**局灶起源的发作就是最常见,失神发作就是只出现在特定人群。但要训练一个「11 类分类器」,就会遇到一个没法绕开的现实:你的模型在 ABSZ 上的表现,本质上是在 43 个样本上评估的统计量。报这个数字的时候必须附上样本数,否则读者会以为它和 FNSZ 的准确率同等可信。
2.6 文件长度:平均十分钟的代价
单个修剪文件不超过 1 小时,平均约 10 分钟。
**这个数字直接决定了误报率怎么算。**临床上的误报率单位是「次/天」。如果你只有十分钟的片段,从它推算次/天需要乘以 144——这个外推的方差极大。SzCORE 挑战赛之所以要用连续 18 到 98 小时的记录做评测,正是因为这个。
**另一层代价是首次发作的定位。**在连续监测里,患者入院后第一次发作可能在第 30 小时。十分钟的片段拿不到这个信息,所以「预测」类任务(发作前兆)在这份数据上做不了——它只能做「检测」。
2.7 采样率与通道:异构带来的全部麻烦
采样率不低于 250 赫兹,以 250 与 400 两种为主。通道数依原始记录而异,至少 17 路脑电。
**「至少 17 路」这句话背后是一堆工程麻烦。**做过 TUH 数据的人都知道,通道标签不统一是最耗时的一步:同一台设备不同年份的导出,T3 与 T7 指的是同一个位置(旧的 10-20 系统叫 T3,更新后叫 T7),T4/T8、T5/P7、T6/P8 同理。有些文件里还混进心电、眼电、肌电、呼吸带通道,名字五花八门。
官方给了两份文档来处理这件事:ELEC(电极与通道标签说明)和 ANNO(标注格式说明)。这两份必须读,不能靠猜。
参考点也有三种:链接耳(linked ears)、平均参考、平均参考的一个变体。这意味着绝对幅度不可跨文件比较——同一段信号在不同参考下幅度差几倍是正常的。
2.8 标注用的是 19+2 通道
一个容易被忽略的细节:标注时用的是 19 个脑电通道加 2 个辅助通道(心电与闪光刺激)。
**为什么这件事重要?**因为它限定了 LBL 标注的粒度上限。如果你拿到的文件有 25 个通道,LBL 里也只会有那 19+2 个通道的标注——多出来的通道(比如额外的心电或呼吸)没有发作标注。按通道做多标签分类时,这个不一致会让评估代码出错。
2.9 记录时长与患者数量的分布形状
论文给了年龄与时长的直方图,但没有数值表。可推断的几条:
- 平均 10 分钟意味着中位数大概更短——大量记录是门诊常规脑电(约 30 分钟)与更短的急诊片段;
- 675 名受试者对应 7,377 个文件,人均 10.9 个文件;
- 4,029 次发作对应 675 人,人均 5.97 次——但真实分布必然极度右偏,少数频繁发作者贡献了大量事件。
**人均 5.97 次这个平均数不能直接用。**癫痫患者里有一大批是「住院期间一次都没抓到」的(这正是为什么 SzCORE 的 Dianalund 数据集把纳入标准定成「至少一次发作」)。TUSZ 因为有筛选,患者的发作频率必然高于自然人群。
2.10 这份数据里没有的字段
列一份缺失清单,比列有的更有用:
- 没有采集日期与时刻。EDF 头里有记录日期(DD-MMM-YYYY),但为了隐私只到日,不到时。跨会话的时间对齐做不了。
- 没有电极实际放置位置。只知道按 10-20 系统,不知道技师的具体偏差——而真实临床里电极位置偏一厘米很常见。
- 没有用药信息。抗癫痫药物会显著改变脑电背景(比如苯二氮䓬类会让 beta 活动增强),而这份数据不带用药记录。
- 没有发作的临床视频。标注是基于视频脑电的判读,但视频本身不随数据发布。
- 没有发作的临床表现描述(意识状态、肢体动作、发作后期)。
- 没有各文件的确切体积。官方页面没给总容量,只在协议里提到可以寄 8 TB 硬盘拷贝——这暗示全量在数 TB 量级。
**第二条缺失尤其关键。**所有跨患者的通道对齐方法都假设电极位置是一致的。真实临床里,一个焦虑的患者、一顶滑动的电极帽、一次匆忙的粘贴,都会让「C3」这个标签指向略微不同的皮层位置。这类位置噪声在公开数据集里几乎总是被忽略。
2.11 一件事必须说清楚:筛选本身就是偏差源
论文作者自己承认了这一点,原话是「part of the sampling process of the seizures could be somewhat biased by our seizure detection models」。
这句话的分量需要拆开:
**流程是:先用自动检测器找出「可能含发作」的文件,再由人标注这些文件。**那么,一个形态 atypical、自动检测器抓不到的发作,就永远进不了语料——不是因为它被标注员否掉了,而是因为它根本没被送到标注员面前。
**后果是什么?**训练出来的模型会系统性地高估自己在「典型形态发作」上的能力,低估在「非典型发作」上的失败率。而临床上最危险的恰恰是非典型发作。
这不是说这份数据不好。是说用它报出来的敏感度,是在「自动检测器能抓到的发作」这个子集上算的,不是在全人群上。这个前提在写论文时必须交代。
§3 怎么拿到:签署、等待、然后 rsync
3.1 一份看起来简单的协议,五条实质约束
NEDC 的分发规则写在申请表的第二页。协议版本 v6.0,日期 2025 年 6 月 3 日。原文说「免费且无限制」,然后列了五条:
- 必须按语料文档(通常 AAREADME)里指定的文献致谢提供方;
- 不得向第三方发布或再分发数据,第三方须自行联系 help@nedcdata.org 申请;
- 不得尝试重识别受试者;
- 不得用于恶意目的,仅限研究与技术开发;
- 使用结束后从所有计算机系统删除数据。
**第五条最容易被忘,也最容易被较真。**它意味着「下载了就永久留一份」不符合协议。实际执行中几乎无人核查,但协议文本在那里——写论文的方法段时如果声称遵守协议,这一条就得当真。
**第二条的实践含义是:你不能把这个数据集放进任何公开仓库、不能附在论文补充材料里、不能通过镜像站转发。**这解释了为什么 TUSZ 没有出现在 HuggingFace 或 Kaggle 上——不是没人想传,是协议不允许。
3.2 申请表的七个硬要求
申请表本身是一份要打印或电子签名的 PDF。它有七个明确要求,每一条都可能让你的申请被打回:
| 要求 | 说明 |
|---|---|
| 可编辑 PDF | 不能是图片、不能是手机拍的照、不能是扫描件转 PDF |
| 英文法定全名 | 正确大小写 |
| 机构全称 | 不得缩写,要写「University of California, Los Angeles」而不是「UCLA」 |
| 机构内的个人完整邮寄地址 | 必须含办公室号、楼名,能被美国邮政识别;不能是机构通用地址 |
| 含国家码的电话 | 完整号码 |
| 机构邮箱 | 不能是 gmail 等个人邮箱;不能屏蔽 listserv 邮件 |
| 本人签名与日期 | Adobe 电子签名或扫描手签均可 |
**第四条是国际申请者最常卡住的地方。**表格自己写了一段话:「很多非美国订阅者在提供这一项上遇到困难,请咨询你所在机构了解这一步的人。」对国内研究者,通常的解法是写导师或课题组的完整收件地址,含楼栋与房间号。
审核周期通常 24 至 48 小时。通过后会收到凭据,并被加入邮件列表——目的是通知版本更新。
3.3 分发方式在 2026 年 1 月变了
官方页面明确写着:「自 2026 年 1 月起,我们发布的语料改为通过 ssh 密钥与 rsync 分发。」
流程是:申请通过 → 按邮件指示上传你的公钥 → 用 rsync 拉取。官方给的测试命令是:
rsync -auvxL -e "ssh -i ~/.ssh/id_ed25519" \
nedc-tuh-eeg@www.isip.piconepress.com:data/tuh_eeg/TEST .
三个细节值得注意:
- **
-L不能省。**所有语料都是指向 TUEG 的符号链接,不加-L拿到的是一堆空链接。 - **先跑 TEST 目录。**这是官方要求的连通性自测,跳过它直接拉全量,失败了很难定位是权限问题还是网络问题。
- 失败时把
-auxvL改成-auxvvvL,日志会详细到能交给 IT 诊断。
如果网络实在不行,官方还提供一个物理通道:寄一块 8 TB USB 硬盘过去,他们拷好寄回,运费自付。
3.4 一处需要澄清的表述冲突
2018 年的论文里有一句流传很广的话:「不需要数据共享协议或 IRB 协议就能访问这些数据。」
而现行流程是:必须签署数据使用协议。
这两句不矛盾,但极容易被混为一谈。论文那句话的意思是:不像 PhysioNet 的受限数据集(需要 CITI 培训证书、需要机构签署的 DUA、部分还需要 IRB 审批),TUSZ 不需要那些双边手续。它需要的是 NEDC 单方的一份申请表——你填、你签、你发过去,不需要你的机构法务盖章,不需要伦理委员会开会。
**这个区别的实际意义很大。**学生个人就能申请,不用等机构审批流程走两个月。但代价是:责任落在个人身上,第五条「用完删除」的执行主体也是个人。
3.5 引用怎么给
协议第一条要求按 AAREADME 指定的文献致谢。语料层面的标准引用是:
Shah V, von Weltin E, Lopez S, McHugh JR, Veloso L, Golmohammadi M, Obeid I, Picone J (2018). The Temple University Hospital Seizure Detection Corpus. Frontiers in Neuroinformatics 12:83. doi: 10.3389/fninf.2018.00083
母体语料的引用是:
Obeid I, Picone J (2016). The Temple University Hospital EEG Data Corpus. Frontiers in Neuroscience 10:196. doi: 10.3389/fnins.2016.00196
**只引第一篇是常见做法,但如果你的工作涉及母体语料的统计(比如「26,846 条记录」这个数字),第二篇也该引。**因为那个数字出自第二篇。
§4 质量与已知问题
4.1 类别失衡:不是缺陷,是必须设计的约束
上一节给了数字,这一节说后果。
**如果直接按文件比例采样训练,一个「11 类分类器」学到的最优策略是:全部预测 FNSZ。**准确率 81%,看起来很漂亮,实际毫无用处。
常见的三种应对,各有代价:
- 重采样(过采样少数类 / 欠采样多数类):过采样会让 ABSZ 的 43 个样本被重复几百次,模型对那 43 段的具体波形过拟合;欠采样会丢掉大量 FNSZ 的形态多样性。
- 类别加权损失:数学上更干净,但权重设到几十倍时训练会不稳定。
- 改成二分类:把「有没有发作」作为唯一任务,放弃亚型。这是最务实的做法,也是绝大多数实际系统的选择。
**有一个折中值得试:分层评估。**训练时用全部数据做二分类,评估时按亚型分别报敏感度。这样既不用背失衡的包袱,又能暴露「在 ABSZ 上很烂」这个事实。
4.2 五个患者的重叠:一个第三方发现的坑
有研究者在 2025 年的论文里报告:TUSZ 官方训练集与测试集之间有 5 名患者重叠,他们的做法是手工剔除后才做泛化评估。
**这件事的性质要说清楚:这是第三方研究者的报告,不是 NEDC 官方承认的缺陷。**官方文档声称划分是按受试者的。所以有两种可能:一是划分确实按人切了,第三方看错了;二是早期版本(v1.2.0 时代)的划分有遗漏,后续修了或没修。
**无论哪种,实践建议是一样的:自己核一遍。**方法很直接——把 train 与 eval 的受试者 ID 集合取出来做交集。这个检查五分钟能做完,能省掉一次审稿人的质疑。
4.3 修剪数据带来的分布偏移
§1.4 说过:临床脑电在进入语料前已被技师修剪。这一节的后果更严重。
**设想两个场景。**场景 A:一段 10 分钟的记录,患者在第 6 分钟发作。场景 B:一段 10 分钟的记录,全程平静。在修剪过的数据里,场景 A 的比例被人为抬高了——因为技师看到发作就会留下这一段,而全程平静的十分钟可能整段被删。
模型学到的先验是「10 分钟里有发作的概率约 X%」,而 X 在真实连续数据里要低一到两个数量级。
这个偏移在 SzCORE 挑战赛上被实锤了。见 §5.2。
4.4 起止时刻本身是模糊的
论文原话:发作是逐渐建立的生物学过程,常常缺少离散的起止时刻。
**所以「起始时间」这个字段的精度是有限度的。**标注员看到的是脑电图上节律逐渐变化,然后在某一秒决定「从这里算起」。不同标注员之间差几秒是正常的。
**这对评估的影响取决于你的评分规则。**如果用严格的时间点比对(IoU 阈值),几秒的差异就能让一次正确检测变成漏检。SzCORE 的处理方式是给容差:发作前 30 秒、发作后 60 秒内命中都算检出,间隔小于 90 秒的事件合并,超过 5 分钟的事件拆分。这套参数本身就是对「边界模糊」这件事的工程妥协。
4.5 单中心:最难修的限制
全部数据来自天普大学医院。这不只是地理位置的问题,是一整套同质化:
- 设备同质:同一套采购体系下的放大器,频率响应一致;
- 读图习惯同质:同一批医师培训出来的标注风格;
- 患者构成同质:费城某一家医院的转诊人群, socioeconomic 构成固定;
- 报告书写同质:同一套模板、同一套术语。
这四条加起来,意味着在这份数据上训练出的模型,很可能学到的是「天普的脑电长什么样」,而不是「癫痫的脑电长什么样」。
SzCORE 把「单中心」明确列为需要改进的局限,并在挑战赛报告里把这一点当作算法翻车的主要原因之一。
4.6 一个常被忽略的问题:参考点不统一
三种参考点(链接耳、平均参考、平均参考的变体)混在同一批数据里。
**后果是绝对幅度不可比。**同一段 3 赫兹的节律活动,在链接耳参考下可能是 60 微伏峰峰值,在平均参考下可能是 40 微伏。如果用固定阈值做检测(比如「幅度超过 50 微伏判定为发作」),跨文件的误判率会不可控。
**正确的做法是先统一参考再提特征。**SzCORE 的做法是全部重参考到共平均。但这本身也有代价——共平均会把一个通道的坏信号污染到所有通道。
4.7 通道标签的历史包袱
T3 与 T7 是同一个位置,T4/T8、T5/P7、T6/P8 同理。这是 10-20 系统到 10-10 系统的命名迁移留下的。
2002 年开始采集、2017 年结束,中间正好跨过这次改名。所以同一批语料里两种命名都存在,且没有官方映射表。
有经验的团队会写一个映射字典,把旧名全部归一。这个字典不长(四个位置),但漏掉一个就会让某一路通道在所有样本里消失,而且不会报错——这是最讨厌的一类 bug:沉默地丢数据。
4.8 心电与闪光刺激:两个辅助通道的用途
标注时加了两个辅助通道:心电与闪光刺激标记。
**心电通道的价值被严重低估。**发作时心率会变(心动过速最常见,也有心动过缓甚至心脏停搏),而心率变化本身是发作的一个独立指标。有心电通道,就可能做「脑电 + 心率」的多模态检测——文献里这条线的效果不差。
**闪光刺激标记的价值在于排除光敏性反应。**闪光刺激会诱发某些患者的发作,也会在正常人的枕区引起「光驱动反应」(脑电跟着闪光频率走)。后者形态上很像发作,是经典的假阳性来源。有标记就能把这段单独处理。
**但这两个通道不是每个文件都有。**用之前先查通道列表。
§5 能做什么
5.1 任务一:片段级二分类(最成熟)
输入一段脑电,输出「这段里有没有发作」。这是被做得最多的任务,也是基准最完整的。
**主要难点不在模型结构,在评估口径。**是文件级(整个文件里只要有一处发作就算正例)还是窗口级(每个 1 秒的窗口单独判)?两者算出来的数字能差 20 个百分点。
**文件级的天花板很高但没意义。**一个 10 分钟的文件,只要有 5 秒发作,整段就标正。模型只要学会「这段里有异常节律」,就能拿到很高的文件级准确率——而这个能力在临床上等价于「把可疑的都挑出来给人看」,不是自动检测。
5.2 任务二:事件级检测(真正的标准)
这是 SzCORE 定义的口径,也是这份数据现在的主要用法。
**规则是:算法输出一串事件(起止时间),与金标准比对,只要有重叠就算命中。**由此算出四个指标:事件级敏感度、精确度、F1、每日误报次数。
2025 年挑战赛的结果值得完整引用,因为它是这份数据最有价值的产出:
| 算法 | F1 | 敏感度 | 精确度 | 误报/天 |
|---|---|---|---|---|
| Wu Transformer | 43% | 37% | 45% | 1.34 |
| Van Gogh Detect | 36% | 39% | 42% | 3 |
| S4Seizure v2 | 34% | 30% | 42% | 2 |
| DeepSOZ-HEM | 31% | 58% | 27% | 14 |
| S4Seizure v1 | 30% | 49% | 27% | 7 |
| HySEIZa v1 | 26% | 60% | 22% | 13 |
**看第一名那行的四个数字:F1 43%,敏感度 37%,精确度 45%,每天 1.34 次误报。**敏感度 37% 是什么意思?三次发作漏掉两次。
**再看这些算法的自报数字:**NE Illusion 自报 F1 82%,ConvNet 自报 80–90%。同一批代码,换个数据集,掉到个位数。
**挑战赛报告的原话是「几乎所有算法都严重高估了自身性能」。**这句结论比任何单个数字都重要。
5.3 为什么翻得这么惨
报告给了三条解释,都值得记:
**第一,评测集里有儿童。**Dianalund 的 65 名患者含 8 名儿童,最小 5 岁。儿童脑电的频率构成与成人不同(背景更慢、伪迹更多),而大多数算法只在成人数据上训练。
**第二,允许患者移动。**Dianalund 用的是便携式脑电,患者可以在病房走动。这带来大量运动伪迹与电极松动——而 TUSZ 的主体是卧床监测。
**第三,连续记录 vs 修剪片段。**见 §4.3。这是最根本的一条。
**还有一个数字能说明误报的性质:对 91% 的误报,同意它的算法不足 25%。**也就是说,误报基本是各算法自己的怪癖,不是数据里普遍存在的陷阱。这个发现挺重要——它意味着靠「集成多个模型投票」来压误报,效果有限。
5.4 任务三:亚型分类(能做,但要小心报数)
把发作分成 11 类。可行性取决于你报哪几类。
**FNSZ、SPSZ、TNSZ、TCSZ 这四类样本量够(247 到 6,924),做分类有意义。**ABSZ 43 次、MYSZ 3 次,报出来的任何指标都是噪声。CNSZ、CPSZ、ATSZ、GNSZ 在公开统计里连数字都没给,大概率样本极少。
**建议的报数方式:主表只报四类,其余合并成「其他」;附录给出每类的样本数与置信区间。**这比硬凑一个 11 类混淆矩阵诚实得多。
5.5 任务四:伪迹与发作的区分(这份数据不是最优,但能用)
伪迹是发作检测的主要假阳性来源。眼动、咀嚼、寒战、电极脱落、肌电,每一种都有像发作的形态。
**TUSZ 有发作标注但没有伪迹标注。**想做纯伪迹任务,应该用兄弟语料 TUAR——它专门标了五类伪迹(眼动、咀嚼、寒战、电极爆跳与静电、肌电)。
但如果你的目标是「发作 vs 伪迹」的二分类,TUSZ 的负例里天然包含大量伪迹(因为临床脑电里伪迹遍地)。所以它是可用的——只是你不知道负例具体是哪种伪迹,做不了细粒度分析。
5.6 任务五:跨场景泛化(几乎没人做过)
§2.3 提到元数据表里有 15 种 EEG 类型。这意味着你可以:
- 在 EMU(癫痫监测单元)数据上训练,在 ICU 数据上测试;
- 在成人数据上训练,在儿科数据上测试;
- 在 LTM(长程监测)上训练,在 Routine(常规门诊,30 分钟)上测试。
**这三条每一条都是真实的临床部署场景,每一条都几乎没人在 TUSZ 上系统做过。**原因是大多数人拿到数据就按 train/dev/eval 三个目录走,根本没看元数据表。
**这是一个现成的空白。**而且它的评估口径可以完全复用 SzCORE 的事件级评分。
5.7 任务六:多模态(脑电 + 心电)
有心电通道的文件可以做「脑电 + 心率变化」的联合检测。
**这条路线的生理基础很硬。**发作时自主神经会剧烈波动,心率加快是最常见的表现( ictal tachycardia),部分发作会出现心率下降甚至心脏停搏。这些变化在脑电还没明显异常时就可能出现。
**但要注意心电通道不一致。**有的文件有心电,有的没有,有的有多路。做多模态之前先统计覆盖率和通道命名。
§6 常见误读与引用陷阱
| 常见说法 | 实际情况 | 依据 |
|---|---|---|
| 「TUSZ 有 504 小时」 | 那是 2018 年 v1.2.0 的口径;现行 v2.0 系列是 1,476 小时 | 论文 vs 官方页面 |
| 「TUSZ 有 315 名受试者」 | 同上,315 是 v1.2.0;现行是 675 | 同上 |
| 「无需协议即可下载」 | 需要签署 NEDC 数据使用协议;论文那句话指的是不需要机构 IRB 或双边 DUA | 论文 vs NEDC 申请表 v6.0 |
| 「可以直接传网盘分享」 | 协议第 2 条明确禁止再分发,第三方须自行申请 | NEDC 协议 |
| 「有 26,846 条记录」 | 那是母体 TUEG v2.0.2 的数字,TUSZ 是 7,377 个文件 | 官方页面 |
| 「发作事件 4,029 次 = 全部发作的总时长」 | 4,029 是事件数;总时长官方未给。已知五类合计 124.7 小时 | SzCORE vs 第三方统计 |
| 「11 类发作都能训练」 | MYSZ 只有 3 次来自 2 人,ABSZ 只有 43 次共 5 分 13 秒 | 第三方逐条统计 |
| 「标注起始时间是精确的」 | 发作起止本身模糊,论文自认缺少离散起止时刻;评分需容差 | 论文原文 |
| 「训练集测试集按人切分了」 | 官方如此声称,但第三方报告有 5 名患者重叠,需自行核验 | 第三方论文 |
| 「这是连续长程监测数据」 | 是修剪后的短片段,平均 10 分钟,单文件不超 1 小时 | SzCORE 数据集页 |
| 「TUSZ 和 CHB-MIT 可以随便混用」 | CHB-MIT 是双极导联,SzCORE 明确标注它与标准参考导联不兼容,须转换 | SzCORE 挑战说明 |
| 「用 TUSZ 训练的模型可以直接上临床」 | 挑战赛第一名敏感度 37%,每天 1.34 次误报 | SzCORE 2025 结果 |
坑点十三:把「文件数」当「患者数」。 7,377 个文件对应 675 名受试者,人均 10.9 个文件。如果按文件切分训练测试集,同一个患者会同时出现在两边,指标虚高到没有参考价值。切分必须以受试者为单位。
坑点十四:用 TSE 口径算逐通道指标。 TSE 是所有通道共享的时间窗,LBL 才是分通道的。混用会让单通道敏感度虚高。
坑点十五:忽略参考点差异直接提幅度特征。 链接耳与平均参考下,同一段节律的幅度能差一倍。用固定阈值做幅度判据必然失准。
坑点十六:以为 0.2% 产出率意味着数据「稀疏所以好处理」。 恰恰相反:正例极稀,且负例是被人工修剪过的(不含真正的长平静),所以模型学不到正确的先验。
§7 在生态中的位置
7.1 与 CHB-MIT 的分工
这两个数据集最常被拿来比,但它们的用途几乎是互补的。
| 维度 | TUSZ | CHB-MIT |
|---|---|---|
| 受试者 | 675 | 24(多为儿童) |
| 时长 | 1,476 小时 | 982 小时 |
| 发作次数 | 4,029 | 198 |
| 记录性质 | 修剪短片段,平均 10 分钟 | 连续长程,多数 1 小时一段、连录数十段 |
| 导联 | 参考导联(三种参考点) | 双极导联 |
| 来源 | 单中心临床归档 | 单中心儿科监测 |
| 适合 | 跨患者泛化、亚型分类 | 连续长程、个体化建模、误报抑制 |
**一句话分工:想证明你的模型「对不同人都有效」,用 TUSZ;想证明你的模型「在长时间连续记录里不瞎报」,用 CHB-MIT。**两个都过,才有资格谈临床可用。
**一个坑:CHB-MIT 是双极导联,SzCORE 在挑战说明里专门加了注释提醒它「与要求的参考导联不兼容」。**直接混进同一个训练管道会出问题,必须先转换蒙太奇。
7.2 与 Siena、SeizeIT 的关系
Siena Scalp EEG:14 名患者、128 小时、47 次发作,意大利锡耶纳大学。规模小但标注质量高,常被当作外部验证集。
SeizeIT1 / SeizeIT2:KU Leuven 的耳后电极(behind-the-ear)数据集。SeizeIT1 有 82 名患者参与、54 人有耳后脑电记录、42 人出现发作,每人 1 到 22 次(中位 3 次)。它同时提供全 10-20 头皮脑电、耳后脑电与单导心电。
**SeizeIT 的价值在于可穿戴这条线。**它的耳后电极是消费级形态,用它的数据训练出来的模型才有机会进家用设备。TUSZ 的临床电极给不了这个。
7.3 与 TUEG 家族其他成员的分工
不要只盯着 TUSZ。同一批底层数据切出来的六个语料各司其职:
- 做异常筛查(正常 / 异常二分类)→ TUAB;
- 做伪迹检测与抑制 → TUAR;
- 做癫痫 vs 非癫痫患者分类(不是发作检测,是患者级分类)→ TUEP;
- 做尖波、周期性放电等事件检测 → TUEV;
- 做慢波检测 → TUSL;
- 做发作检测 → TUSZ。
**TUEP 尤其被冷落。**它是「100 名癫痫患者 + 100 名非癫痫患者」的患者级划分,带发作标注,还带疾病、用药等元数据。做「患者级筛查」的人应该用它,但在 TUSZ 上硬凑。
7.4 SzCORE 之后:评测标准统一了
2024 年的 SzCORE 框架(arXiv:2402.13005)做了一件对整个领域影响深远的事:统一了数据格式(BIDS-EEG + HED-SCORE)、评分方法(事件级重叠)、指标定义(四项)。
在此之前,论文里报的「准确率 98%」几乎无法比较——有的按样本、有的按文件、有的按事件,有的算段级 F1、有的算患者级。SzCORE 之后,这些数字第一次可以放在一张表里。
**实践建议:如果你的工作用 TUSZ,就用 SzCORE 的评分口径报数。**工具是开源的(timescoring、szcore-evaluation 两个 Python 库),成本很低,收益是审稿人不会再问「你的评估方法在哪」。
7.5 这条路线的现状
把 Szkore 挑战赛的成绩放在它自己的历史里看:
- 2025 年冠军:事件级 F1 43%;
- 商业系统 Encevis 1.7(Koren 等的评测):F1 44.1%;
- 更早的 Neureka 挑战赛冠军:敏感度 12.37%(每天 1.44 次误报,数据集与评分法不同,不可直接比)。
**研究型算法已经摸到了商业系统的门槛,但两者都离临床需求很远。**商业系统通常优先高敏感度(68% 到 81%),代价是更多误报——这是临床取舍:宁可多报让人看,不能漏。
**而挑战赛的第一名敏感度只有 37%。**这个数字与临床期望的差距,是这条路线上最诚实的一个坐标。
§8 怎么用:一条可执行的流程
8.1 第一步:拿数据之前先想清楚要用哪一部分
全量是数 TB 量级(官方说可以寄 8 TB 硬盘拷贝)。新手最常见的错误是拉全量,然后在本地硬盘上卡死。
三条更省事的路径:
- 只要一小部分做原型:先拉
TEST目录验证连通,再拉dev划分(最小的那份)。 - 只要脑电不要别的:很多文件包含心电、眼电、呼吸等通道,只读需要的通道能省一半 I/O。
- 按 EEG 类型筛:先读元数据表,挑出 EMU 子集再下载。这一条能把数据量砍掉大半。
8.2 第二步:统一格式(这一步没有捷径)
无论用哪个框架,这四件事都得做:
**① 通道归一化。**把 T3→T7、T4→T8、T5→P7、T6→P8,并剔除不需要的心电、眼电、肌电通道。官方 ELEC 文档里给了完整标签表。
**② 重参考。**统一到共平均,或者统一到某个固定参考。一定要在滤波之前做——参考变换会改变信号的直流分量。
**③ 重采样。**250 与 400 赫兹混在同一批里,统一到 250 赫兹(向下采样,不引入新信息)。降采样前必须抗混叠,用带限低通到 100 赫兹再加窗,否则高频噪声会折叠进低频。
**④ 滤波。**常用配置是 0.5 到 40 赫兹的带通加 50/60 赫兹陷波。0.5 赫兹的高通能去掉基线漂移但会保留慢波活动;40 赫兹的低通能去掉肌电但也会削弱部分快节律。这两个截止频率会显著影响结果,报数时必须写明。
8.3 第三步:按受试者切分,然后核对
# 伪代码:核验受试者是否跨划分
train_subj = {p.name for p in (root/'edf'/'train').iterdir()}
dev_subj = {p.name for p in (root/'edf'/'dev').iterdir()}
eval_subj = {p.name for p in (root/'edf'/'eval').iterdir()}
assert not (train_subj & eval_subj), f"重叠: {train_subj & eval_subj}"
assert not (train_subj & dev_subj), f"重叠: {train_subj & dev_subj}"
**这个检查必须做。**理由见 §4.2——有第三方报告过 5 名患者的重叠。
**如果你要自己重切分,原则是:按患者分层抽样,尽量保证各划分里都有足够的发作次数。**675 人 4,029 次发作,人均 5.97 次,但分布极偏。硬随机会切出一份「一次发作都没有」的测试集。
8.4 第四步:成对采样,别只取发作段
这是这份数据最关键的训练技巧。
朴素做法:把所有标注的发作段切成 1 秒窗口,再随机采等量的背景窗口。
问题:背景窗口来自哪里?如果来自别的文件,模型会学到「这个患者的背景长这样」而不是「发作长什么样」。而且不同文件的噪声水平、参考点、通道配置都不同,模型可能靠这些无关特征分类。
正确做法:从同一次发作的同一文件里,取发作前后各若干分钟作为负例。这叫「同源负采样」(same-recording negative sampling)。它保证正负例的硬件条件、患者状态、电极阻抗都一致,模型只能靠波形本身区分。
**代价是负例数量受限。**一个 10 分钟的文件,发作 40 秒,可用背景不到 10 分钟。这时可以做「多对一」:一次发作配多段同文件背景,但下采样到与其他文件对齐的数量。
8.5 第五步:按 SzCORE 口径评估
事件级评分的规则要严格照抄,否则数字与文献不可比:
| 参数 | 取值 |
|---|---|
| 最小重叠 | 任意重叠,再短也算检出 |
| 发作前容差 | 30 秒 |
| 发作后容差 | 60 秒 |
| 事件合并 | 间隔小于 90 秒的合并为一个 |
| 事件拆分 | 超过 5 分钟的拆成多个 |
| 汇总方式 | 先按受试者算,再取平均 |
**最后一条最容易被忽略。**如果直接把所有受试者的事件合并算 F1,那么发作次数多的患者会主导结果。按人算再平均,才能反映「平均一个患者身上的表现」。
8.6 第六步:报数时把三件事写清楚
① 你用的是哪个版本。 v2.0.0 / v2.0.3 / v2.0.6 之间的差异官方没给 changelog,但至少要让读者知道你用的是哪个。
② 你用的是哪套标注口径。 TSE 还是 LBL。用 TSE 算出来的指标,与用 LBL 算出来的不是一回事。
③ 你的类别分布。 如果你的测试集里 ABSZ 只有 3 次,那 ABSZ 的敏感度不能与其他类并列上报。
8.7 云端起步:一条更快的路
如果只是想做原型,不太想处理数 TB 的下载,有几条替代路径:
- 先在小样本上跑通流程:只下 20 个文件(10 个含发作、10 个不含),把从 EDF 读取到事件级评分的全链路跑一遍。这一步能暴露 80% 的工程问题。
- 用 SzCORE 提供的格式转换工具:
esl-epfl/epilepsy2bids能把 TUSZ 转成 BIDS 兼容格式。注意官方说明里写了——TUSZ 的 license 要求你自己下载和转换,他们只提供工具不提供转换好的副本。 - CHB-MIT 与 Siena 的 BIDS 版本在 Zenodo 上是直接可下的,可以用它们先搭管道,再换成 TUSZ。
§9 一个更宽的问题:为什么「自报 90%」不可信
这份数据集最值得记的一件事,不在一八年的论文里,在二五年的挑战赛报告里。
**同一批算法,在自己选的数据上报 60% 到 90%,在私有数据上掉到个位数到 40% 出头。**报告里那张散点图(自报 vs 实测)几乎每个点都落在对角线上方很远的位置。
**这不是学术不端,是结构性的。**原因有四层,一层比一层难解决:
第一层:数据集选择。 研究者自然会选那些自己模型表现好的数据集报数。这不需要恶意,只需要在三个可选数据集里挑一个——而挑的理由往往是「这个数据质量好」,翻译过来是「这个数据对我的模型友好」。
第二层:超参调优的信息泄漏。 很多论文在测试集上调阈值、调后处理参数。哪怕只调一个阈值,「在测试集上选中最好的那个」就已经把测试集的信息用掉了。
第三层:同源偏差。 训练集与测试集来自同一家医院、同一批设备、同一群患者人群。模型学到的是这家医院的特征,不是疾病本身的特征。跨机构一换,全崩。
第四层:任务定义宽松。 「文件级准确率 95%」听起来很好,但如果这个文件里只要有 5 秒发作就算正例,那么模型只要学会「这十分钟里有异常」就够了——它不需要定位发作,只需要发现「这段不平常」。这与临床要的「什么时候开始、什么时候结束」是两回事。
四层叠加,就是那个 60 个百分点落差的来源。
这份数据集的价值因此不在数据本身,在于它提供了一个「别人也能拿来考你」的公共考场。 SzCORE 把评分口径、容差参数、汇总方式全部写死,还留了一个持续开放的评测平台——任何人可以提交 Docker 镜像,拿到同一把尺子上的分数。
这件事对整个医疗 AI 的启示是通用的: 一个领域的成熟度,不看它报了多少个 95%,看它有没有一把大家公认的尺子。脑电发作检测在 2025 年有了这把尺子,然后立刻量出了一堆原本看不见的差距。这个顺序不能反。
§10 术语与口径
| 术语 | 含义 |
|---|---|
| TUSZ | Temple University Hospital EEG Seizure Corpus,本页主题 |
| TUEG | TUH EEG Corpus,母体语料,26,846 条记录 |
| NEDC | Neural Engineering Data Consortium,天普大学的维护机构 |
| TSE | Term-based SEizure annotation,按词项标注,所有通道共享时间窗 |
| LBL | LaBeL annotation,按通道标注,逐通道给起止 |
| EMU | Epilepsy Monitoring Unit,癫痫监测单元,长程视频脑电 |
| LTM / Routine | 长程监测 / 常规门诊记录(约 30 分钟) |
| FNSZ | Focal Non-Specific Seizure,局灶非特异发作,占 81.1% |
| ABSZ | Absence Seizure,失神发作,43 次共 313.2 秒 |
| MYSZ | Myoclonic Seizure,肌阵挛发作,3 次来自 2 人 |
| SzCORE | Seizure Community Open-source Research Evaluation,评测框架与基准 |
| HED-SCORE | 标注文件格式规范,SzCORE 采用 |
| 事件级评分 | 以事件重叠计命中,非逐样本比对 |
| FP/24h | 每 24 小时误报次数,临床可接受性的关键指标 |
| 10-20 系统 | 国际脑电电极放置标准;T3/T7 等为命名迁移前后的同位置 |
10.1 关键数字一览
| 项 | 值 | 来源 |
|---|---|---|
| 受试者 | 675 | 官方 / SzCORE |
| EDF 文件数 | 7,377 | 官方 / SzCORE |
| 总时长 | 1,476 小时 | 官方 / SzCORE |
| 发作事件数 | 4,029 | SzCORE |
| 平均文件长度 | 约 10 分钟 | SzCORE |
| 单文件时长上限 | 1 小时 | 2018 论文 |
| 采样率 | ≥250 赫兹(250 / 400 为主) | SzCORE / 第三方 |
| 通道数 | 依记录而异,≥17 路脑电 | SzCORE |
| 标注通道 | 19 路脑电 + 2 路辅助 | 2018 论文 |
| 发作亚型 | 11 类 | 2018 论文 |
| FNSZ 占比 | 81.1%(6,924 / 8,536) | 第三方统计 |
| ABSZ | 43 次 / 313.2 秒 | 第三方统计 |
| MYSZ | 3 次 / 2 人 | 第三方统计 |
| 母体 TUEG | 26,846 条 / 约 1.6 万小时 | 官方 |
| 发作产出率 | 约 0.2% | 2018 论文 |
| 现行版本 | v2.0.6 | 官方 rsync 路径 |
| 2025 挑战赛冠军 F1 | 43% | SzCORE 挑战 |
| 挑战赛参评算法 | 30 份提交 / 20 种算法 / 28 个成功评估 | SzCORE 报告 |
10.2 可立即验证的疑问
- v2.0.6 相对 v2.0.3 改了哪些文件? 官方无 changelog,只有 rsync 路径上的版本号。
- 504 小时怎么变成 1,476 小时的? 新增年份、放宽标注标准,还是两者兼有?
- 675 人里有多少人真的出现过发作? 4,029 次发作的分布形态没有公开。
- 5 名患者重叠是否存在? 需要实际下载后核 train/eval 的受试者集合。
- 各亚型的通道覆盖率是多少? 哪些类型只在少数通道可见,没有官方统计。
- 发作总时长是多少小时? 4,029 次事件的累计时长未公开,只能从第三方对五类的统计(124.7 小时)侧面推断。
- 三种参考点在各文件里如何分布? 官方没给统计,但直接影响预处理策略。
- 年龄分布的数值表在哪? 论文只有直方图。
10.3 DAIMS 评估
| DAIMS 维度 | 评分 | 说明 |
|---|---|---|
| 数据可发现性 | 高 | 官方页面清晰,版本路径明确,文献完整 |
| 数据可访问性 | 中 | 需签署协议、需 ssh key、需 rsync,门槛高于开放下载 |
| 数据可用性 | 中高 | EDF 标准格式,标注 CSV 规范,有官方格式文档 |
| 数据互操作性 | 中 | 通道标签历史命名混杂,需自行归一;SzCORE 已提供 BIDS 转换工具 |
| 数据可重用性 | 高 | 已被 700+ 注册用户使用,是领域事实基准 |
| 数据质量 | 中高 | 标注由受训人员完成,但筛选流程自带偏差,类别极失衡 |
| 数据治理 | 高 | 协议明确五条约束,含禁止再分发与用完删除 |
| 元数据完备性 | 中 | 有会话级元数据表,但缺采集时刻、电极位置、用药信息 |
| 文档质量 | 高 | ELEC / ANNO / RPRT 三份文档齐全 |
| 基准完备性 | 极高 | SzCORE 框架 + 2025 挑战赛 + 持续开放评测平台 |
§11 事实清单
11.1 已核实
| 项 | 值 | 核对方式 |
|---|---|---|
| 受试者 | 675 | SzCORE 数据集页与官方页面一致 |
| EDF 文件 | 7,377 | 同上 |
| 总时长 | 1,476 小时 | 同上 |
| 发作事件 | 4,029 | SzCORE 挑战说明的横向表 |
| 平均文件长度 | 约 10 分钟 | SzCORE 数据集页 |
| 采样率下限 | 250 赫兹 | SzCORE 数据集页 |
| 通道下限 | 17 路脑电 | SzCORE 数据集页 |
| 标注通道 | 19 + 2 | 2018 Frontiers 论文 |
| 亚型数 | 11 | 2018 Frontiers 论文 |
| v1.2.0 规模 | 315 人 / 822 会话 / 504 小时 / 36 小时发作 | 2018 Frontiers 论文 |
| 母体 TUEG | 26,846 条 / v2.0.2 | NEDC 官方页面 |
| 现行 TUSZ 版本 | v2.0.6 | NEDC 官方 rsync 路径 |
| 筛选三路 | 关键词 / Persyst P13 / AutoEEG | 2018 Frontiers 论文 |
| 关键词路径 | 18,000 会话 → 844 标记 → 174 真发作 | 同上 |
| Persyst 路径 | 34,698 文件 → 1,388 含发作 | 同上 |
| AutoEEG 路径 | 31,645 文件 → 1,466 高置信 | 同上 |
| 两工具一致 | 146 文件(0.42%) | 同上 |
| 最终筛出 | 872 会话 / 2,582 文件 → 280 含发作 | 同上 |
| 发作产出率 | 约 0.2% | 同上 |
| 协议版本 | v6.0 / 2025-06-03 | NEDC 申请表 PDF |
| 协议约束 | 5 条 | 同上 |
| 分发方式 | 2026-01 起 ssh key + rsync | NEDC 官方页面 |
| 审核周期 | 24–48 小时 | 同上 |
| 挑战赛规模 | 19 队 / 30 提交 / 20 算法 / 28 成功 | SzCORE 报告 arXiv:2505.18191 |
| 冠军成绩 | F1 43 / 敏感 37 / 精确 45 / 1.34 FP/天 | SzCORE 挑战页 |
| 评测集 | 65 人 / 4,360 小时 / 398 次发作 | SzCORE Dianalund 页 |
| 评测集年龄 | 中位 34,范围 5–66,含 8 名儿童 | 同上 |
| 计算成本 | 334 A100 GPU·h + 97,885 CPU·h | SzCORE 报告 |
11.2 未核实(本页已标明为推断或第三方来源)
- v2.0.6 与 v2.0.3 的具体差异;
- 504 小时到 1,476 小时的增量来源;
- 5 名患者重叠是否真实存在(第三方报告);
- 各亚型的通道覆盖率;
- 发作事件的累计总时长;
- 三种参考点在各文件里的分布;
- 年龄分布的数值表;
- 675 人中真正出现发作的人数。
11.3 证据链
- NEDC 官方页面:语料清单与 rsync 路径、七个兄弟语料的版本号、分发流程变更公告。
- NEDC 申请表 PDF(v6.0):五条使用约束、七项申请要求原文。
- 2018 Frontiers in Neuroinformatics 论文:v1.2.0 全部统计、三路筛选流程的每一步数字、LBL/TSE 两种标注口径的定义、11 类标签、0.2% 产出率与「令人清醒」原话、筛选偏差的自承。
- SzCORE 挑战说明页与数据集页:v2.0 规模的横向对比表、Dianalund 评测集的全部参数、事件级评分五参数。
- SzCORE 2025 挑战成绩页:28 个算法逐项的四指标。
- SzCORE 挑战报告(arXiv:2505.18191):参赛规模、计算成本、91% 误报的独立性分析、自报 vs 实测的落差结论。
- 第三方论文(MDPI Sensors 2025):v2.0.0 的五类亚型逐条事件数与累计时长。
- 第三方论文(arXiv:2501.10404):5 名患者重叠的报告。
- 未下载数据:本页未下载任何 EDF 文件(需签署协议),全部结论基于公开文档与已发表论文。
编辑说明
本页依据 NEDC 官方页面、数据使用协议 v6.0 原文、2018 年 Frontiers in Neuroinformatics 论文、SzCORE 框架与 2025 挑战赛公开材料撰写。全部数字均标注来源类型,凡属第三方研究者的观察(如患者重叠、五类亚型的逐条统计)都在正文中明确标出出处与性质,不与官方表述混同。
需要说明的几处判断:
一是关于规模的三个口径。 本页把 2018 年论文的 v1.2.0 数字(315 人 / 504 小时)与现行 v2.0 系列的数字(675 人 / 1,476 小时)并列呈现,并明确指出两者的断裂。不合并、不取平均、不把新数字套到旧论文的表述上。理由很简单:这两个数字差了近三倍,混用会直接导致读者误判数据量。
二是关于「无需协议」的表述冲突。 论文写「no data sharing or IRB agreements are needed」,而现行流程要求签署 NEDC 的数据使用协议。本页判定这两句不矛盾——论文指的是不需要机构伦理审查与双边数据共享协议,而 NEDC 的单方申请表不在此列。这个判断基于协议文本本身:表格里没有任何需要机构盖章的字段,只需申请人个人签名。
三是关于类别失衡的数字。 FNSZ 6,924 次、ABSZ 43 次等具体事件数,来自第三方对 v2.0.0 的逐条统计,不是 NEDC 官方给出的表。本页采用它,因为它是目前能找到的最细粒度公开统计,同时在表头注明来源性质。据此算出的占比(81.1%、0.5%)是本页的计算,不是引用。
四是关于 5 名患者重叠。 这是第三方研究者的报告,NEDC 官方文档声称划分按受试者。本页不判定谁对,只把这件事作为「必须自行核验」的实践建议提出,并给出核验代码。
五是关于挑战赛成绩的解读。 本页强调 43% 这个 F1 是事件级、在私有跨中心数据上、按受试者先算再平均的口径得出的。这三个限定缺一个,数字就不可比。同样,本页引用「自报 60–90% 掉到个位数」时,注明这是挑战赛报告的结论,不是对所有已发表工作的普遍指控。
六是关于「0.2% 产出率」的意义。 这个数字常被引用为「数据稀缺」的证据。本页加了另一层解读:因为临床脑电在进入语料前已被技师修剪,负例的分布本身就是被人工筛过的,这会导致模型学到的先验与真实连续数据不符。这一层解释是本页的推断,已在 §4.3 标明。
未验证的部分:v2.0.6 的具体变更内容;504 到 1,476 小时的增量构成;675 人中真正出现发作的人数;各亚型的通道覆盖率;发作事件的累计总时长;三种参考点的分布比例;5 名患者重叠的真实性。
编辑说明(核对方式)
核对时间:2026-10-20。核对方式:NEDC 官方页面直接读取;数据使用协议以 PDF 下载后提取文本,逐条比对五条约束与七项申请要求的原文;2018 年论文以 Frontiers 全文页与 PDF 两份来源交叉核对统计数字(该文正文给出 315 人 / 822 会话 / 504 小时,与现行 675 人 / 1,476 小时明确区分);SzCORE 挑战说明页、数据集页、成绩页三处交叉核对评测参数与算法成绩;挑战赛报告以 arXiv HTML 全文核对参赛规模与计算成本。全部结论未依赖任何数据文件的下载。
需要提醒一处:本页写作时读到的一处二手引用(把 v2.0.0 的 7,377 文件 / 675 人 / 1,476 小时误标为「v2.0.3 与 v2.0.0 相同」)在不同机构页面上措辞略有差异,本页统一采用「v2.0 系列」这一表述,只在必须指明版本号时(如现行 rsync 路径 v2.0.6)单独标注。
相关数据集导航
以下为站内 AI-Ready 数据集百科中与本词条共享多个主题标签的相关数据集,按相关度降序排列:
- tuab — 共享标签:生理信号 / 脑电信号 / 癫痫 / 评测基准
- tuev — 共享标签:生理信号 / 脑电信号 / 癫痫 / 评测基准
- capsleep — 共享标签:生理信号 / 脑电信号 / 癫痫 / 评测基准
- upenn-mayo-seizure — 共享标签:生理信号 / 脑电信号 / 癫痫 / 评测基准
- siena-scalp-eeg — 共享标签:生理信号 / 脑电信号 / 癫痫
- bigp3bci — 共享标签:生理信号 / 脑电信号 / 评测基准
- epilepsiae — 共享标签:生理信号 / 脑电信号 / 癫痫
- chb-mit-scalp-eeg — 共享标签:生理信号 / 脑电信号 / 癫痫
- oculusgraphy-erg — 共享标签:生理信号 / 脑电信号 / 评测基准
- neurocritical-pediatric — 共享标签:生理信号 / 脑电信号 / 评测基准
导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。

