信息速览
疫情最紧张的那几个月,机场、医院门口、企业大堂架起了无数红外测温设备,但它们只吐出一个数字:超过阈值就报警。这些设备每天扫过上百万人次,却没有留下任何一条可以被算法反复研究的记录——没有原始热视频,没有同一时刻的体征,更没有对应的核酸检测结果。等到研究者想回头验证「热成像到底能不能筛新冠」时,手里只剩一堆互相转引的论文和一堆无法复核的宣传口径。测温设备铺得越广,可验证的证据反而越薄,这是 2020 年那轮筛查热留下的真正缺口。
ThermalCOVID19 补的就是这个缺口。墨西哥 TecSalud 体系下的 Zambrano-Hellion 医院,在 2020 年 7 月 22 日至 9 月 4 日之间招募了 252 名自愿来做 SARS-CoV-2 PCR 检测的志愿者,在采样当天给他们拍了一段上半身红外热视频:举起双臂、吸一口气、屏住十秒、放下,然后顺时针转九十度,重复三次,于是正面、左侧、背面、右侧四个体位各留下十余秒。每位受试者同时配了一套临床记录——人口统计学、暴露史、生命体征、二十四小时内的症状与服药、最近一餐与活动,以及由实验室出具的 PCR 结果与估算病毒载量。
它的稀缺性无可争议:这是目前公开渠道里少见的一份「带核酸金标准的 252 例新冠热视频库」。但它的价值同样在于一条明确的否定——用它做过机器学习分类的作者在 2022 年的论文里写明,男性模型 AUC 0.605、女性模型 0.577,除男性胸部位视图外各项指标均低于 60%,并直接给出结论:当前的体温热成像诊断性能不足以用作大规模筛查工具。所以它不是「用了就能筛新冠」的数据集,而是「可以量化热成像筛新冠到底有多难」的数据集。后者在筛查热退去之后,反而更值钱。一屏速览见下表。
| 维度 | 内容 |
|---|---|
| 官方全名 | Upper body thermal images and associated clinical data from a pilot cohort study of COVID-19 |
| 发布平台 | PhysioNet(由 MIT 计算生理实验室维护) |
| 数据贡献方 | Tecnológico de Monterrey 医学院、TecSalud Zambrano-Hellion 医院、MIT |
| 首次发布 | 2021 年 6 月 21 日,版本 1.0 |
| 当前版本 | 版本 1.1,2021 年 8 月 16 日 |
| 受试者数 | 252 名,入组条件为年满 18 周岁、自愿做 PCR 检测并签署知情同意 |
| PCR 结果构成 | 阳性 59 例、阴性 192 例、未报告 1 例 |
| 影像规模 | 每人 1 段连续热视频,官方切成 4 个体位片段;公开可得其中正面与背面两个体位 |
| 采集场景 | 墨西哥新莱昂州 San Pedro Garza García,TecSalud Zambrano-Hellion 医院 PCR 采样点,招募期 2020-07-22 至 2020-09-04,通常在 9:00 至 15:00 之间 |
| 采集设备 | Omega Engineering TI-128 数字热像仪,配 Omega TI Analyzer 4.1.8.6875 采集软件,USB 连 Windows 笔记本 |
| 视频规格 | 约 5 帧/秒;MP4 1024×768;标准化 AVI;背景快照 JPG 384×288 |
| 单次时长 | 官方页面称采集过程约 1 分钟;数据札记给出平均 81 秒(标准差 19) |
| 标注方式 | 受试者级的 PCR 实验室结果加自报问卷,另有影像质量观察文本;无像素级标注 |
| 临床表格 | subject_description.csv,覆盖人口统计学、暴露、体征、症状、用药、活动、影像质量观察 |
| 文件格式 | .mp4 / .avi / .jpg / .csv / .m / .pdf / .docx;相机原始 .IRS 不公开 |
| 许可协议 | PhysioNet Restricted Health Data License 1.5.0 |
| 获取门槛 | 是,属受限访问:需注册 PhysioNet 账号、完成认证、签署 PhysioNet Restricted Health Data Use Agreement 1.5.0 |
| 典型用途 | 热成像与感染或呼吸问题的关联分析、热视频标准化与复原算法、体温模式与体征及症状的关联研究 |
| 官方明写的局限 | 部分受试者失焦或横置;相机测量精度为 ±2 ℃ 或 ±2%;样本量小;性别不均衡;胡须与首饰等个体差异 |
§1 它要解决的具体麻烦
1.1 筛查现场有数据,科研现场没有数据
红外测温在 2020 年的普及速度是空前的,但它从设计上就不是为了留下证据。一台测温门的固件里只有阈值与报警灯,热辐射矩阵在算出「额头温度」之后就被丢弃;即使某些设备保存了热图,也没有配套的病原学检测结果,无法回答「这个热分布到底对应的是不是感染」。于是出现了一个尴尬的局面:工程侧有大量部署经验,临床侧有大量关于「热成像不准」的定性评论,而中间那层——同一批人、同一时刻、既有热视频又有核酸结果——几乎是空白。
这个空白的后果是可量化的:任何声称「热成像能筛新冠」的方法,都没有公开的、带金标准的队列可供第三方复核。论文里的 AUC 高低,差别往往来自人群构成、设备型号、采集环境,而不是方法本身。要终结这类不可比,唯一办法是发布一份把金标准、环境、设备、体征全部绑在同一个受试者身上的队列。
ThermalCOVID19 就是这么设计的。它的入组口径极其朴素:凡是来这家医院做 PCR 检测的成年人,愿意签知情同意就纳入。这带来两个直接好处。第一,金标准是实验室出具的 PCR,不是症状自评也不是影像判读。第二,人群是「主动来做检测的人」,也就是真实筛查场景里的目标人群,而不是住院的重症患者——后者在多数新冠影像库里占绝对多数,导致模型学到的是「重症 vs 轻症」而不是「感染 vs 未感染」。
1.2 四条常见的错误期待
第一条,期待它是「四体位齐全的热视频库」。官方在文件表里写得清楚:原始 .IRS 视频与左、右两个体位的片段没有上传到仓库,理由是这些材料可能被用于去标识化攻击(重新识别受试者)。公开可得的只有正面与背面两个体位。想用左右侧,必须走完整数据申请:签保密协议、提交研究提案、经通讯作者审核。
第二条,期待它是「带温度数值的矩阵数据」。公开文件是灰度视频,灰阶被标准化到 62 至 102 华氏度之间;逐像素的绝对温度只存在于相机原始 .IRS 文件里,而 .IRS 不公开。这意味着一切依赖绝对温度值的分析(比如「腋下区域平均温度升高了多少摄氏度」)在公开数据上做不了,只能做灰阶层面的相对比较。
第三条,期待它是「像素级标注的分割数据集」。它没有任何逐像素掩码,也没有器官或体表区域的边界框。监督信号停在受试者级别:一行 CSV 对应一个人,标签是 PCR 阴阳性。想做区域级分析,得自己从热视频里切出感兴趣区域。
第四条,期待它「证明了热成像能筛新冠」。恰恰相反,基于这份数据发表的方法学论文给出的结论是否定的:AUC 在 0.58 到 0.64 区间,除男性胸部视图外各项指标低于 60%,作者明确写出「不足以用作大规模筛查工具」。把它当成正面证据引用,是对它最严重的误用。
1.3 它能给到的与给不到的
| 你的需求 | 它给的 | 够不够 |
|---|---|---|
| 感染状态与热分布的关联分析 | 252 人、受试者级 PCR 标签、四体位设计(公开两个) | 够做关联探索,不够做诊断性能承诺 |
| 热视频标准化与复原算法 | 同一批素材的三种形态:原始规格 MP4、标准化 AVI、背景快照 | 够,且自带官方 MATLAB 预处理脚本 |
| 呼吸模式与胸廓温度关系 | 十秒屏气协议、约 5 帧/秒、连续拍摄 | 够做探索性分析,帧率偏低 |
| 多中心泛化验证 | 单一国家、单一医院、单一设备 | 不够,只能做单中心结论 |
| 绝对温度定量分析 | 灰阶标准化到 62–102 ℉ | 不够,绝对温度只在未公开的 .IRS 里 |
| 像素级病灶分割 | — | 不给,无掩码 |
| 重症与轻症的鉴别 | 人群以主动检测者为主 | 不够,不是住院队列 |
| 大规模筛查工具的训练 | 252 人、阳性 59 例 | 不够,且已有文献结论偏否定 |
| 隐私敏感场景的算法评测 | 去标识到只剩躯干热图 | 够,这是设计目标之一 |
1.4 你的处境与它能帮到的事
| 你的处境 | 它能帮你什么 | 下一步该做什么 |
|---|---|---|
| 你在做热成像筛查算法,需要一个带金标准的外部队列 | 提供 252 人、受试者级 PCR 标签、公开可得的正面与背面片段 | 先读数据札记的 Limitations 段,把已有文献的 AUC 区间作为对照基线 |
| 你在做视频标准化(去模糊、帧率统一、方向校正) | 官方给出了 AVI 的标准化流程与全部 MATLAB 脚本,可反向验证自己的实现 | 对照 matlab_scripts 目录复现,再比较输出差异 |
| 你在研究环境温度对体表测温的干扰 | 每段采集前后都拍了无人的背景热图,且 CSV 里有 Room Temperature 字段 | 用背景 JPG 的时间戳与受试者的流程时间键配对 |
| 你要做体温模式与症状、用药、生活方式的关联研究 | CSV 覆盖症状 12 项以上、用药、最近一餐、近期活动、女性末次月经 | 先确认自报字段的编码方式,别把自由文本当分类变量 |
| 你想复现或反驳已有的热成像筛新冠结论 | 数据与论文同源,且论文给出了分性别的 AUC 与置信区间 | 固定划分与随机种子,在同一份划分上比较,不要跨论文比绝对值 |
| 你想做跨模态(热成像加胸片或 CT)的融合 | — | 做不到,本库不含任何胸片或 CT,也没有跨模态配对 |
1.5 一句话判断
它不是一个「能筛新冠的热成像库」,而是一份「把热成像筛新冠这件事钉死在可复核证据上」的基准:金标准在、环境记录在、失败结论也在。
1.6 不适合谁:四条边界
不适合拿来开发筛查产品。 阳性只有 59 例,阳性样本量决定了一切诊断性能估计的置信区间都会很宽;而基于同源数据发表的结论是否定的。用它做产品原型的性能背书,方向上就是错的。
不适合做绝对温度医学研究。 公开的是灰阶视频,绝对温度在 .IRS 里;相机本身精度为 ±2 ℃ 或 ±2%,而受试者在采集过程中的温度波动按数据札记不足 1.75 ℃。信号幅度与仪器误差同量级,这是它最硬的物理边界。
不适合做像素级或区域级监督学习。 没有任何掩码、边界框或关键点标注;体位虽有四段,公开只有两段。
不适合做人群代表性研究。 单一医院、单一国家、招募期只有六周、每天只在工作时段采集,且官方承认性别不均衡。任何流行病学口径的外推都要先过这一关。
§2 数据构成与规格
2.1 一次采集由哪些文件组成
官方把文件分成两条线。影像线从相机出来的原始 .IRS 视频开始(不公开),向下派生出完整灰度 MP4(不公开)、按体位切分的 MP4(正面与背面公开)、以及标准化后的 AVI(正面与背面公开),另有每个受试者的 MATLAB 预处理脚本与全局脚本目录。临床线只有一张 subject_description.csv,外加问卷模板 PDF 与两份申请用的 Word 文档。此外还有一批无人的背景热图 JPG,用于记录房间温度的变化。
| 文件 | 内容 | 公开可得性 |
|---|---|---|
*.IRS |
相机软件导出、未经任何处理的原始热视频,每人一个 | 不公开,需完整数据申请 |
| 完整灰度 MP4 | 1024×768 的完整热视频 | 不公开,需完整数据申请 |
./termal_mpg_Data/<ID>/Front/Front.mp4 |
正体位片段,1024×768 | 公开(签 DUA 后) |
./termal_mpg_Data/<ID>/Back/Back.mp4 |
背体位片段,1024×768 | 公开(签 DUA 后) |
| 左、右体位 MP4 片段 | 左侧位与右侧位 | 不公开,需完整数据申请 |
./termal_avi_data/<ID>/Front/ClearFront.avi |
标准化后的正体位片段 | 公开(签 DUA 后) |
./termal_avi_data/<ID>/Back/ClearBack.avi |
标准化后的背体位片段 | 公开(签 DUA 后) |
./termal_avi_data/<ID>PreProcessSubject.m |
逐受试者的 MATLAB 脚本,标明该人是否做了去模糊、是否旋转九十度 | 公开(签 DUA 后) |
matlab_scripts/DebluringVideoGeneration.m 等三个脚本 |
由 MP4 生成 AVI 的全部脚本 | 公开(签 DUA 后) |
background_jpg/<时间戳>.jpg |
无受试者的热图快照,384×288,记录房间温度 | 公开(签 DUA 后) |
subject_description.csv |
临床数据集,汇总人群特征 | 公开(签 DUA 后) |
survey_template_datos_termico.pdf |
现场由受训住院医师与热像仪操作员执行的问卷模板 | 公开(签 DUA 后) |
MEXICAN-DATA-ACCESS-FORM-ThermalCovid19.docx |
完整数据申请需填写的提案表 | 公开(签 DUA 后) |
MEXICAN-NON-DISCLOSURE-AGREEMENT.docx |
保密协议 | 公开(签 DUA 后) |
需要说清的是:上表来自官方页面「Table 2」的逐行转写,不是对实际目录的枚举。该资源为受限访问,未登录认证时目录页返回 403,因此文件清单以官方表格为准,实际目录的命名细节以登录后所见为准。
2.2 字段字典
临床表按官方「Table 1」组织成若干数据段。下表左列是官方给出的段名,中列是表内列出的字段,右列是官方摘要文字里给出的字段计数——两者并不总是一致,这个不一致本身值得留意。
| 数据段 | 表内列出的字段 | 官方摘要给的字段数 |
|---|---|---|
| Participant information | ID、Age、Gender、Weight、Height、Last menstruation (LMP) | 4 |
| SARS-CoV-2 Exposure | House、Hospital/Clinics、School/Work、Other | 4 |
| Vital signs | Temperature、Blood pressure、Cardiac rate、O2 Saturation、Respiratory rate | 5 |
| Symptoms(24 小时内) | Fever、Cough、Throat pain、Diarrhea、Vomit、Smell loss、Taste loss、Shivers/chills、Headache、Myalgia、Generalized Arthralgias、Others | 13 |
| Last meal | Time、Type | 2 |
| Previous COVID test | Results | 2 |
| Other consumptions(24 小时内) | Alcohol、Tobacco、Drugs/Vaping | 3 |
| Last physical activity(2 小时内) | Resting、Walk、Jogging、Gym | 4 |
| Medications(24 小时内) | Diabetes、Hypertension、Pain、Fever、Others、Which | 6 |
| Imaging procedure | Local Date、Time、Room Temperature | 归入 thermal images 的 6 |
| Imaging quality summary | mask、necklace、beard、mustache、hair、blurriness、focus 等观察项 | 归入 thermal images 的 6 |
| PCR Diagnosis | Result、(Estimated viral load) | 2 |
官方摘要同时注明:PCR 诊断一段「不由受试者定义,而由实验室结果和/或影像分析定义」。这句话的分量很重——它意味着标签来自实验室,而不是问卷自报,也不是影像判读;同时也意味着「影像分析」在官方口径里被允许参与标签定义,使用时应确认自己拿到的那一列到底是实验室结果还是混合口径。
字段计数不一致的处理建议很直接:以实际 CSV 的列名为准。官方表格是对采集问卷的概括,不是对最终数据文件的模式声明,两者之间出现增删很正常。把它当模式定义用,会在第一次 pd.read_csv 时就翻车。
2.3 单个受试者的完整解剖
把一个人的全部材料摊开,是四层结构。
第一层是一次连续拍摄:相机从受试者举起双臂那一刻开始录,直到四个体位各完成一次十秒屏气为止,中间包含转身。官方页面说整个采集过程约一分钟,数据札记给出的平均时长是 81 秒(标准差 19 秒),并说明其中约 30 秒的体位切换过程被人工裁掉了。
第二层是四个体位片段。数据札记给出各段时长的均值与标准差:正面 13.7 秒(3.5)、左侧 12.5 秒(3.4)、背面 12.4 秒(3.5)、右侧 12.1 秒(3.2)。四段之和与十秒屏气的协议大致吻合——每段里包含举起手臂屏气与放下手臂后的短暂收尾。
第三层是标准化副本。官方把 MP4 转成 AVI 时做了四件事:裁掉灰度色标条、统一帧率到 5 帧/秒、做背景温度稳定化、按需做去模糊与横置方向校正。是否去模糊、是否旋转,写在该受试者的 PreProcessSubject.m 里。这一层的存在,等于官方把「标准化该怎么做」给成了一份可执行答案。
第四层是环境与临床上下文:一张采集前后的背景热图,加 CSV 里的一行。背景 JPG 的文件名是时间戳,与受试者共享同一个流程日期键——官方特意说明影像与采集时间被加密,以避免通过住院记录反查身份。
termal_avi_data/<ID>PreProcessSubject.m #-- 该受试者是否去模糊、是否旋转九十度
termal_avi_data/<ID>/Front/ClearFront.avi #-- 标准化后的正面片段
termal_avi_data/<ID>/Back/ClearBack.avi #-- 标准化后的背面片段
termal_mpg_Data/<ID>/Front/Front.mp4 #-- 未标准化的正面片段,1024x768
termal_mpg_Data/<ID>/Back/Back.mp4 #-- 未标准化的背面片段,1024x768
background_jpg/<时间戳>.jpg #-- 同流程日期键下的无人背景热图
subject_description.csv #-- 该受试者占一行
2.4 主键与映射关系
| 层级 | 键 | 基数 | 说明 |
|---|---|---|---|
| 受试者 | <ID> |
252 | CSV 一行、目录一个,两者同名 |
| 一次采集 | 流程日期键(已加密) | 每人 1 次 | 影像文件名与背景 JPG 时间戳共用此键 |
| 体位片段 | 体位名(Front / Left / Back / Right) | 每人 4 段,公开 2 段 | MP4 与 AVI 各一套 |
| 背景快照 | 时间戳 | 每次采集前后各一张 | 384×288,无受试者 |
| 实验室结果 | PCR Result | 每人 1 个 | 阳性 59、阴性 192、未报告 1 |
主键设计里最需要留意的是加密的日期键。官方明说影像与采集时间经过加密,目的是防止有人拿采集时刻去住院系统里反查身份。这带来一个使用上的直接后果:不能靠时间戳把不同受试者按真实日历排序,也不能把采集时刻与当地气温、疫情曲线之类的外部时间序列做精确对齐。要做这类分析,只能退到粗粒度——比如用采集日期键的相对顺序,或者干脆只用日间时段这个官方已给出的边界(通常在 9:00 至 15:00)。
另一个后果是背景 JPG 与受试者的配对方式。文件名是时间戳而非受试者编号,所以要靠流程日期键间接配对。官方没有公布配对表,也没有给出背景图的张数与受试者数的对应关系。这是档案组织上最薄弱的一环(§7.3)。
2.5 与同类资源的字段差异
| 对比项 | 本库 | 乳腺红外热成像库(静态协议) | 带像素级标注的乳腺热图库 | 新冠胸部 X 光聚合库 |
|---|---|---|---|---|
| 成像对象 | 上半身躯干四体位 | 乳腺五视角 | 乳腺 | 胸部 |
| 时间维度 | 视频,约 5 帧/秒 | 静态图加短动态序列 | 静态图 | 静态图 |
| 金标准 | 实验室 PCR | 影像与病理 | 钼靶与细针穿刺 | 影像判读与文献标注 |
| 监督粒度 | 受试者级 | 病例级 | 像素级 | 图像级 |
| 环境记录 | 背景热图加室温字段 | 通常无 | 通常无 | 不适用 |
| 绝对温度 | 仅在未公开的 .IRS 里 | 常附温度矩阵 | 常附温度矩阵 | 不适用 |
| 是否需认证 | 是 | 视库而定 | 视库而定 | 多为开放 |
这张表要说的只有一件事:本库是动态加金标准的组合,代价是没有像素级标注、没有绝对温度。另外三类分别在静态精度、标注粒度或规模上占优。把它们混为一谈,最常见的后果是拿本库去做只有乳腺静态库才支撑得了的绝对温度分析。
2.6 灰阶的物理含义与四体位差别
公开文件里的「通道」不是多光谱,而是灰阶对温度的映射。数据札记写明:每个 IRS 片段被转成黑白 MP4,灰阶被标准化到 62 至 102 华氏度之间。也就是说,灰度值的零点与量程是人为设定的,跨受试者可比的前提是标准化流程被严格执行——而官方自己在 Limitations 里承认有失焦、相机运动、热失校准与帧率不一致四类问题,AVI 这一层就是为修正它们而生的。
灰度色标条(color bar)在 MP4 里还在,在标准化 AVI 里被裁掉。用哪一层,取决于你要不要那条参照:做算法时通常不该让它进模型,做人工复核时它却是最直观的温度尺。
| 体位 | 协议动作 | 数据札记给出的时长均值 | 观察重点 |
|---|---|---|---|
| Front | 面向相机,举手屏气十秒后放下 | 13.7 秒(标准差 3.5) | 胸廓与面部区域,呼吸引起的胸腹起伏最直观 |
| Left | 顺时针转九十度后重复 | 12.5 秒(标准差 3.4) | 不公开,需完整数据申请 |
| Back | 再转九十度后重复 | 12.4 秒(标准差 3.5) | 背部裸露皮肤,官方入组即要求受试者愿意露出背部 |
| Right | 第三次转九十度后重复 | 12.1 秒(标准差 3.2) | 不公开,需完整数据申请 |
四体位的价值在于它把「同一个人的热分布」变成了可以互相校验的四个视角:正面看胸廓,背面对应是背部体表,两侧补上躯干侧面的温度梯度。只拿到正面与背面时,这个校验只剩两个支点——这是公开版本相比完整版本最实质的损失。
§3 它是谁的数据
3.1 贡献者与机构
PhysioNet 页面列出的五位作者分属三方。Jose Tamez-Peña 来自 Tecnológico de Monterrey 医学院;Adam Yala 来自麻省理工学院;Servando Cardona 来自 TecSalud 的 Zambrano-Hellion 医院乳腺中心;Rocio Ortiz-Lopez 来自该校医学院与健康科学学院的癌症研究组;Victor Trevino 来自该校医学院的生物信息学方向。2024 年的数据札记把作者名单扩到十位,新增了 Andrea-Alejandra Trevino-Ferrer、Carlos-Andres Diaz-Garza、Meritxell Ledesma-Hernández、Alejandra-Celina Esparza-Sandoval、Guillermo Torre-Amione 与 Sofia Rojas-Zumbado,主要是实际执行采集与数据整理的人员。
这个署名结构透露了项目的性质:它不是一家影像公司的产品验证,而是医学院主导、医院提供场地与受试者、MIT 一方参与方法论的临床自发研究。官方致谢里点名感谢了医院 staff、两位负责转录与校对临床数据库的人员、负责相机运输的人员,以及一位负责三维场景美术表达的人员——最后这一项对应论文里那张人体姿态示意图。
3.2 时间线
| 时间 | 事件 | 意义 |
|---|---|---|
| 2020-07-22 | 在 Zambrano-Hellion 医院开始招募志愿者 | 采集启动 |
| 2020-09-04 | 招募结束,共纳入 252 人 | 采集期共六周 |
| 2021-01-29 | figshare 上的 ThermalCOVID19 首次上线 | 元数据先于视频公开 |
| 2021-05-28 | figshare 页面正式发布,CC0 许可 | 随后视频迁往 PhysioNet |
| 2021-06-21 | PhysioNet 版本 1.0 发布 | 首次进入 PhysioNet |
| 2021-08-16 | PhysioNet 版本 1.1 发布 | 当前版本;文件表新增提案表与保密协议 |
| 2022-05 | 方法学论文发表于 Journal of Biomedical Optics | 给出否定性结论,成为本库最有影响的外部引用 |
| 2024 | 数据札记发表于 BMC Research Notes | 补全了 PCR 构成、时长统计与局限性描述 |
从时间线能看出一件事:先有 figshare 的元数据,后有 PhysioNet 的受限数据。figshare 上那份至今仍可见,许可为 CC0,但视频文件已迁走,页面里写明「File(s) not publicly available」。这造成一个容易踩的坑:搜到 figshare 页面的人会以为数据是 CC0 开放的,而 PhysioNet 上的实际门槛是认证加 DUA。
3.3 采集场景:医院 PCR 采样点旁的六周
采集地点是墨西哥新莱昂州 San Pedro Garza García 的 TecSalud Zambrano-Hellion 医院。入组条件是年满 18 周岁、本人要求做 SARS-CoV-2 PCR 检测、并签署知情同意;排除条件是无法深吸气后屏气至少十秒,或不愿意露出背部裸露皮肤。第二条排除条件常被忽略,但它直接解释了为什么背体位片段能公开——入组时已经取得了露出背部的同意。
招募通常在上午 9 点到下午 3 点之间进行。这个时段限制有实际意义:一天之内室温与人体基础体温都在变,把采集压在同一个时段区间,等于减少了环境这个混杂因素的一大部分方差。可惜官方给出的是「通常」这个措辞,不是硬边界,CSV 里的 Local Time 字段才是逐例的依据。
采集前的准备动作官方写得很具体:摘掉眼镜、口罩、帽子与 T 恤;胸衣或遮盖胸部的衣物、耳环、项链不摘。后者既是隐私考虑,也是混杂因素——数据札记的 Limitations 里就把胡须与首饰列为个体间差异的来源之一。
生命体征用 Welch-Allyn 71WT 监护仪采集,包括腋温、血压、心率与血氧饱和度。核酸采样由合格人员做鼻咽拭子,置入病毒运输介质,检测由 TecSalud 体系内 San José 医院的临床实验室完成,使用 ThermoFisher 的 TaqMan 2019-nCoV Assay Kit v1 与 v2;结果判定为「检出扩增信号即阳性」,同时给出由内参曲线估算的病毒载量。伦理审批号为医学院伦理委员会的 P000402-TERMAL-COVID 19-CI-CR001。
3.4 数据来源的三个层次
理解这份数据要先分清三层,越往上越接近原始,越往下越适合直接进管线。
第一层,相机原始视频(.IRS)。 未经任何处理,含逐像素的完整辐射信息。官方明确不公开,理由是可被用于去标识化。这一层不可得,决定了所有依赖绝对温度的问题在公开数据上无解。
第二层,按体位切分的灰度 MP4。 由第一层人工切出四个体位并转成 MPEG-4,灰阶标准化到 62–102 ℉。完整版与左右侧片段不公开,正面与背面公开。这一层保留了色标条与原始帧率的痕迹,适合做复原与标准化的对照实验。
第三层,标准化 AVI。 在第二层之上裁掉色标条、统一到 5 帧/秒、做背景温度稳定化、按需去模糊与旋转。这一层是官方推荐给「想直接探索想法」的人用的,也是唯一一层把所有已知质量缺陷都处理过的版本。
三层之外还有两片附属材料:无人背景 JPG(环境基线)与 CSV 临床表(标签与协变量)。它们共同构成第四层——不进模型,但决定了模型能不能解释。
§4 它最独特的东西
4.1 稀缺的是那个「同时满足」的组合
红外热成像的公开数据并不算少,但它们几乎都集中在乳腺。乳腺热图的采集协议天然适合公开:静态、单部位、有钼靶或病理做参照、不涉及面部。而感染筛查这一支要公开,需要同时满足四件事:有一群自愿者、有病原学金标准、有在疫情期间还能运转的采集场地、以及一套能通过伦理审查的去标识方案。四条同时成立的机会窗口极窄,2020 年那六周就是这样一个窗口。
所以它稀缺的不是「拍得精细」——它自己承认有失焦、横置、相机运动——而是**「在正确的时间点,把正确的三样东西绑在了一起」**:热视频、实验室 PCR、以及采集时的环境与体征。
4.2 差异化证据:三张对照表
| 对照维度 | 乳腺热成像库 | 本库 |
|---|---|---|
| 目标疾病 | 肿瘤 | 感染 |
| 金标准来源 | 影像与病理 | 实验室核酸 |
| 采集姿态 | 静态、五视角 | 动态、四体位加屏气 |
| 时间信息 | 通常无,或短降温序列 | 连续视频加十秒屏气协议 |
| 环境记录 | 通常无 | 背景热图加室温字段 |
| 公开门槛 | 视库而定 | 认证加 DUA |
| 对照维度 | 新冠胸部影像库(X 光与 CT) | 本库 |
|---|---|---|
| 成像原理 | 电离辐射穿透成像 | 被动接收红外辐射 |
| 采集成本 | 需专门场地与设备 | 手持设备加笔记本 |
| 人群 | 以就诊与住院患者为主 | 以主动检测者为主 |
| 标注粒度 | 图像级到像素级不等 | 受试者级 |
| 假阳性来源 | 其他肺部病变 | 环境、运动、衣物与个体差异 |
| 对照维度 | 呼吸音频筛查库 | 本库 |
|---|---|---|
| 模态 | 声学 | 热辐射 |
| 采集方式 | 手机或设备自录 | 现场由操作员拍摄 |
| 与体温的关系 | 间接 | 直接 |
| 私密性风险 | 声音可识别 | 影像经裁剪与去标识 |
三张表合起来说明一件事:本库在「 modality 与金标准的配对」这一格上是独一份。它不是任何现有库的大号版本,而是一个此前没有格子的新格子。
4.3 具体案例:一次采集在三层文件里留下的痕迹
取一个典型受试者。他的目录里会有 PreProcessSubject.m,脚本里写明本次是否执行去模糊、是否需要旋转九十度——这两个布尔量就是官方对「这段视频质量有问题」的机器可读声明。若标了去模糊,说明原始 MP4 对焦不准;若标了旋转,说明拍摄时相机被横置了。
于是同一个人身上能做出一组三向对照:原始 MP4(有问题,但保留了色标条与原始帧率)、标准化 AVI(问题被修正,代价是处理引入的伪影)、背景 JPG(提供当时的环境温度基线)。这三份材料放在一起,恰好构成一个完整的「视频标准化方法该怎么做、做到什么程度」的评测台。
这个案例在全文会出现三次:在 §5 讲读取流程,在 §7 讲质量偏差来源,在 §9 讲最短上手路径。反复回来是因为它把本库最有价值的部分——官方把预处理流程连同脚本一起公开了——从一句抽象的好话变成了一个可以复现的小实验。大多数影像数据集只给结果不给流程,本库给的是两者。
4.4 标注粒度:受试者级清楚,区域级完全没有
| 标注层级 | 是否存在 | 说明 |
|---|---|---|
| 受试者级(PCR 阴阳性) | 有 | 阳性 59、阴性 192、未报告 1 |
| 病毒载量 | 有(估算值) | 由内参曲线估算,官方列为 PCR 段第二个字段 |
| 体位级 | 有 | 目录结构即体位,无需额外标签 |
| 帧级 | 部分 | 体位片段本身是时间切分,但无逐帧标签 |
| 区域级(感兴趣区) | 无 | 需自行从视频中切取 |
| 像素级 | 无 | 无掩码、无边界框、无关键点 |
| 影像质量 | 有(文本) | CSV 的 Thermal Quality Observations 列逐例记录 |
这张表最关键的一行是最后一行。官方把影像质量做成了自由文本观察,而不是结构化的布尔字段——官方页面列举的观察项包括 mask、necklace、beard、mustache、hair、blurriness、focus 等。这意味着质量筛选这一步无法用 df['blur'] == True 完成,得先做文本解析,而解析口径会成为复现性的隐患。已有方法学论文是按「五个感兴趣区」来组织特征的,可见实际使用者是自己定义了区域,而不是用官方给的。
4.5 边界条件:什么情况下它不再适用
| 条件 | 是否适用 | 判断依据 |
|---|---|---|
| 你要验证热成像筛查算法的上限 | 适用,且是最合适的公开材料之一 | 有 PCR 金标准与同源否定性结论可对照 |
| 你要做绝对温度的临床判读研究 | 不适用 | 绝对温度在未公开的 .IRS 里,且相机误差与信号幅度同量级 |
| 你要做四体位融合 | 谨慎 | 公开只有正面与背面,左右侧需申请 |
| 你要做像素级分割 | 不适用 | 无任何掩码 |
| 你要做多中心验证 | 不适用 | 单一医院、单一国家、单一设备 |
| 你要做重症分层 | 不适用 | 人群是主动检测者,不是住院队列 |
| 你要做儿童热成像 | 不适用 | 入组下限 18 岁 |
| 你要做时序流行病学分析 | 不适用 | 日期键被加密,无法与外部日历对齐 |
这张表最该被记住的两行是第二行与最后一行。第二行是物理边界,绕不过去;最后一行是设计边界,很多人直到写方法节才发现。
§5 怎么拿到
5.1 目录结构
官方文件表给出的目录是三支并列的:影像按格式分成 termal_mpg_Data 与 termal_avi_data 两支,每支下按受试者编号分子目录、再按体位分子目录;背景图单独放 background_jpg;脚本放 matlab_scripts;表格与文档放在根目录。
| 路径形态 | 内容 | 命名特征 |
|---|---|---|
termal_mpg_Data/<ID>/<Pos>/<Pos>.mp4 |
未标准化片段,1024×768 | 目录名与文件名同名 |
termal_avi_data/<ID>/<Pos>/Clear<Pos>.avi |
标准化片段 | 文件名前缀 Clear |
termal_avi_data/<ID>PreProcessSubject.m |
逐受试者预处理脚本 | 脚本名紧跟编号,无分隔符 |
matlab_scripts/*.m |
三个全局脚本 | 去模糊、生成正位 AVI、生成背位 AVI |
background_jpg/<时间戳>.jpg |
背景热图,384×288 | 时间戳而非受试者编号 |
subject_description.csv |
临床表 | 根目录单文件 |
survey_template_datos_termico.pdf |
问卷模板 | 根目录单文件 |
MEXICAN-*.docx |
提案表与保密协议 | 根目录单文件 |
注意 PreProcessSubject.m 的命名没有下划线或斜杠分隔,形如 <ID>PreProcessSubject.m。写批量脚本时按「编号加固定后缀」拼字符串即可,但要先确认编号的位宽是否补零——官方表格没有给出编号格式,这一点属于未核验内容(§10)。
5.2 批量下载
受限资源的下载必须带认证。PhysioNet 的做法是先注册账号、完成使用伦理培训取得认证、再在项目页签署该项目的 DUA,之后才能用同一账号拉取文件。
#-- 1. 先把账号写进 ~/.netrc,避免密码出现在命令行与历史里
#-- machine physionet.org login <你的账号> password <你的密码>
chmod 600 ~/.netrc
#-- 2. 递归拉取 v1.1 全量;-N 只取比本地新的文件,便于断点续传
wget -r -N -c -np --no-check-certificate \
https://physionet.org/files/covid-19-thermal/1.1/
#-- 3. 只拉表格与脚本,先看结构再决定要不要拉视频
wget -r -N -c -np -A '*.csv,*.m,*.pdf,*.docx' \
https://physionet.org/files/covid-19-thermal/1.1/
第三步是强烈建议的第一步。临床表与预处理脚本体量极小,几分钟就能看完结构;而视频是 252 人乘若干片段,全量拉取前先确认磁盘与带宽。
也可以用官方的命令行工具按项目名拉取,前提是本地已完成 PhysioNet 认证配置的写入。无论用哪种方式,不要在没有认证的情况下反复尝试——受限目录对未认证请求返回 403,重试不会改变结果。
5.3 读取方式
CSV 是普通表格,用 pandas 直接读。视频是标准容器,用 OpenCV 或 imageio 读帧;AVI 与 MP4 的解码差异在 Linux 上偶有坑,建议先抽查一帧确认通道数与位深。
import pandas as pd
import cv2
#-- 临床表:一行一个受试者
df = pd.read_csv('subject_description.csv')
print(df.shape, list(df.columns)[:12])
#-- 视频:逐帧读,确认分辨率与帧率
cap = cv2.VideoCapture('termal_avi_data/EXAMPLE/Front/ClearFront.avi')
fps = cap.get(cv2.CAP_PROP_FPS)
n = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))
ok, frame = cap.read()
print(fps, n, None if not ok else frame.shape)
cap.release()
热视频是灰度视频,frame 通常是二维或三通道相等的伪彩色。做特征前先统一成单通道,别让三个相同通道白白占掉三倍显存。
背景 JPG 是 384×288,与视频的 1024×768 不同。用它做温度基线时不能与视频帧直接相减,要先重采样到同分辨率,或者只取统计量(比如背景图的均值与极值)做标量校正——后者正是官方在标准化流程里采用的思路。
5.4 转成可训练的表结构
本库的自然粒度是「一人一样本」,样本量只有 252。因此更常见的做法是把它转成「一人多片段」或「一片段多帧」的表,再配合受试者级划分。
import pandas as pd
import cv2, numpy as np, glob, os
ROWS = []
for vp in sorted(glob.glob('termal_avi_data/*/*/*.avi')):
#-- 路径反解出受试者编号与体位
parts = vp.replace('\\', '/').split('/')
subj, pos = parts[-3], parts[-2]
cap = cv2.VideoCapture(vp)
n = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))
cap.release()
ROWS.append({'subject': subj, 'position': pos, 'path': vp, 'frames': n})
clip = pd.DataFrame(ROWS)
#-- 与临床表按受试者编号左连接,标签带进来
clip = clip.merge(df, how='left', left_on='subject', right_on='ID')
print(clip.shape, clip['position'].unique())
这段代码只做一件事:把目录结构转成一张「片段清单表」。上正式实验时有三处必须改。一是划分必须按受试者编号,不能按片段随机切,否则同一人的正面与背面会分居两侧(§7.3)。二是标签列要先确认语义,确认拿到的那一列是实验室 PCR 结果而不是自报的既往检测结果。三是片段长度不齐(各体位时长均值在 12 至 14 秒之间且标准差约 3 秒),做定长输入时要么截断要么补零,口径要写进方法节。
5.5 标注映射
| 你想要的标签 | 从哪来 | 映射注意 |
|---|---|---|
| 感染状态二分类 | PCR Result 列 | 有 1 例未报告,需在读入时显式处理,别让它变成 NaN 后静默丢样本 |
| 病毒载量 | PCR 段的估算病毒载量字段 | 估算值,来自内参曲线,不是标准曲线绝对定量 |
| 症状计数类协变量 | Symptoms 段十余个字段 | 自报,二十四小时窗口;编码方式以实际 CSV 为准 |
| 影像质量 | Thermal Quality Observations 列 | 自由文本,需先做解析;官方列举的观察项可作关键词起点 |
| 环境基线 | 背景 JPG 加 Room Temperature 字段 | 分辨率不同,只能做标量校正 |
标签这一步最容易出错的地方是把自报的既往检测结果当成金标准。官方表格里既有 Previous COVID test 段,也有 PCR Diagnosis 段,后者才被官方标注为「由实验室结果和/或影像分析定义」。选错列,整个实验的标签语义就变了。
5.6 五个最容易出错的地方
| 位置 | 错误写法 | 后果 | 正确做法 |
|---|---|---|---|
| 体位可得性 | 以为四个体位都有 | 左右侧与原始视频不在仓库里 | 先按正面与背面设计实验,左右侧走申请 |
| 温度单位 | 把灰阶当摄氏度 | 灰阶被标准化到 62–102 华氏度区间 | 只做相对比较,或申请原始文件 |
| 背景图配对 | 按文件名与受试者编号匹配 | 背景图用时间戳命名 | 走加密的流程日期键 |
| 数据集划分 | 按片段随机切分 | 同一人的正背两片分居两侧,结果虚高 | 按受试者编号分组 |
| 质量筛选 | 假设有结构化的质量字段 | 质量信息是自由文本 | 先做文本解析并公开解析口径 |
§6 与其他数据集的关系
6.1 关系图谱
| 站内数据集 | 模态 | 与本库的关系 |
|---|---|---|
| dmr-ir(巴西乳腺红外热成像库) | 红外热图 | 同 modality、不同部位与疾病;它有静态五视角与动态降温协议,本库是视频加屏气协议 |
| dbt-tu-ju(乳腺热图热区标注库) | 红外热图 | 它有像素级高温区 ground truth,本库没有;本库有核酸金标准,它没有 |
| covid-19-radiography(多源聚合胸部 X 光库) | X 光 | 同为新冠筛查的不同 modality,人群与标注粒度差异大 |
| covid-19-sounds(剑桥新冠声音) | 音频 | 同为低成本远程筛查路线,可做「热加声」的对照设想,但两者人群不配对 |
| brixia-peru(BrixIA 胸片六区评分) | X 光 | 同为疫情期医院采集,人群以就诊患者为主,与本库的主动检测人群不同 |
| covid-ct-lung(新冠 CT 与感染分割) | CT | 有像素级感染掩码,本库没有;可对照「有掩码但无核酸」与「有核酸但无掩码」两种局面 |
| covidx-cxr、bimcv-covid、sar-covid、covid-ct、rsna-pneumonia | X 光与 CT | 同一主题下的规模参照系,用于说明本库在样本量上的位置 |
这张图谱的意义在于定位:本库在 modality 上是红外一支,在疾病上是新冠一支,两线交集上几乎没有第二个数据集。它不与任何一个胸部影像库竞争规模,也不与乳腺热图库竞争标注粒度。
6.2 检索路径
| 你要找的东西 | 检索词 | 会落到哪里 |
|---|---|---|
| 同 modality 的其他部位 | 热成像、thermography、红外 | dmr-ir 与 dbt-tu-ju 两条乳腺数据集 |
| 同疾病的其他 modality | covid、新冠、肺炎 | covid-19-radiography、covidx-cxr、sar-covid 等 |
| 有像素级掩码的对照 | 分割、掩码、ground truth | covid-ct-lung、dbt-tu-ju |
| 低成本远程筛查路线 | 声音、呼吸、可穿戴 | covid-19-sounds |
| 就诊人群的疫情期影像 | 疫情、胸片、Brixia | brixia-peru |
| 与本库配对的方法学论文 | thermal images classification | §8.4 与附录 C |
6.3 分工判据
选数据时最实际的问题不是「哪个最好」,而是「哪个负责哪一段」。
| 任务 | 主粮仓该用什么 | 本库的位置 | 原因 |
|---|---|---|---|
| 热成像与感染状态的关联探索 | 无可替代 | 主力 | 唯一带核酸金标准的上半身热视频队列 |
| 热视频标准化与复原算法 | 无可替代 | 主力 | 三层文件加官方脚本构成完整评测台 |
| 大规模筛查模型训练 | 胸部影像大库 | 不适用 | 阳性仅 59 例,且同源结论偏否定 |
| 像素级热区分割 | 有掩码的乳腺热图库 | 不适用 | 无任何掩码 |
| 绝对温度临床判读 | 附温度矩阵的静态热图库 | 不适用 | 绝对温度在未公开的原始文件里 |
| 多中心泛化 | 多中心影像库 | 不适用 | 单中心单设备 |
| 新冠影像诊断基线 | 胸片与 CT 聚合库 | 辅助 | 提供另一条 modality 的下限参照 |
这张表最该被记住的是第一行与第二行。其余各行都是「不要用本库」——把边界写清楚,比把它写成万能更有用。
§7 质量评估与局限性
7.0 阅读本节前的一个前置校正
先纠正一个常见误判:把「样本小」直接等同于「质量差」。本库 252 人不是采集能力不足,而是招募窗口只有六周、且必须绑在一次核酸检测上。评价它不能套「越大越好」的尺子,而要问:在它能回答的那个问题上,样本够不够?
这个校正会改变五维评分的读法。规模一项它拿不到高分,但「任务唯一性」几乎无可替代。把两件事混着看,会得出「不值得用」的错误结论。
7.1 五维评分
按常用数据质量维度打分,每项 1 至 5 分,分数针对「作为热成像筛查研究方法学素材」这一用途。
| 维度 | 分数 | 理由 |
|---|---|---|
| 数据规模 | 2 | 252 人、阳性 59 例,估计区间宽 |
| 标注质量 | 4 | 标签来自实验室核酸,金标准可靠;但影像质量信息是非结构化文本 |
| 任务适配 | 5 | 热视频加核酸金标准加环境记录,几乎无替代品 |
| 文档完整 | 4 | 官方页面加数据札记写清了协议、设备与局限;但页面引用了一个并不存在的「技术验证」章节 |
| 可获取性 | 2 | 受限访问,需认证加 DUA;原始文件与两个体位还需额外申请与保密协议 |
五项合计 17 分(满分 25)。分数结构很鲜明:标签与适配拉高,规模与可获取性拖低。这不是一个「随手就能用」的库,是一个「值得为它走一遍流程」的库。
7.2 标注的两层
第一层是标签对不对。PCR 由 TecSalud 体系内 San José 医院的临床实验室完成,用 ThermoFisher 的 TaqMan 2019-nCoV Assay Kit v1 与 v2,判定规则是检出扩增信号即为阳性。这一层质量高,也是本库最大的资产:标签不依赖影像判读,因此不存在「用影像定义标签又用影像预测标签」的循环论证。
第二层是协变量对不对。症状、用药、最近一餐、近期活动、末次月经等字段全部来自受试者自报,由现场受训的住院医师与热像仪操作员按问卷记录。自报数据的问题不在真假,而在口径:二十四小时窗口的记忆偏差、症状的口语化表述、以及「Others」这类兜底字段的编码方式,都会影响协变量分析的可复现性。官方提供了问卷模板 PDF,做协变量研究前应先对着模板确认每个字段的取值域。
| 用途 | 标签层的影响 | 建议 |
|---|---|---|
| 感染状态分类 | 金标准可靠 | 可直接使用,注意 1 例未报告 |
| 病毒载量回归 | 估算值,非绝对定量 | 只做相对比较,别当临床载量用 |
| 症状关联分析 | 自报,二十四小时窗口 | 先按问卷模板确认取值域 |
| 影像质量筛选 | 自由文本 | 解析口径必须公开 |
| 环境与温度校正 | 背景图加室温字段 | 标量校正,不做像素级相减 |
7.3 可枚举的偏差
| 偏差 | 表现 | 影响 |
|---|---|---|
| 单中心 | 单一医院、单一国家、单一设备型号 | 设备特性与操作规范不可外推 |
| 招募窗口窄 | 六周,通常 9:00 至 15:00 | 季节、时段与疫情阶段的覆盖都不全 |
| 性别不均衡 | 官方在数据札记中明确列出 | 分性别结果不可互换,已有论文显示男女模型表现不同 |
| 阳性样本少 | 59 例阳性 | 诊断性能估计的置信区间很宽 |
| 体位缺失 | 公开只有正面与背面 | 侧面信息不可用,融合类方法受限 |
| 采集缺陷 | 失焦、横置、相机运动、热失校准、帧率不一致 | 原始 MP4 需自行校正,或改用标准化 AVI |
| 个体差异 | 胡须、首饰、未摘除的衣物 | 引入非疾病相关的热分布差异 |
| 隐私处理 | 日期键加密、面部与体貌细节被规避 | 无法与外部日历或气象数据精确对齐 |
| 文档缺口 | 官方页面引用了并不存在的「技术验证」章节 | 技术验证内容实际散落在数据札记里 |
| 段内相关性 | 同一人的正面与背面片段高度相关 | 按片段随机切分会导致乐观偏差 |
最后一行是最容易被低估的泄漏源。同一受试者的正面与背面来自同一次采集、同一套设备状态、同一个人的体温与呼吸模式;把它们随机分到训练与测试两侧,模型只要记住「这个人」就能拿分,而这个能力换到另一家医院完全失效。正确做法很朴素:以受试者编号为分组键做划分,同一个人绝不出现在两侧。
7.4 外部验证
本库最有影响的外部引用,是基于同源数据发表的方法学论文。该文用五个感兴趣区(整个上半身、胸部、面部、背部、侧面)提取信号矩、纹理与形状矩特征,用光学流与超分辨率做预处理,再用机器学习分类。结论是:男性模型 ROC AUC 0.605(95% 置信区间 0.58 至 0.64),女性模型 0.577(0.55 至 0.61);除男性胸部视图外,各项指标低于 60%;作者明确写出当前的体温热成像诊断性能不足以用作大规模筛查工具。更早的一版会议论文给出的准确率区间是 0.433 至 0.524,方向一致。
| 验证角色 | 做法 | 讲得通的地方 | 风险 |
|---|---|---|---|
| 方法学上限评测 | 在本库上跑分类,与已发表 AUC 区间对照 | 同源数据,可比性最好 | 样本小,单次划分波动大 |
| 分性别分析 | 分别训练男女模型 | 官方承认性别不均衡,分性别是必要动作 | 分性别后样本更少,区间更宽 |
| 标准化流程评测 | 用 MP4 与 AVI 两层对比 | 官方脚本可直接复现 | 去模糊引入的伪影难以量化 |
| 跨模态对照 | 与胸片或 CT 库的结果并列 | 说明 modality 间的差距 | 人群不配对,不能做融合 |
外部引用里有一个值得注意的读法:本库最稳定的用途是「说不」。已有论文用它证明了热成像筛查的性能上限很低,这个结论比任何正向结果都更可靠,因为它不依赖模型是否调得好——调得好与调得差都没能突破 60%。这也给出了具体的使用建议:如果你的方法在本库上拿到了远高于 0.6 的 AUC,第一件该做的事不是庆祝,而是回头检查划分是否按受试者、标签列是否选对、以及有没有把左右侧或原始文件里的信息意外带进来。
反过来也要防止把本库的结论外推过头。它是单中心、单设备、特定人群、特定季节的产物,得出的「不足以用于大规模筛查」是针对这一配置的结论,不等于「热成像在任何配置下都不行」。合理的写法是把它当作一条已被公开数据证伪的具体路线,而不是整个 modality 的终审判决。
7.5 它为何仍然有价值
它没有扩充、没有后续版本,版本停在 2021 年的 1.1,却持续被引用,原因有三。第一,金标准不可复制——再做一遍需要在疫情期间找到愿意配合的核酸检测人群。第二,它给出的是否定结论,而否定结论的保鲜期比正向结论长得多。第三,它把预处理流程连同脚本公开了,后来者可以拿它当标准化方法的评测台,而不只是当一份训练数据。
只要这三条还成立,它的价值就不会被更大的热成像库替代——因为后来者即使规模更大,也很难同时具备「核酸金标准」与「已被证伪」这两样东西。
§8 生态位与历史
8.1 历史沿革
本库的诞生方式很典型:不是为做数据集而采集,而是一次临床研究的副产品。研究团队的本职问题是「热视频能不能辅助新冠早期诊断」,数据采集是这个问题的前置条件;研究做完后,把数据整理成可复用形态捐给 PhysioNet,成本远低于从零发起一次数据工程。
这条路径决定了它的几个特征:协议围绕研究假设设计(屏气十秒、四个体位,都是为了让呼吸与体表温度在受控条件下暴露差异),样本量由招募能力而非工程目标决定,以及文档写作带论文风格而不是产品风格。理解这三点,就能理解它为什么既精致又粗糙——协议很讲究,工程细节(比如背景图的配对表)却留了口子。
8.2 与挑战赛的关系
要说清楚:它没有进入任何 PhysioNet 挑战赛。PhysioNet 的挑战赛体系主要集中在心电、重症与信号类任务,影像类挑战多由其他平台主办;本库在 PhysioNet 上的身份是独立的受限访问数据库,页面里没有任何挑战赛关联。这与一些心电库「因挑战赛而广为人知」的路径完全不同。
这个区别有实际后果。挑战赛出身的数据集通常自带标准划分、标准评测脚本与排行榜,研究者可以直接对齐;本库没有这些,划分口径要自己定,评测指标要自己选。好处是没有排行榜带来的分数通胀,坏处是不同论文之间的数字很难严格可比。
8.3 生态位:证伪基准而不是训练粮仓
| 角色 | 训练粮仓 | 证伪基准 |
|---|---|---|
| 典型用法 | 大规模训练、预训练 | 关联探索、方法学上限评测、标准化流程对照 |
| 需要的前提 | 样本多、标签细 | 金标准可靠、环境可控、结论可复核 |
| 失败模式 | 过拟合、标签噪声累积 | 样本太少导致结论不稳 |
| 代表 | 各类胸部影像大库 | 本库 |
本库坐在右边这一列。把它当粮仓用,会立刻遇到 59 例阳性的天花板;把它当证伪基准用,它的金标准与环境记录恰好是别人给不了的。两者不能互换。
8.4 谁在用它,用来做什么
从公开文献看,使用者集中在三类。第一类是原研究团队自身,用它发表了方法学论文与数据札记,完成了从采集、方法到数据发布的完整闭环。第二类是做热成像与红外医学应用的方法研究者,把它当作少数带金标准的公开队列,用于验证或反驳「热成像能筛查呼吸道感染」这一命题。第三类是做视频标准化与复原的工程研究者,看重的是它同时提供原始规格与标准化规格两份素材,外加全套预处理脚本。
第三类最容易被忽略,但可能是最实用的:大多数数据集只给最终产品,本库把中间过程也给了。对研究「标准化该怎么做」的人来说,这比多几百个样本更有价值。
§9 使用指引
9.1 三种角色的路径
| 角色 | 第一天 | 第一周 | 注意事项 |
|---|---|---|---|
| 医学影像算法研究者 | 读官方页面与数据札记,只拉 CSV 与脚本看清结构 | 建立按受试者划分的基线,与已发表 AUC 区间对照 | 先定标签列语义与划分口径(§5.5) |
| 热成像设备工程师 | 用 MP4 与 AVI 各跑一遍,比较标准化带来的差异 | 复现官方 MATLAB 脚本,量化自己的实现与官方的差距 | 注意背景图分辨率不同,只能做标量校正 |
| 公共卫生与流行病学研究者 | 读数据札记的 Limitations 与队列描述 | 用 CSV 做体温模式与症状、用药的关联分析 | 单中心、六周窗口、日期键加密,外推要谨慎 |
9.2 一条最短的可用流程
#-- 1. 先只取轻量材料:临床表、脚本、问卷模板
wget -r -N -c -np -A '*.csv,*.m,*.pdf,*.docx' \
https://physionet.org/files/covid-19-thermal/1.1/
#-- 2. 看临床表有几行几列,确认标签列的名字与取值
python3.11 -c "import pandas as pd; d=pd.read_csv('subject_description.csv'); print(d.shape); print(d.columns.tolist())"
#-- 3. 建立受试者清单,作为后续划分的分组键
python3.11 -c "
import pandas as pd
d = pd.read_csv('subject_description.csv')
d[['ID']].drop_duplicates().to_csv('subjects.txt', index=False)
print(len(open('subjects.txt').read().split()))
"
import pandas as pd
from sklearn.model_selection import GroupShuffleSplit
df = pd.read_csv('subject_description.csv')
gss = GroupShuffleSplit(n_splits=1, test_size=0.3, random_state=0)
tr, te = next(gss.split(df, groups=df['ID']))
print(len(tr), len(te), len(set(df.iloc[tr]['ID']) & set(df.iloc[te]['ID'])))
#-- 最后一行必须打印 0:训练集与测试集的受试者不能有交集
上面这段的最后一行是整个流程里最该被保留的检查。若它打印的不是 0,说明划分口径错了,后面所有数字都不可信。
9.3 引用方式
PhysioNet 的惯例是引用数据集本身加平台,本库另有数据札记可引。
| 引用对象 | 内容 |
|---|---|
| 数据集 | Tamez-Peña, J., Yala, A., Cardona, S., Ortiz-Lopez, R., & Trevino, V. (2021). Upper body thermal images and associated clinical data from a pilot cohort study of COVID-19 (version 1.1). PhysioNet. RRID:SCR_007345. https://doi.org/10.13026/wfr2-5973 |
| 数据札记 | Rojas-Zumbado, S. 等 (2024). 同名数据札记. BMC Research Notes, 17, 30. https://doi.org/10.1186/s13104-024-06688-w |
| 版本说明 | 版本 1.0 于 2021-06-21 发布,DOI 10.13026/pgk4-gx55;版本 1.1 于 2021-08-16 发布,DOI 10.13026/wfr2-5973;项目最新 DOI 为 10.13026/d9gh-4m08 |
| 平台 | PhysioNet 平台综述论文,按官方页面 Cite 按钮生成 |
| 许可义务 | 遵守 PhysioNet Restricted Health Data License 1.5.0 与 DUA 1.5.0;不二次分发,不尝试重新识别受试者 |
写论文时建议同时注明:使用的版本号、公开版本只有正面与背面两个体位、标签列的确切名称、以及划分是否按受试者。
§10 AI 使用声明
| 项目 | 声明 |
|---|---|
| 文本生成 | 本文由 AI 辅助撰写,编辑把关结构与事实 |
| 数字来源 | 规模、结构、边界三类数字来自 PhysioNet 官方页面、官方文件表与 2024 年 BMC Research Notes 数据札记 |
| 文件核验 | 受限访问目录在未认证状态下返回 403,文件清单转写自官方页面 Table 2,未逐文件枚举 |
| 不一致说明 | 官方摘要给出的字段计数与 Table 1 所列项数不完全一致,已在 §2.2 标注 |
| 论文信息 | 方法学论文与数据札记仅参考摘要与正文要点,未做全文逐句核对 |
| 未核验内容 | 受试者编号的位宽与格式;背景 JPG 的张数及其与受试者的配对表;subject_description.csv 的确切列名与取值域;各体位片段的实际帧数与文件大小;版本 1.0 与 1.1 之间数据内容的差异范围 |
| 图像 | 无配图;封面为生成式提示词,不含真实热图 |
| 免责 | 本文不构成临床建议;数据使用须遵守 PhysioNet 受限健康数据许可与使用协议 |
常见误读(避坑清单)
| 说法 | 实际 | 证据 |
|---|---|---|
| 「四个体位都能下载」 | 只有正面与背面公开,左右侧与原始 .IRS 不在仓库里 | 官方 Table 2 与患者隐私段写明未上传,理由是可能被用于重新识别 |
| 「热视频里有逐像素温度」 | 公开的是灰阶视频,灰阶标准化到 62 至 102 华氏度 | 数据札记的 Generating position files 段 |
| 「它是 CC0 开放数据」 | PhysioNet 上是受限访问,需认证加签署 DUA 1.5.0 | 官方 Access 区块与许可区块;figshare 页面仍标 CC0 但文件已迁走 |
| 「它能证明热成像可以筛新冠」 | 同源论文给出否定结论,除男性胸部视图外指标低于 60% | JBO 2022 方法学论文摘要 |
| 「采集前摘掉了口罩和眼镜,所以没有遮挡问题」 | 规程要求摘除,但影像质量观察列里仍列出 mask 等项 | 官方采集规程段与 Data Quality Issues 段并存 |
| 「可以做像素级分割」 | 无掩码、无边界框、无关键点 | 官方标注层级只到受试者级 PCR 结果 |
| 「背景热图能直接和视频帧相减」 | 背景图 384×288,视频 1024×768 | 官方 Table 2 给出的两种分辨率 |
| 「252 人就是 252 个训练样本,随便切」 | 同一人的正背两片高度相关,随机切分会泄漏 | 单人一次采集的设计;官方数据札记的 Limitations |
| 「阳性率是 59 除以 252」 | 另有 1 例未报告,分母处理需显式声明 | 数据札记写明 59 阳性、192 阴性、1 未报告 |
| 「采集都严格在 5 帧/秒」 | 官方用词是「mostly at five frames per second」,高于 5 帧的片段被降采样 | 官方技术段落;数据札记的 Corrections 段 |
| 「官方页面有技术验证章节」 | 页面引用了该章节,但正文里并没有这一节 | 官方页面目录只有摘要、背景、方法、数据描述、使用说明等 |
| 「它可以代表一般人群」 | 单中心、六周、工作时段、性别不均衡 | 数据札记的 Limitations 段 |
FAQ
Q1:它到底有多少受试者?公开能拿到多少视频片段?
252 名受试者,每人在一次采集里完成四个体位的十秒屏气。但公开可得的只有正面与背面两个体位的片段,左侧与右侧以及相机原始 .IRS 文件都没有上传,理由是这些材料可能被用于重新识别受试者。所以「252 人乘四」这个乘法在公开版本上不成立,实际可用的是 252 人乘二,且每个体位同时存在未标准化 MP4 与标准化 AVI 两份。
Q2:为什么热视频里没有温度值,只有灰阶?
去标识与体积的权衡。相机原始 .IRS 文件含逐像素的完整辐射信息,也正因为信息完整,配合时间与体貌细节可能被用于重新识别,官方因此不公开。公开的灰度视频把灰阶标准化到 62 至 102 华氏度之间,保留了相对分布,代价是失去了绝对温度。要做绝对温度分析,只能通过完整数据申请走保密协议与提案审核。
Q3:它能不能用来训练一个新冠筛查模型?
能做,但不该指望它给出好看的性能。阳性只有 59 例,样本量决定了性能估计的置信区间会很宽;而基于同源数据发表的方法学论文给出的是否定结论,AUC 在 0.58 到 0.64 之间。更合适的用法是把它当证伪基准与关联探索材料:验证某个思路是否比已有文献更好,或者研究体温模式与症状、用药的关系。
Q4:训练集和测试集该怎么划分?
按受试者编号分组,绝不按片段随机切。同一受试者的正面与背面来自同一次采集,共享设备状态、室温、当日体温与呼吸模式;把它们分到两侧,模型只要记住这个人就能拿分。具体做法是用分组切分,并显式检查两侧编号集合的交集为空。样本只有 252 人时,还要固定随机种子,否则不同种子之间的波动可能盖过方法差异。
Q5:figshare 上那份和 PhysioNet 上这份是什么关系?
figshare 上的 ThermalCOVID19 是早期版本,元数据于 2021 年 1 月 29 日首次上线、5 月 28 日正式发布,许可标为 CC0,但视频文件已迁走,页面现在写明文件不公开、数据迁往 PhysioNet。因此它只能作为元数据与历史记录参考,不能当作开放数据源。真正的数据在 PhysioNet 上,且是受限访问:需要注册、完成认证并签署 DUA 1.5.0。
术语表
| 术语 | 解释 |
|---|---|
| 红外热成像 | 接收物体自身发出的红外辐射并换算成温度分布的技术,无需外部照明、无电离辐射 |
| 热视频 | 热像仪以固定帧率连续记录的热辐射序列,本库约为 5 帧/秒 |
| 微测辐射热计 | 非制冷红外探测器的一种,TI-128 采用该类型焦平面阵列 |
| NETD | 噪声等效温差,衡量热像仪能分辨的最小温度差,TI-128 标称低于 0.05 ℃ |
| 视场角 | 热像仪一次能覆盖的角度范围,TI-128 为 28.7°×21.6° |
| 灰阶标准化 | 把温度区间线性映射到灰度区间,本库映射到 62 至 102 华氏度 |
| 色标条 | 视频边缘显示灰度与温度对应关系的图条,标准化 AVI 中被裁掉 |
| 背景热图 | 采集前后拍摄的无受试者热图,用于记录房间温度变化 |
| 屏气协议 | 受试者深吸气后屏气十秒,用于让呼吸引起的体表温度变化在受控条件下显现 |
| 体位片段 | 从连续视频中按前、左、后、右四个姿态人工切出的片段 |
| 去模糊 | 对失焦视频做的复原处理,官方在生成 AVI 时按需执行 |
| PCR | 聚合酶链式反应,本库用它作为 SARS-CoV-2 感染的实验室金标准 |
| 病毒载量 | 由内参曲线估算的病毒核酸量,为估算值而非绝对定量 |
| 去标识化 | 移除或加密可识别信息的过程,本库对日期键做了加密 |
| DUA | 数据使用协议,本库为 PhysioNet Restricted Health Data Use Agreement 1.5.0 |
| Credentialed access | PhysioNet 的认证访问机制,需完成使用伦理培训后方可申请受限数据 |
| 受试者级划分 | 同一受试者的所有材料只进训练或只进测试 |
| 数据札记 | 只描述数据集本身、不含新分析结果的论文类型,本库 2024 年发表于 BMC Research Notes |
附录 A:核心数字核对表
| 数字 | 出处 |
|---|---|
| 252 名受试者 | PhysioNet 官方页面摘要与方法段;2024 年数据札记 |
| 阳性 59、阴性 192、未报告 1 | 2024 年 BMC Research Notes 数据札记 |
| 招募期 2020-07-22 至 2020-09-04 | PhysioNet 官方页面研究人群与设计段 |
| 采集通常 9:00 至 15:00 | PhysioNet 官方页面研究人群与设计段 |
| 入组下限 18 周岁 | PhysioNet 官方页面;数据札记 |
| 屏气十秒 | PhysioNet 官方页面热像采集段;数据札记 |
| 四个体位(正、左、后、右) | PhysioNet 官方页面热像采集段 |
| 约 5 帧/秒 | PhysioNet 官方页面(用词为 mostly at five frames per second);数据札记 |
| MP4 分辨率 1024×768 | PhysioNet 官方页面 Table 2 |
| 背景 JPG 分辨率 384×288 | PhysioNet 官方页面 Table 2 |
| 平均视频时长 81 秒(标准差 19) | 2024 年数据札记 |
| 各体位时长均值 13.7/12.5/12.4/12.1 秒 | 2024 年数据札记 |
| 灰阶标准化区间 62 至 102 华氏度 | 2024 年数据札记 |
| Omega TI-128 热像仪、Omega TI Analyzer 4.1.8.6875 | PhysioNet 官方页面热像技术段 |
| TI-128 红外分辨率 640×480,超分辨率可至 1024×768 或 1280×960 | Omega Engineering 产品页 |
| TI-128 测量精度 ±2 ℃ 或 ±2%(环境 10 至 35 ℃) | Omega 产品页;数据札记 Limitations 段 |
| TI-128 热灵敏度低于 0.05 ℃(30 ℃ 时) | Omega 产品页 |
| 采集过程中温度波动低于 1.75 ℃(阴性)与 1.4 ℃(阳性) | 2024 年数据札记 Limitations 段 |
| Welch-Allyn 71WT 监护仪 | PhysioNet 官方页面临床与人口统计段 |
| TaqMan 2019-nCoV Assay Kit v1 与 v2 | PhysioNet 官方页面 PCR 诊断段 |
| 伦理审批号 P000402-TERMAL-COVID 19-CI-CR001 | PhysioNet 官方页面伦理段 |
| 版本 1.0 于 2021-06-21,DOI 10.13026/pgk4-gx55 | PhysioNet 官方页面版本列表 |
| 版本 1.1 于 2021-08-16,DOI 10.13026/wfr2-5973 | PhysioNet 官方页面版本列表 |
| 项目最新 DOI 10.13026/d9gh-4m08 | PhysioNet 官方页面 Discovery 区块 |
| 许可 PhysioNet Restricted Health Data License 1.5.0 | PhysioNet 官方页面许可区块 |
| 男性模型 AUC 0.605、女性模型 0.577 | JBO 2022 方法学论文摘要 |
| figshare 版本 DOI 10.6084/m9.figshare.13296887,CC0 | figshare 页面 |
附录 B:数字的来源分层
第一层:官方页面与数据札记。 受试者数、PCR 构成、招募期、设备型号、分辨率、许可与版本日期。这些数字直接来自 PhysioNet 项目页的摘要、方法、文件表,以及 2024 年 BMC Research Notes 的数据札记。
第二层:厂商规格。 TI-128 的红外分辨率、视场角、热灵敏度与测量精度来自 Omega Engineering 的产品页与数据手册。厂商标称值不等于现场测量值,引用时应注明是标称。
第三层:论文摘要。 方法学论文的 AUC 与置信区间来自摘要。摘要只能支撑「作者报告了什么」,不能支撑「方法在其他数据上会怎样」。
第四层:未核实。 受试者编号的格式与位宽、背景图的张数、CSV 的确切列名、各片段的帧数与体积、两版之间的内容差异。这些需要登录后逐文件枚举,超出本篇的范围;正文中凡是涉及的地方都只做定性表述或标注为未核验。
附录 C:参考文献
| 编号 | 文献 | 链接 | 用途 |
|---|---|---|---|
| 1 | 数据集官方页(版本 1.1) | https://physionet.org/content/covid-19-thermal/1.1/ | 全部规模、结构、边界与许可数据 |
| 2 | 数据集文件目录(受限) | https://physionet.org/files/covid-19-thermal/1.1/ | 目录结构与下载面 |
| 3 | 2024 年数据札记,BMC Research Notes 17:30 | https://doi.org/10.1186/s13104-024-06688-w | PCR 构成、时长统计、局限性 |
| 4 | 方法学论文,JBO 27(5):056003 | https://doi.org/10.1117/1.JBO.27.5.056003 | 外部验证与否定性结论 |
| 5 | figshare 早期版本 ThermalCOVID19 | https://doi.org/10.6084/m9.figshare.13296887 | 版本沿革与许可变迁 |
| 6 | PhysioNet 平台综述 | https://doi.org/10.1038/s44360-026-00096-z | 托管模式与引用规范 |
| 7 | Omega TI-128 产品页 | https://www.omega.com/en-us/test-inspection/thermal-imaging/ti-120-series/p/TI-128 | 设备标称规格 |
附录 D:如果只记五件事
| 序号 | 记住什么 | 为什么 |
|---|---|---|
| 1 | 252 人、阳性 59 例、公开只有正面与背面两个体位 | 这三个数字定义了它能做什么与不能做什么 |
| 2 | 金标准是实验室 PCR,不是影像判读 | 这是它最大的资产,也是唯一不可替代的部分 |
| 3 | 公开文件是灰阶,不是温度 | 绝对温度在未公开的 .IRS 里,且相机误差与信号幅度同量级 |
| 4 | 按受试者划分,不按片段划分 | 同一人的正背两片高度相关,随机切分必然虚高 |
| 5 | 已有同源论文的结论是否定的 | 它更适合当证伪基准,而不是筛查产品的性能背书 |
编辑说明
本文的核验时间为 2026 年 10 月 28 日。核对方式为直接访问 PhysioNet 项目页(版本 1.1 与 1.0)、figshare 早期版本、2024 年 BMC Research Notes 数据札记与厂商产品页,逐一确认受试者数、PCR 构成、招募期、设备型号、分辨率、许可与版本日期。受限目录在未认证状态下返回 403,因此文件清单转写自官方页面 Table 2,未做逐文件枚举;受试者编号格式、背景图张数与 CSV 确切列名属于未核验内容,已在 §10 声明。官方摘要给出的字段计数与 Table 1 所列项数不完全一致,这一点在 §2.2 逐行标注。方法学论文只参考了摘要与结论,未做全文逐句核对。
相关数据集导航
以下为站内 AI-Ready 数据集百科中与本词条共享多个主题标签的相关数据集,按相关度降序排列:
- dmr-ir — 共享标签:医学影像 / 红外热成像 / 疾病筛查
- dbt-tu-ju — 共享标签:医学影像 / 红外热成像 / 标注数据
- covid-19-radiography — 共享标签:医学影像 / 呼吸系统疾病 / 传染病
- covidx-cxr — 共享标签:医学影像 / 呼吸系统疾病 / 传染病
- bimcv-covid — 共享标签:医学影像 / 呼吸系统疾病 / 传染病
- sar-covid — 共享标签:医学影像 / 呼吸系统疾病 / 传染病
- brixia-peru — 共享标签:医学影像 / 呼吸系统疾病 / 疫情期采集
- covid-ct-lung — 共享标签:医学影像 / 呼吸系统疾病 / 像素级标注
- covid-ct — 共享标签:医学影像 / 呼吸系统疾病 / 传染病
- covid-19-sounds — 共享标签:低成本远程筛查 / 传染病
- rsna-pneumonia — 共享标签:医学影像 / 呼吸系统疾病
导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。

