news 2026/8/18 15:33:15

Deep-TEMPEST 合成数据生成教程:用 folder_simulation.py 模拟 HDMI 电磁泄漏捕获

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Deep-TEMPEST 合成数据生成教程:用 folder_simulation.py 模拟 HDMI 电磁泄漏捕获

Deep-TEMPEST 合成数据生成教程:用 folder_simulation.py 模拟 HDMI 电磁泄漏捕获

【免费下载链接】deep-tempestRestoration for TEMPEST images using deep-learning项目地址: https://gitcode.com/gh_mirrors/de/deep-tempest

Deep-TEMPEST 是一个基于深度学习的图像复原开源项目,专门用于修复从 HDMI 电磁泄漏中捕获的 TEMPEST 图像。本教程将手把手教你使用项目自带的folder_simulation.py 合成数据生成脚本,在本地批量模拟 HDMI 电磁泄漏捕获过程,为训练 DRUNet 复原模型准备高质量数据集。

什么是 Deep-TEMPEST 合成数据生成

TEMPEST(又称 Van Eck Phreaking)是一种通过接收显示器线缆泄漏的电磁信号来"隔空窥屏"的技术。Deep-TEMPEST 在经典工具 gr-tempest 的基础上引入深度学习,将模糊难辨的捕获图像修复成可读的屏幕内容。

但深度学习模型需要大量"原始图 + 退化捕获图"配对数据,真实电磁捕获成本高、耗时久。为此,项目提供了folder_simulation.py 合成数据生成工具:只需一个普通图片文件夹,就能在本地模拟完整的 HDMI 电磁泄漏捕获链路,自动生成大量配对数据。

为什么需要模拟 HDMI 电磁泄漏捕获

  • 成本极低:无需天线、SDR 接收机或屏蔽实验室,普通电脑即可完成。
  • 批量高效:对文件夹内所有图片自动处理,且已生成的图片会被自动跳过,支持增量续跑。
  • 参数可控:可自由调整帧率、SDR 采样率、像素谐波、频率/相位误差、噪声强度等信道参数。
  • 配对天然:原始图与模拟捕获图一一对应,正是监督学习最需要的数据形态。

环境准备:最快配置方法

首先克隆仓库:

git clone https://gitcode.com/gh_mirrors/de/deep-tempest

然后安装 Python 依赖(numpy、scipy、scikit-image、PIL 等),推荐使用项目根目录的 requirements.txt 或 tempest_conda.yml 创建环境。脚本核心逻辑位于 end-to-end/folder_simulation.py,信道仿真依赖 end-to-end/utils/DTutils.py 中的 TMDS 编码与串行化函数。

配置模拟参数:编辑 tempest_simulation.json

所有模拟参数都集中在 end-to-end/options/tempest_simulation.json 中,只需修改两个路径和若干信道参数:

{ "paths": { "folder_original_images": "path/to/original_images", "folder_simulated_images": "path/to/simulated_images" }, "options": { "blanking": true, "frames_per_second": 60, "sdr_rate": 50e6, "interpolator": 10, "differential_signaling": true, "random": { "harmonics": [3], "sigma": null, "freq_error": [0, 15], "phase_error": [-1, 1] } } }
参数含义新手建议
folder_original_images原始图片输入目录放入任意 PNG/JPG 图片
folder_simulated_images模拟捕获图输出目录会自动创建
blanking是否模拟行/场消隐开启时图片需符合 VESA 分辨率
frames_per_second视频帧率默认 60 即可
sdr_rateSDR 采样率默认 50 MHz
interpolator模拟脉冲内插倍数越大越接近真实模拟信号
differential_signaling差分信号模拟HDMI 实际使用差分,建议开启
harmonics像素谐波列表常用第 3 谐波(324 MHz)
sigma高斯噪声标准差可设[a, b]随机取值,null表示无噪声
freq_error/phase_error频率/相位误差范围模拟接收机失准,增强数据多样性

一键运行 folder_simulation.py 生成捕获图

end-to-end/目录下执行:

python folder_simulation.py

脚本会自动完成以下 HDMI 电磁泄漏捕获模拟流程:

  1. 读取图片:遍历输入文件夹中所有 png、jpg、jpeg、tif、bmp 等格式图片。
  2. TMDS 编码:将 RGB 像素按 HDMI 的 TMDS 协议编码(含消隐处理)。
  3. 位串行化:将编码后的比特流串行化,叠加三通道信号。
  4. 信道仿真:按像素谐波频率进行 AM 调制,叠加频率/相位误差与高斯噪声。
  5. SDR 采样:用设定的采样率重采样,模拟软件无线电接收。
  6. 保存结果:将信号实部与虚部归一化后保存为图像,并写入logfiles/日志。

生成的数据如何用于 DRUNet 训练

合成数据生成完成后,原始图片作为高分辨率参考(H),模拟捕获图作为退化输入(L),即可交给 DRUNet 训练:

  1. 编辑 end-to-end/options/train_drunet.json,将datasets.train.dataset_type设为"drunet"(合成数据模式;若用真实捕获数据则设为"drunet_finetune")。
  2. dataroot_H指向原始图片目录,dataroot_L指向模拟捕获图目录。
  3. 运行训练脚本:
python main_train_drunet.py

![HDMI 电磁泄漏模拟捕获前后对比示例](https://raw.gitcode.com/gh_mirrors/de/deep-tempest/raw/096081cc8efeee393561a753b7b5012d130c5757/examples/Screenshot from 2023-08-29 18-26-35-gr-tempest_screenshot_05-09-2023_21_19_15.png?utm_source=gitcode_repo_files)

训练完成后,可用 main_test_drunet.py 进行推理,用 tempest_evaluation.py 评估复原质量。

常见问题与排错技巧

  • 提示找不到输入文件夹:检查 JSON 中folder_original_images路径是否正确、是否存在。
  • blanking 开启后图片变形:开启消隐模拟时,图片需符合 VESA 标准分辨率。
  • 输出图看起来是彩色条纹:这是模拟捕获图的正常形态(实部与虚部分别映射到两个通道),正是 DRUNet 要学习复原的退化样式。
  • 想批量生成多样化数据:适当增大freq_errorphase_error范围,或让sigma随机取值,可显著提升数据多样性。

结语

通过 folder_simulation.py 合成数据生成脚本,你可以零硬件成本地模拟 HDMI 电磁泄漏捕获,为 Deep-TEMPEST 的图像复原研究源源不断地提供训练数据。从配置 tempest_simulation.json 到运行脚本、再到训练 DRUNet,整个链路清晰且完全可复现。现在就动手生成你的第一批合成捕获数据吧!

【免费下载链接】deep-tempestRestoration for TEMPEST images using deep-learning项目地址: https://gitcode.com/gh_mirrors/de/deep-tempest

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

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

RayIoU深度解读:OccNet为何用射线评估3D占用?技术报告精读

RayIoU深度解读:OccNet为何用射线评估3D占用?技术报告精读 【免费下载链接】OccNet [ICCV 2023] OccNet: Scene as Occupancy 项目地址: https://gitcode.com/gh_mirrors/oc/OccNet 在3D占用预测(3D Occupancy Prediction)…

作者头像 李华