<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Information Literacy on kenji.blog</title><link>http://kenji.blog/zh-cn/tags/information-literacy/</link><description>Recent content in Information Literacy on kenji.blog</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><copyright>kenjinote</copyright><lastBuildDate>Sat, 12 Sep 2026 12:00:00 +0900</lastBuildDate><atom:link href="http://kenji.blog/zh-cn/tags/information-literacy/index.xml" rel="self" type="application/rss+xml"/><item><title>深度伪造与信息素养：如何从技术层面识破假新闻</title><link>http://kenji.blog/zh-cn/p/deepfake-info-literacy/</link><pubDate>Sat, 12 Sep 2026 12:00:00 +0900</pubDate><guid>http://kenji.blog/zh-cn/p/deepfake-info-literacy/</guid><description>&lt;img src="http://kenji.blog/p/deepfake-info-literacy/img/eyecatch.jpg" alt="Featured image of post 深度伪造与信息素养：如何从技术层面识破假新闻" />&lt;h1 id="引言现实与虚构边界消融的时代">引言：现实与虚构边界消融的时代
&lt;/h1>&lt;p>进入2020年代，生成式AI（Generative AI）以惊人的速度演进。从文章、语音、图像到视频，仅需短短几秒，即可生成与人类创作难以区分的内容。这一技术飞跃在为创意领域带来巨大福祉的同时，也催生了被称为“深度伪造（Deepfake）”的精巧伪造内容泛滥这一严重的社会威胁。&lt;/p>
&lt;p>深度伪造正以多种形式威胁着社会，包括政客的虚假演说、冒充企业CEO的诈骗（BEC诈骗的进化版），以及损害名人名誉的色情内容等。特别是在选举期间，深度伪造引发的假新闻扩散，甚至发展成了动摇民主制度根基的事态。&lt;/p>
&lt;p>在这样的时代，我们亟需更新自己的“信息素养”。“眼见为实”的常识已不再适用。本文将从深度伪造是如何生成的技术背景讲起，结合公式与代码，极具深度地为您解析用于“从技术上”识破它的最前沿数字取证手段，以及整个社会抗击虚假信息的框架（如C2PA等）。&lt;/p>
&lt;hr>
&lt;h1 id="1-支撑深度伪造的生成式ai机制">1. 支撑深度伪造的生成式AI机制
&lt;/h1>&lt;p>要理解深度伪造，首先需要了解其底层生成式AI的原理。目前，用于生成高精度图像和视频的代表性架构主要有“GAN（生成对抗网络，Generative Adversarial Networks）”和“扩散模型（Diffusion Models）”两种。&lt;/p>
&lt;h2 id="11-生成对抗网络gan">1.1 生成对抗网络（GAN）
&lt;/h2>&lt;p>由Ian Goodfellow等人在2014年提出的GAN，是深度伪造技术的推手。GAN由两个神经网络扮演“造假者”和“警察”的角色，通过相互竞争（对抗性训练），生成极为逼真的数据。&lt;/p>
&lt;ul>
&lt;li>&lt;strong>生成器（Generator, $G$）&lt;/strong>：接收随机噪声（潜在变量 $z$）作为输入，生成以假乱真的数据（如图像等）。&lt;/li>
&lt;li>&lt;strong>判别器（Discriminator, $D$）&lt;/strong>：判断输入的数据是来自真实数据集的“真品（Real）”，还是生成器制造的“赝品（Fake）”。&lt;/li>
&lt;/ul>
&lt;p>这两个网络会不断推进训练，以优化被公式化为以下极小极大（Minimax）博弈的损失函数：&lt;/p>
$$
\min_G \max_D V(D, G) = \mathbb{E}_{x \sim p_{data}(x)}[\log D(x)] + \mathbb{E}_{z \sim p_{z}(z)}[\log(1 - D(G(z)))]
$$&lt;p>其中，$x$ 为真实数据，$z$ 为潜在变量（噪声）。判别器 $D$ 试图最大化该公式（准确分辨真伪），而生成器 $G$ 试图最小化它（欺骗判别器）。当这种训练达到均衡状态（纳什均衡）时，生成器就能生成真假难辨的数据。&lt;/p>
&lt;pre class="mermaid">
flowchart LR
Z[&amp;#34;潜在变量 (Latent Vector Z)&amp;#34;] --&amp;gt; G[&amp;#34;生成器 (Generator)&amp;#34;]
G --&amp;gt; F[&amp;#34;生成图像 (Fake Image)&amp;#34;]
R[&amp;#34;真实图像 (Real Image)&amp;#34;] --&amp;gt; D[&amp;#34;判别器 (Discriminator)&amp;#34;]
F --&amp;gt; D
D --&amp;gt; O[&amp;#34;真伪判定 (Real/Fake)&amp;#34;]
O -.-&amp;gt;|&amp;#34;Loss Feedback&amp;#34;| G
O -.-&amp;gt;|&amp;#34;Loss Feedback&amp;#34;| D
&lt;/pre>
&lt;h2 id="12-扩散模型diffusion-models">1.2 扩散模型（Diffusion Models）
&lt;/h2>&lt;p>近年来，在画质和稳定性上超越GAN，并成为Midjourney和Stable Diffusion底层技术的，便是“扩散模型”。扩散模型由逐步向数据中添加噪声的“前向扩散过程”和从噪声中恢复原始数据的“逆向扩散过程”组成。&lt;/p>
&lt;p>&lt;strong>前向扩散过程（Forward Process）&lt;/strong>：针对清晰图像 $x_0$，在每个时间步 $t$ 中加入高斯噪声。该过程作为马尔可夫链，用以下公式表示：&lt;/p>
$$
q(x_t | x_{t-1}) = \mathcal{N}(x_t; \sqrt{1 - \beta_t} x_{t-1}, \beta_t \mathbf{I})
$$&lt;p>这里 $\beta_t$ 是控制噪声方差的调度参数。经过足够的步骤 $T$ 后，$x_T$ 将变成完全的随机噪声。&lt;/p>
&lt;p>&lt;strong>逆向扩散过程（Reverse Process）&lt;/strong>：神经网络（通常是U-Net架构）学习从噪声图像 $x_t$ 中预测噪声，从而恢复出前一步 $x_{t-1}$。通过将这一过程与条件控制（如文本提示词）相结合，就能从零（噪声）生成任意图像。&lt;/p>
&lt;hr>
&lt;h1 id="2-数字取证寻找生成物痕迹的技术">2. 数字取证：寻找生成物痕迹的技术
&lt;/h1>&lt;p>无论生成模型多么高级，AI生成的数据中必定会残留人类肉眼无法察觉的“数学/统计学痕迹（伪影，Artifacts）”。检测技术（Deepfake Detector）正是通过各种手段来捕捉这些微小的痕迹。&lt;/p>
&lt;h2 id="21-频域分析与dct离散余弦变换">2.1 频域分析与DCT（离散余弦变换）
&lt;/h2>&lt;p>人类的眼睛对图像色彩和亮度的空间变化（空间域）很敏感，但对频率的变化（频域）却很迟钝。GAN或扩散模型生成的图像，即使乍看之下完美无瑕，但在上采样（从低分辨率放大到高分辨率）的过程中，会产生特有的频率特征（如棋盘格伪影等）。&lt;/p>
&lt;p>为了检测这一点，通常使用的是&lt;strong>离散余弦变换（Discrete Cosine Transform, DCT）&lt;/strong>。DCT将图像表示为不同频率余弦波的叠加。二维DCT的公式如下：&lt;/p>
$$
X_{k_1, k_2} = \sum_{n_1=0}^{N_1-1} \sum_{n_2=0}^{N_2-1} x_{n_1, n_2} \cos\left[\frac{\pi}{N_1}\left(n_1 + \frac{1}{2}\right)k_1\right] \cos\left[\frac{\pi}{N_2}\left(n_2 + \frac{1}{2}\right)k_2\right]
$$&lt;p>与自然图像相比，生成图像往往在**高频分量（细微的噪声或急剧的边缘变化）**上具有异常的能量分布。以下Python代码展示了如何使用DCT从图像中提取高频分量能量的简单示例：&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;span class="lnt">26
&lt;/span>&lt;span class="lnt">27
&lt;/span>&lt;span class="lnt">28
&lt;/span>&lt;span class="lnt">29
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">cv2&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">numpy&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="nn">np&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">scipy.fftpack&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">def&lt;/span> &lt;span class="nf">extract_high_frequency_features&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">image_path&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># 读取图像并转换为灰度图&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">img&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">cv2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">imread&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">image_path&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">cv2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">IMREAD_GRAYSCALE&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="n">img&lt;/span> &lt;span class="ow">is&lt;/span> &lt;span class="kc">None&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">raise&lt;/span> &lt;span class="ne">ValueError&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;Image not found&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># 应用二维离散余弦变换（DCT）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># 首先对行应用一维DCT，然后对列应用一维DCT&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">dct_result&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">scipy&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">fftpack&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">dct&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">scipy&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">fftpack&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">dct&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">img&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">T&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">norm&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s1">&amp;#39;ortho&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">T&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">norm&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s1">&amp;#39;ortho&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># 提取高频分量（掩蔽左上角的低频分量使其为零）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">rows&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">cols&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">dct_result&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">shape&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">mask&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">np&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">ones&lt;/span>&lt;span class="p">((&lt;/span>&lt;span class="n">rows&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">cols&lt;/span>&lt;span class="p">))&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># 掩蔽低频区域（整体的10%）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">mask&lt;/span>&lt;span class="p">[:&lt;/span>&lt;span class="nb">int&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">rows&lt;/span>&lt;span class="o">*&lt;/span>&lt;span class="mf">0.1&lt;/span>&lt;span class="p">),&lt;/span> &lt;span class="p">:&lt;/span>&lt;span class="nb">int&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">cols&lt;/span>&lt;span class="o">*&lt;/span>&lt;span class="mf">0.1&lt;/span>&lt;span class="p">)]&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">0&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">high_freq_features&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">dct_result&lt;/span> &lt;span class="o">*&lt;/span> &lt;span class="n">mask&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># 计算高频区域的能量大小&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">energy&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">np&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">sum&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">np&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">abs&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">high_freq_features&lt;/span>&lt;span class="p">))&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="n">energy&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 将自然图像与生成图像进行比较时，往往会在energy值上产生统计学上的显著差异&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>这种频域上的不自然，是因为AI虽然能学到“像素级别的局部一致性”，但却难以完全模仿“图像整体的全局频率特性”。&lt;/p>
&lt;hr>
&lt;h1 id="3-生物信号检测通过rppg确认生命的跳动">3. 生物信号检测：通过rPPG确认“生命的跳动”
&lt;/h1>&lt;p>除了图像（静态图片）的检测技术，在视频深度伪造检测领域，一种具有突破性意义的方法是&lt;strong>提取生物信号（Biological Signals）&lt;/strong>。&lt;/p>
&lt;p>只要人还活着，血液就会随着心脏的跳动在体内循环。因为血液中的血红蛋白能很好地吸收特定波长（特别是绿光，约530nm），所以脸部皮肤的颜色会随着心跳发生微小变化（人类肉眼无法察觉的级别）。利用这一原理，从普通RGB摄像头的画面中非接触式地估算心率的技术，被称为&lt;strong>rPPG（远程光电容积脉搏波描记法，remote Photoplethysmography）&lt;/strong>。&lt;/p>
&lt;p>基于光的吸收与反射的rPPG基本模型，可通过比尔-朗伯定律表示如下：&lt;/p>
$$
I(t) = I_0(t) e^{-\left( \mu_{dc} + \mu_{ac}(t) \right) d}
$$&lt;p>其中，$I(t)$ 为摄像头观测到的光强，$I_0(t)$ 为光源强度，$\mu_{dc}$ 为静态组织的吸光系数，$\mu_{ac}(t)$ 为血流波动（心跳）引起的动态吸光系数，$d$ 为光程长。&lt;/p>
&lt;p>深度伪造视频（例如进行换脸的FaceSwap，或将唇部动作与语音同步的Lip-sync），虽然追求逐帧的视觉逼真度，但&lt;strong>无法再现沿时间轴的微小血流变化（心跳信号）。&lt;/strong> 因此，如果试图从深度伪造视频中提取rPPG信号，会得到充满噪声的、不自然的信号，这与自然人类的心跳率（通常在60〜100 bpm范围内的规律性周期）截然不同。&lt;/p>
&lt;pre class="mermaid">
flowchart LR
V[&amp;#34;输入视频 (Video Stream)&amp;#34;] --&amp;gt; F[&amp;#34;人脸检测与追踪 (Face Tracking)&amp;#34;]
F --&amp;gt; R[&amp;#34;感兴趣区域提取 (ROI Extraction)&amp;#34;]
R --&amp;gt; S[&amp;#34;空间池化 (Spatial Pooling)&amp;#34;]
S --&amp;gt; B[&amp;#34;带通滤波 (Bandpass Filter)&amp;#34;]
B --&amp;gt; H[&amp;#34;心跳信号提取 (Heartbeat Signal)&amp;#34;]
H --&amp;gt; A[&amp;#34;真伪判定与异常检测 (Fake/Real Classification)&amp;#34;]
&lt;/pre>
&lt;p>以下是使用Python从视频中提取rPPG信号管线的概念性实现示例：&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;span class="lnt">26
&lt;/span>&lt;span class="lnt">27
&lt;/span>&lt;span class="lnt">28
&lt;/span>&lt;span class="lnt">29
&lt;/span>&lt;span class="lnt">30
&lt;/span>&lt;span class="lnt">31
&lt;/span>&lt;span class="lnt">32
&lt;/span>&lt;span class="lnt">33
&lt;/span>&lt;span class="lnt">34
&lt;/span>&lt;span class="lnt">35
&lt;/span>&lt;span class="lnt">36
&lt;/span>&lt;span class="lnt">37
&lt;/span>&lt;span class="lnt">38
&lt;/span>&lt;span class="lnt">39
&lt;/span>&lt;span class="lnt">40
&lt;/span>&lt;span class="lnt">41
&lt;/span>&lt;span class="lnt">42
&lt;/span>&lt;span class="lnt">43
&lt;/span>&lt;span class="lnt">44
&lt;/span>&lt;span class="lnt">45
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">cv2&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">numpy&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="nn">np&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">scipy&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">signal&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">def&lt;/span> &lt;span class="nf">extract_rppg_signal&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">video_path&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">cap&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">cv2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">VideoCapture&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">video_path&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">green_signals&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">[]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">while&lt;/span> &lt;span class="n">cap&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">isOpened&lt;/span>&lt;span class="p">():&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">ret&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">frame&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">cap&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">read&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="ow">not&lt;/span> &lt;span class="n">ret&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">break&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># 1. 人脸检测与ROI（感兴趣区域：例如额头或脸颊）的提取&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># roi = detect_face_and_extract_roi(frame)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># 为简化起见，这里将画面的中心部分作为ROI&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">h&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">w&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">frame&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">shape&lt;/span>&lt;span class="p">[:&lt;/span>&lt;span class="mi">2&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">roi&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">frame&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="nb">int&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">h&lt;/span>&lt;span class="o">*&lt;/span>&lt;span class="mf">0.3&lt;/span>&lt;span class="p">):&lt;/span>&lt;span class="nb">int&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">h&lt;/span>&lt;span class="o">*&lt;/span>&lt;span class="mf">0.6&lt;/span>&lt;span class="p">),&lt;/span> &lt;span class="nb">int&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">w&lt;/span>&lt;span class="o">*&lt;/span>&lt;span class="mf">0.4&lt;/span>&lt;span class="p">):&lt;/span>&lt;span class="nb">int&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">w&lt;/span>&lt;span class="o">*&lt;/span>&lt;span class="mf">0.6&lt;/span>&lt;span class="p">)]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># 2. 从RGB空间提取Green（绿）通道&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># 因为血液中的血红蛋白最能吸收绿光&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">g_channel&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">roi&lt;/span>&lt;span class="p">[:,&lt;/span> &lt;span class="p">:,&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># 3. 空间池化（计算平均值）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">mean_g&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">np&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">mean&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">g_channel&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">green_signals&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">append&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">mean_g&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">cap&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">release&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="nb">len&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">green_signals&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="kc">None&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># 4. 通过带通滤波器去除噪声&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># 提取人类心跳频率频段（例如：0.7Hz〜2.5Hz = 42〜150 bpm）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">fps&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mf">30.0&lt;/span> &lt;span class="c1"># 假设的帧率&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">nyquist&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mf">0.5&lt;/span> &lt;span class="o">*&lt;/span> &lt;span class="n">fps&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">low&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mf">0.7&lt;/span> &lt;span class="o">/&lt;/span> &lt;span class="n">nyquist&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">high&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mf">2.5&lt;/span> &lt;span class="o">/&lt;/span> &lt;span class="n">nyquist&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">b&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">a&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">signal&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">butter&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">3&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">low&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">high&lt;/span>&lt;span class="p">],&lt;/span> &lt;span class="n">btype&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s1">&amp;#39;bandpass&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">filtered_signal&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">signal&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">filtfilt&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">b&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">a&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">green_signals&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="n">filtered_signal&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 分析提取出的filtered_signal的频谱，&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 如果不存在明确的峰值（心跳），则判定为深度伪造的可能性很高。&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;hr>
&lt;h1 id="4-无止境的猫鼠游戏对抗性训练与规避技术">4. 无止境的“猫鼠游戏”：对抗性训练与规避技术
&lt;/h1>&lt;p>如前所述，目前存在频率分析和生物信号（rPPG）等高级取证技术。但在AI世界中，不存在“绝对的壁垒”。当检测技术作为论文发表后，攻击者（深度伪造制作者）会立刻改良生成模型以规避该检测器。&lt;/p>
&lt;p>例如，假设检测器通过发现“频域异常”识破了深度伪造。攻击者就会将&lt;strong>该检测器本身作为新GAN的“判别器（Discriminator）”集成进去&lt;/strong>，重新训练生成器（Generator）。这样一来，生成器就会进化出输出“即便在频域上也与自然图像无法区分的图像”的能力。&lt;/p>
&lt;p>甚至，已有研究（反取证，Anti-Forensics）报告指出，攻击者试图通过在后期处理中人为给视频添加“微小的色彩波动（虚假心跳信号）”，来欺骗基于rPPG的检测系统。&lt;/p>
&lt;p>检测与生成，正在上演一场“矛与盾”的无止境的猫鼠游戏（Cat-and-Mouse Game）。因此，有观点指出，仅靠事后分析输出数据（图像或视频）来判定真伪的方法（被动检测），迟早会迎来瓶颈。&lt;/p>
&lt;hr>
&lt;h1 id="5-根本对策内容溯源与c2pa框架">5. 根本对策：内容溯源与C2PA框架
&lt;/h1>&lt;p>在事后检测遇到瓶颈的当下，全世界正迅速推进一种从密码学角度保证数据“出处（Provenance）”的主动防御方法。而构建其全球标准框架的，正是&lt;strong>C2PA（内容溯源和真实性联盟，Coalition for Content Provenance and Authenticity）&lt;/strong>。&lt;/p>
&lt;p>C2PA是由Adobe、Microsoft、Intel、BBC、Sony等主要企业参与成立的联盟，正在制定将数字内容的来源（谁、在何时、用哪台相机拍摄，并进行了何种编辑）以防篡改的方式嵌入到内容本身的技术规范。&lt;/p>
&lt;h2 id="51-c2pa的机制">5.1 C2PA的机制
&lt;/h2>&lt;p>C2PA的核心技术是使用公钥基础设施（PKI）的数字签名，以及与内容哈希值的绑定。&lt;/p>
&lt;ol>
&lt;li>&lt;strong>元数据生成（Manifest）&lt;/strong>：在用相机拍下照片的瞬间，或使用软件进行编辑时，会生成一个包含其操作历史、设备信息及创作者信息的，称为“清单（Manifest）”的元数据。&lt;/li>
&lt;li>&lt;strong>密码学签名（Digital Signature）&lt;/strong>：针对清单以及图像本身的哈希值（像素数据的摘要），使用硬件或软件的私钥施加数字签名。&lt;/li>
&lt;li>&lt;strong>嵌入到资产中&lt;/strong>：签过名的清单（C2PA凭证）会被嵌入到JPEG或MP4等文件格式的头部信息中。&lt;/li>
&lt;/ol>
&lt;p>如果攻击者篡改了图像的一部分，或者试图给AI生成的图像附加虚假的元数据，由于图像本身的哈希值会发生改变，数字签名验证就会失败，篡改将立刻败露。&lt;/p>
&lt;pre class="mermaid">
flowchart TD
C[&amp;#34;创作者 / 相机 (Creator/Camera)&amp;#34;] --&amp;gt; M[&amp;#34;元数据生成 (Manifest Generation)&amp;#34;]
M --&amp;gt; S[&amp;#34;签名与绑定 (Cryptographic Signature)&amp;#34;]
S --&amp;gt; A[&amp;#34;资产 (Asset with C2PA Manifest)&amp;#34;]
A --&amp;gt; P[&amp;#34;平台 (Social Media Platform)&amp;#34;]
P --&amp;gt; V[&amp;#34;验证过程 (Validation Process)&amp;#34;]
V --&amp;gt; U[&amp;#34;用户界面显示 (Content Credentials UI)&amp;#34;]
&lt;/pre>
&lt;h2 id="52-content-credentials图标的可视化">5.2 “Content Credentials”图标的可视化
&lt;/h2>&lt;p>在遵循C2PA标准的系统中，当用户在社交网络或新闻网站上看到图像时，图像角落会显示一个“CR（Content Credentials）”图标。点击该图标，任何人都可以透明地查看到该图像的履历——它是“AI生成的”、“真实相机拍摄的”，还是“经过Photoshop色彩校正的”。&lt;/p>
&lt;p>目前，OpenAI（DALL-E 3）和Google等主要的AI供应商也开始为生成的图像添加C2PA元数据，而徕卡和索尼等相机制造商也正在推进在硬件层面上实现C2PA签名功能。社会的范式正在从“识破假货”向“证明真品（零信任架构，Zero-Trust）”转变。&lt;/p>
&lt;hr>
&lt;h1 id="6-下一代信息素养我们能做什么">6. 下一代信息素养：我们能做什么
&lt;/h1>&lt;p>技术对策（如深度伪造检测器或C2PA这样的内容溯源）终究只是保护社会的基础设施。最终判断是否消费并传播信息的，还是我们人类的大脑。&lt;/p>
&lt;p>AI时代所谓的下一代“信息素养”，就是具备以下态度：&lt;/p>
&lt;ol>
&lt;li>&lt;strong>避免反射性地传播（Stop and Think）&lt;/strong>
越是接触到令人震惊的影像或煽动愤怒的内容（诉诸情感的信息），就越应停下脚步，停止转发和分享。深度伪造制造者的主要目的，就是黑客般地操纵人类情感来扩散信息。&lt;/li>
&lt;li>&lt;strong>确认信息的“出处”（Verify the Source）&lt;/strong>
该信息是否由值得信赖的新闻机构发布？是否附带了像C2PA这样的内容溯源（Content Credentials）？养成交叉验证信息来源的习惯至关重要。&lt;/li>
&lt;li>&lt;strong>抱有“一切都可能是伪造的”的健康怀疑精神（Healthy Skepticism）&lt;/strong>
无需过度悲观，但必须抛弃“视频=事实”这一过去的常识。我们需要在默认语音、视频、文章等一切都很容易被伪造的前提下，去摄取信息。&lt;/li>
&lt;/ol>
&lt;h1 id="结语">结语
&lt;/h1>&lt;p>AI技术的演进打开了潘多拉的魔盒。要消除产生深度伪造的技术本身已不再可能。&lt;/p>
&lt;p>然而，正如本文所解析的那样，技术人员正在通过频率分析、生物信号检测以及利用密码学的溯源证明（C2PA）等多种手段，对抗着假新闻的威胁。通过将这些技术护盾（防御措施）与我们每个人名为“信息素养”的社会护盾相结合，我们一定能够驾驭AI带来的虚构浪潮，守卫真实的价值。&lt;/p>
&lt;p>正因为这是一个现实与虚构边界消融的时代，人类力求辨明真相的“意志”，才变得比以往任何时候都更加重要。&lt;/p></description></item></channel></rss>