<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>GAN on kenji.blog</title><link>http://kenji.blog/ru/tags/gan/</link><description>Recent content in GAN on kenji.blog</description><generator>Hugo -- gohugo.io</generator><language>ru</language><copyright>kenjinote</copyright><lastBuildDate>Sat, 12 Sep 2026 12:00:00 +0900</lastBuildDate><atom:link href="http://kenji.blog/ru/tags/gan/index.xml" rel="self" type="application/rss+xml"/><item><title>Дипфейки и информационная грамотность: как технически распознать фейковые новости</title><link>http://kenji.blog/ru/p/deepfake-info-literacy/</link><pubDate>Sat, 12 Sep 2026 12:00:00 +0900</pubDate><guid>http://kenji.blog/ru/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-х годах развитие генеративного ИИ (Generative AI) происходит с невиданной ранее скоростью. Всего за несколько секунд можно создать контент — от текстов и аудио до изображений и видео — который невозможно отличить от созданного человеком. Хотя этот технологический скачок приносит огромную пользу творческим сферам, он также порождает серьезную социальную угрозу в виде потока изощренного поддельного контента, называемого «дипфейк» (Deepfake).&lt;/p>
&lt;p>Дипфейки угрожают обществу в различных формах: фейковые выступления политиков, мошенничество от лица CEO компаний (эволюция BEC-мошенничества) или порнография, порочащая честь знаменитостей. Особенно в периоды выборов распространение фейковых новостей с использованием дипфейков перерастает в ситуацию, которая расшатывает основы демократии.&lt;/p>
&lt;p>В такую эпоху от нас требуется обновление «информационной грамотности». Здравый смысл «верить своим глазам» больше не работает. В этой статье мы начнем с технических основ того, как создаются дипфейки, и продолжим невероятно глубоким техническим разбором передовых методов цифровой криминалистики для их «технического» распознавания, а также обсудим концепции противодействия дезинформации на уровне всего общества (например, C2PA), с использованием математических формул и кода.&lt;/p>
&lt;hr>
&lt;h1 id="1-механизмы-генеративного-ии-лежащие-в-основе-дипфейков">1. Механизмы генеративного ИИ, лежащие в основе дипфейков
&lt;/h1>&lt;p>Чтобы понять дипфейки, необходимо сначала узнать принципы работы генеративного ИИ, который является их основой. В настоящее время для генерации изображений и видео высокого разрешения используются две основные архитектуры: «GAN» (Generative Adversarial Networks — Генеративно-состязательные сети) и «Diffusion Models» (Диффузионные модели).&lt;/p>
&lt;h2 id="11-генеративно-состязательная-сеть-gan">1.1 Генеративно-состязательная сеть (GAN)
&lt;/h2>&lt;p>GAN, предложенная Иэном Гудфеллоу и его коллегами в 2014 году, послужила катализатором технологии дипфейков. 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;Скрытый вектор Z (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>Независимо от того, насколько совершенной становится генеративная модель, данные, сгенерированные ИИ, всегда будут содержать невидимые для человека «математические и статистические следы» (артефакты). Технологии обнаружения (детекторы дипфейков) улавливают эти микроскопические следы с помощью различных подходов.&lt;/p>
&lt;h2 id="21-анализ-в-частотной-области-и-дкп-дискретное-косинусное-преобразование">2.1 Анализ в частотной области и ДКП (Дискретное косинусное преобразование)
&lt;/h2>&lt;p>Человеческий глаз чувствителен к пространственным изменениям цвета и яркости изображения (в пространственной области), но нечувствителен к изменениям частот (в частотной области). Изображения, сгенерированные с помощью GAN или диффузионных моделей, даже если на первый взгляд выглядят идеально, в процессе апсемплинга (увеличения разрешения от низкого к высокому) порождают специфические частотные паттерны (такие как артефакты шахматной доски).&lt;/p>
&lt;p>Для обнаружения этого часто используется &lt;strong>Дискретное косинусное преобразование (Discrete Cosine Transform, DCT)&lt;/strong>. ДКП представляет изображение как сумму косинусоид разных частот. Формула двумерного ДКП выглядит следующим образом:&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>Сгенерированные изображения, по сравнению с естественными, как правило, имеют аномальное распределение энергии в &lt;strong>высокочастотных компонентах (мелкий шум и резкие перепады границ)&lt;/strong>. Ниже приведен простой пример кода на Python для извлечения энергии высокочастотных компонентов из изображения с использованием ДКП.&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"># Применение двумерного дискретного косинусного преобразования (ДКП)&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">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>Эта неестественность в частотной области возникает из-за того, что, хотя ИИ может научиться «локальной согласованности на уровне пикселей», ему трудно идеально имитировать «глобальные частотные характеристики всего изображения».&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>Пока человек жив, его сердце бьется, и кровь циркулирует по телу. Поскольку гемоглобин в крови хорошо поглощает свет определенной длины волны (особенно зеленый свет, около 530 нм), цвет кожи лица микроскопически (на невидимом для человека уровне) изменяется синхронно с сердцебиением. Технология бесконтактной оценки частоты сердечных сокращений по видео с обычной 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 ударов в минуту).&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. Извлечение зеленого канала (Green) из пространства RGB&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.7 Гц - 2.5 Гц = 42 - 150 уд/мин)&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). Однако в мире ИИ не существует «абсолютной стены». Как только технология обнаружения публикуется в виде научной статьи, злоумышленники (создатели дипфейков) немедленно улучшают генеративные модели, чтобы обходить эти детекторы.&lt;/p>
&lt;p>Например, предположим, что детектор распознает дипфейки, обнаруживая «аномалии в частотной области». Злоумышленник встраивает &lt;strong>сам этот детектор в качестве «дискриминатора» (Discriminator) новой GAN&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>Внедрение в актив (Asset)&lt;/strong>: Подписанный манифест (C2PA учетные данные) внедряется в информацию заголовка файлов таких форматов, как JPEG или MP4.&lt;/li>
&lt;/ol>
&lt;p>Если злоумышленник попытается подделать часть изображения или прикрепить поддельные метаданные к сгенерированному ИИ изображению, хэш-значение самого изображения изменится, поэтому проверка цифровой подписи не удастся, и подделка будет немедленно раскрыта.&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;Актив с манифестом C2PA (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). Если нажать на него, любой сможет прозрачно проверить историю изображения, например, «было ли оно сгенерировано ИИ», «было ли оно снято на реальную камеру» или «была ли выполнена цветокоррекция в Photoshop».&lt;/p>
&lt;p>В настоящее время крупные разработчики ИИ, такие как OpenAI (DALL-E 3) и Google, также начали прикреплять метаданные C2PA к сгенерированным изображениям, а производители камер, такие как Leica и Sony, внедряют функции подписи C2PA на аппаратном уровне. Социальная парадигма смещается от «распознавания подделок» к «доказательству подлинности (подход Zero-Trust)».&lt;/p>
&lt;hr>
&lt;h1 id="6-информационная-грамотность-нового-поколения-что-мы-можем-сделать">6. Информационная грамотность нового поколения: что мы можем сделать
&lt;/h1>&lt;p>Технические контрмеры (инфраструктура, такая как детекторы дипфейков и подтверждение происхождения вроде C2PA) — это всего лишь инструменты для защиты общества. В конечном счете именно человеческий мозг принимает решение о потреблении и распространении информации.&lt;/p>
&lt;p>В эпоху ИИ «информационная грамотность» нового поколения означает наличие следующих подходов:&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>Развитие технологий ИИ открыло ящик Пандоры. Уничтожить саму технологию создания дипфейков уже невозможно.&lt;/p>
&lt;p>Однако, как было описано в этой статье, технические специалисты борются с угрозой фейковых новостей с помощью разнообразных подходов, таких как частотный анализ, обнаружение биометрических сигналов и доказательство происхождения с использованием криптографии (C2PA). Объединив этот технический щит (меры защиты) с социальным щитом в виде нашей индивидуальной «информационной грамотности», мы сможем преодолеть волну вымысла, которую приносит ИИ, и защитить ценность истины.&lt;/p>
&lt;p>Именно потому, что мы живем в эпоху, когда стирается граница между реальностью и вымыслом, человеческая «воля» к распознаванию истины становится как никогда важной.&lt;/p></description></item></channel></rss>