Изменения

Перейти к: навигация, поиск

Генерация дипфейков с помощью нейронных сетей

3 байта добавлено, 10:40, 12 января 2021
Нет описания правки
Другими словами алгоритм реконструкции является рекурсивным для каждой итерации:
$I_{r_{j}}, S_{r_{j}} = G_r(I_{r_{j - 1}};H(p_j)), I_{r_{0}} = I_s, i < j < n.$.
Наша модель $G_r$ имеет двы выхода. Первый выход выдает изображение с перенесенной геометрией, второй {{---}} маску для сегментации. Так же стоить заметить, что маска для сегментации состоит из трех классов, кожи, прически и фона. Такой подход позволяет увеличить точность всего процесса переноса.
Генераторы обучаются с помощью следующих функций потерь:
$\displaystyle Loss(G_r) = \lambda_{stepwise} Loss_{rec}(I_{r_{n}}, I_{t}) + \lambda_{rec}Loss_{rec}(I_{r}, I_{t}) + \lambda_{adv}Loss_{adv} + \lambda_{seg}Loss_{pixel}(S_r, S_t).$.
$\displaystyle Loss(G_s) = Loss_{CE} + \lambda_{reenact}Loss_{pixel}(S_t, S_{t} {r}).$.
$\displaystyle Loss_{perc}(x, y) = \sum_{i = 1}^{n} \frac{1}{C_i H_i W_i} || F_i(x) - F_i(y) ||_1 .$.
$\displaystyle Loss_{pixel}(x, y) = || x - y ||_1 .$.
$\displaystyle Loss_{rec}(x, y) = \lambda_{perc} Loss_{perc}(x, y) + \lambda_{pixel} Loss_{pixel}(x, y).$.
$\displaystyle Loss_{adv}(G, D) = \min_{G} \max_{D_1, ..., D_n} \sum_{i = 1}^{n} Loss_{GAN}(G, D_i).$.
$\displaystyle Loss_{GAN}(G, D) = \mathbb{E}_{(x, y)}[\log D(x, y)] + \mathbb{E}_{x} [\log(1 - D(x, G(x)))].$.
Пусть $x_{i_{1}}, x_{i_{2}}, x_{i_{3}}$ будут трисом(треугольником) $T$ и $I_{s_{i_{1}}}, I_{s_{i_{2}}}, I_{s_{i_{3}}}$ {{---}} соответствующие лица. Необходимо вычислить барицентрические координаты<ref name=bari>[https://ru.wikipedia.org/wiki/%D0%91%D0%B0%D1%80%D0%B8%D1%86%D0%B5%D0%BD%D1%82%D1%80%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B5_%D0%BA%D0%BE%D0%BE%D1%80%D0%B4%D0%B8%D0%BD%D0%B0%D1%82%D1%8B Барицентрические координаты]</ref> $\lambda_{1}, \lambda_{2}, \lambda_{3}$ от $x_t$ относительно $x_{i_{1}}, x_{i_{2}}, x_{i_{3}}$. Тогда результат интерполяции:
$\displaystyle I_r = \sum_{k=1}^{3} \lambda_k G_r(I_{s_{i_{k}}}; H(p_t)).$
Где $p_t$ 2D ключевая точка лица $F_t$.
Функция потерь такой сети {{---}}}
$\displaystyle Loss(G_c) = \lambda_{rec}Loss_{rec}(I_c, I_t) + \lambda_{adv}Loss_{adv}.$.
== Отрисовка полученного лица ==
Пусть $I_t$ будет исходным лицом, а $I_{r} {t}$ будет нужным нам лицом для переноса и $S_t$ маской сегментации. Тогда используя уравнение Пуассона <ref name=Poisson>[https://en.wikipedia.org/wiki/Poisson%27s_equation Уравнение Пуассона]</ref>, мы можем выполнить цветокоррекцию следующим образом
$\displaystyle P(I_t;I_{r}^{t};S_t) = arg min ||\nabla f - \nabla I^{t}_{r}||^{2}_{2}.$
$\displaystyle f(i, j) = I_t(i, j), \forall S_t(i, j) = 0.$
$\nabla$ {{---}} оператор взятия градиента.
$\displaystyle Loss(G_b) = \lambda_{rec}Loss_{rec}(I_t;I_{r}^{t};S_t), P(I_t;I_{r}^{t};S_t)) + \lambda_{adv}Loss_{adv}.$
== Данные для обучения и процесс обучения ==
30
правок

Навигация