Предобработка обучающего набора данных для системы распознавания дипфейков

"Научный аспект №6-2024" - Информ. технологии

УДК 004.0315

Астахов Сергей Викторович – студент магистратуры факультета информатики и системы управления федерального государственного бюджетного образовательного учреждения высшего образования Московского государственного технического университета имени Н.Э. Баумана (Национального исследовательского университета).

Гендина Нина Борисовна – студент магистратуры факультета информатики и системы управления федерального государственного бюджетного образовательного учреждения высшего образования Московского государственного технического университета имени Н.Э. Баумана (Национального исследовательского университета).

Кадыров Тимерлан Ильдарович – студент магистратуры факультета информатики и системы управления федерального государственного бюджетного образовательного учреждения высшего образования Московского государственного технического университета имени Н.Э. Баумана (Национального исследовательского университета).

Аннотация: В данной статье описывается процесс формирования обучающего набора данных для системы распознавания дипфейков на основе "регионов интереса" (ROI). Концепция ROI позволяет анализировать изображения и видео, что делает ее универсальной. В статье рассмотрены теоретические основы определения типовых зон на изображении и фрагменты программы для формирования обучающего набора данных.

Ключевые слова: компьютерное зрение, машинное обучение, распознавание образов, дипфейк, гистограмма направленных градиентов, каскад регрессионных моделей.

Введение

В наше время социальные сети и мессенджеры стали неотъемлемой частью жизни многих людей. Однако, вместе с возможностью общения и обмена информацией, появилась и проблема недостоверных новостей, видео и фотографий.

Дипфейки - это фотографии или видео, созданные с помощью искусственного интеллекта, которые могут быть использованы для создания фальшивых новостей или дезинформации [1].

В связи с этим, возникает необходимость в разработке методов определения дипфейков, которые позволят бороться с распространением фальшивой информации.

В данной статье рассмотрен процесс формирования обучающего набора данных для системы распознавания дипфейков, использующей концепцию “регионов интереса” (ROI) [2].

Идентификация зоны лица

Алгоритм функционирования проектируемой системы распознавания дипфейков, что первым этапом на пути обработки изображения является выделение зон интереса. На основе характеристик изображения в этих зонах и будет производиться дальнейшее определение признаков дипфейка.

Для определения зон интереса подпрограмма предварительной обработки данных определяет положение 68 типовых точек лица с помощью библиотеки dlib [3].

Для обнаружение участка исходного изображения, в котором находится лицо, эта библиотека использует так называемую гистограмму направленных градиентов [4]. Для этого исходное изображение сначала переводится в черно-белый формат (рисунок 1).

Рисунок1

Рисунок 1. Пример исходного изображения

Затем, для каждого небольшого участка изображения анализируется градиент (направление изменения) яркости в нем (рисунок 2).

Рисунок2

Рисунок 2. Вычисление градиента

Такой подход нивелирует влияние освещения и позволяет упростить вычисления при дальнейшем анализе. Пример изображения, обработанного данным алгоритмом приведен на рисунке 3.

Рисунок3

Рисунок 3. Представление изображения в виде набора градиентов

Идентификация зон интереса

Для определения положения отдельных точек в зоне, где было обнаружено лицо, библиотека использует каскад регрессионных моделей [5].

Прежде всего, использование каскадов решает такую проблему, как влияние освещения и артефактов на точность определения точек. Изначальная дилемма состоит в том, что при определении признаков регрессорами, признаки могут быть искажены. Для борьбы с этим используется каскадная модель, которая итеративно уточняет форму лица и значения признаков в ее рамках.

Второй проблемой является тот факт, что алгоритм должен оценить форму, вектор высокой размерности, который наилучшим образом согласуется с данными изображения и моделью формы. Успешные алгоритмы решают эту проблему, предполагая, что предполагаемая форма должна лежать в линейном подпространстве, которое может быть обнаружено, например, путем нахождения основных компонентов форм [6].

Регрессоры представляют из себя деревья решений, используемых в сочетании с технологией градиентного бустинга на основе квадратичной функции потерь. Эти деревья решений анализируют разность значений интенсивности в парах пикселей на изображении, распределение расстояний между которыми определяется априорной функцией вероятности. Априорное распределение позволяет алгоритму бустинга эффективно исследовать большое количество релевантных признаков. Результатом является каскад регрессоров, которые могут локализовать лицевые метки на изображении лица в положении анфас.

Решение в каждом узле основано на пороговом значении разности значений интенсивности в паре пикселей. Это довольно простой подход, но он гораздо более эффективен, чем пороговое значение с одной интенсивностью, из-за его относительной нечувствительности к изменениям глобального освещения. К сожалению, недостатком использования разностей пикселей является то, что число потенциальных признаков является квадратичным по отношению к количеству пикселей в среднем изображении. Это затрудняет поиск хороших пар без поиска по очень большому их числу. Однако этот ограничивающий фактор может быть в некоторой степени ослаблен с учетом структуры данных изображения. Для этого при выборе расстояния между пикселями используется экспоненциальное распределение [7].

Стоит так же отметить, что данная модель умеет работать с обучающими примерами, где некоторая часть рассматриваемых меток не определена, задавая для них 0 вес при обучении.

Рассматриваемая модель состоит из большого числа “слабых” регрессоров, которые в свою очередь объединяются в несколько “сильных”. Зависимость точности модели от числа “сильных” регрессоров показана на рисунке 1.

Рисунок4

Рисунок 4. Зависимость точности модели от числа регрессоров

Модель, используемая в библиотеке dlib обучалась на наборе данных HELEN, состоящем из 2000 размеченных изображений человеческих лиц из социальной сети Flickr [8].

Сравнение ошибок для используемых в бибилиотеке регрессоров в сопоставлении с другими возможными вариантами показано на рисунке 2. Ось абсцисс описывает число уровней каскада, ординат — значение ошибки. Кривая для используемых регрессоров обозначена зеленым цветом.

Рисунок5

Рисунок 5. Уровни ошибок в зависимости от числа уровней каскада для различных типов регрессоров

На рисунке 3 показаны пары пикселей, отбираемые в качестве признаков при равномерном и экспоненциальном распределениях расстояний между ними соответственно. Из рисунка интуитивно понятно, что априорный выбор экспоненциальной функции повышает эффективность и точность модели, стимулируя ее выбирать более близкие точки для определения деталей лица.

Рисунок6

Рисунок 6. Выбор признаков при различных функциях распределения

Преимущество использования многоуровневой модели показано в таблице 1. Как видно, число уровней каскада влияет на значение ошибки куда сильнее, чем число слабых регрессоров на одном уровне каскада.

Таблица 1. Зависимость ошибки модели от числа уровней каскада и числа слабых регрессоров

-

Число уровней

Число слабых регр.

Число уровней

Число слабых регр.

Число уровней

Число слабых регр

Конф. модели

1

500

1

5000

10

500

Значение ошибки

0.085

0.074

0.049

Зависимость ошибки модели при 10 уровнях каскада для различного числа примеров показана в таблице 2.

Таблица 2. Зависимость ошибки от числа примеров

Число примеров

100

200

500

1000

2000

Значение ошибки

0.090

0.074

0.059

0.054

0.049

Зависимость значения ошибки от числа примеров для различного числа уровней каскада продемонстрирована на рисунке 4.

Пример реализации функции определения формы лица на основе библиотеки dlib и openCV [9] приведен в листинге 1.

Рисунок7

Рисунок 7. Зависимость значения ошибки от числа примеров для различного числа уровней каскада

Листинг 1. Функция определения формы лица

# импорт библиотек

import collections

import cv2 as cv

from imutils import face_utils

import numpy as np

import imutils

import dlib

import numpy as np

# обучающий набор данных

PREDICTOR_DATASET = './shape_predictor_68_face_landmarks.dat'

# определитель форм лица

PREDICTOR = dlib.shape_predictor(PREDICTOR_DATASET)

# функция определения формы лица

def detect_faces(image):

# определитель зон, содержащих изображения лиц

detector = dlib.get_frontal_face_detector()

predictor = PREDICTOR

# поиск лиц на ч/б изображении

gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)

rects = detector(gray, 1)

# массив для координат точек

shapes = []

# для каждого изображения лица

for (i, rect) in enumerate(rects):

# определить 68 точек

shape = predictor(gray, rect)

# конвертировать в массив NumPy.array

shape = face_utils.shape_to_np(shape)

# добавить форму к существующим

shapes.append(shape)

# вернуть точки для всех лиц

return shapes

Формирование обучающего набора данных

Рассмотренная выше функция является частью модуля “faceparts”, разработанного в рамках данной работы и используется затем для предобработки обучающего набора изображений. Программный код функции, порождающей 1 строку обучающего набора в формате pandas.DataFrame [10] приведен в листинге 2.

Листинг 2. Функция предобработки данных

# импорт библиотек

import pandas as pd

import faceparts as fp

import cv2 as cv

import numpy as np

import cv2 as cv

# функция получения строки датафрейма

# параметры: имя файла, флаг фейка, коориднаты ROI, кадр, масштаб ROI

def generate_dataframe(filename, is_fake, shape, frame, frame_scale_percent):

# перевод в градации серого

gray_frame = cv.cvtColor(frame.copy(), cv.COLOR_BGR2GRAY)

data = {}

# расчет радиуса лица

r = pow(

pow(shape[fp.LEFT_EAR_POINT][0] - shape[fp.RIGHT_EAR_POINT][0], 2) + 

pow(shape[fp.LEFT_EAR_POINT][1] - shape[fp.RIGHT_EAR_POINT][1], 2),

0.5

)

# расчет размера ROI

rect_size = int((r * frame_scale_percent) / 100.0)

# заполнение вспомогательных полей датафрейма

data['filename'] = [filename]

data['fake'] = [is_fake]

# для каждой зоны на лице

for zone in fp.FACIAL_LANDMARKS_IDXS.keys():

# для каждой точки в зоне

for point_id in range(fp.FACIAL_LANDMARKS_IDXS[zone][0], fp.FACIAL_LANDMARKS_IDXS[zone][1]):

# получение координат точек и границ ROI

point = shape[point_id]

point_x = point[0]

point_y = point[1]

x1, y1, x2, y2 = \

int(point_x - int(rect_size/2)), \

int(point_y - int(rect_size/2)), \

int(point_x + int(rect_size/2)), \

int(point_y + int(rect_size/2))

# запись бинарных данных

data['pt_' + str(point_id) + '_' + zone +'_raw'] = [gray_frame[y1:y2, x1:x2].ravel()]

# информация обо всей зоне лица

point_x = int((shape[fp.LEFT_EAR_POINT][0] + shape[fp.RIGHT_EAR_POINT][0])/2)

point_y = int((shape[fp.LEFT_EAR_POINT][1] + shape[fp.RIGHT_EAR_POINT][1])/2)

x1, y1, x2, y2 = \

int(point_x - int(r)), \

int(point_y - int(r)), \

int(point_x + int(r)), \

int(point_y + int(r))

data['overall_face_raw'] = [gray_frame[y1:y2, x1:x2].ravel()]

# перевод в формат pandas.Dataframe

df = pd.DataFrame(data=data)

return (df.copy())

Пример фрагмента получаемого набора данных приведен на рисунке 7.

Первые два столбца содержат названия исходных файлов и флаг дипфейка, остальные — данные из регионов интереса в двоичном виде.

Таким образом, в ходе данной работы был продемонстрирован процесс идентификации регионов интереса на изображении и процесс формирования из них обучающего набора данных для системы распознавания дипфейков.

Рисунок8

Рисунок 8. Фрагмент обучающего набора данных

Заключение

Проблема недостоверных новостей, видео и фотографий становится все более актуальной в информационном обществе. Дипфейки могут нанести серьезный ущерб как отдельным людям, так и обществу в целом.

Однако, существуют различные методы определения дипфейков, которые позволяют бороться с распространением фальшивой информации.

В данной статье был рассмотрен процесс предобработки данных для формирования обучающего набора системы обнаружения дипфейков, использующей концепцию регионов интереса (ROI).

Список литературы

  1. Collins, Forged Authenticity: Governing Deepfake Risks / Collins, Aengus // EPFL International Risk Governance Center (IRGC) : электронный журнал. – URL: https://infoscience.epfl.ch/record/273296. – Дата публикации: 16.12.2019.
  2. Li, Y. Exposing DeepFake Videos By Detecting Face Warping Artifacts / Y. Li, S. Lyu // CVPR : электронный журнал. – URL: https://openaccess.thecvf.com/content_CVPRW_2019/papers/MediaForensics/Li_Exposing_DeepFake_Videos_By_Detecting_Face_Warping_Artifacts_CVPRW_2019_paper.pdf. – Дата публикации: 15.11.2018.
  3. DLib.net : сайт. – URL: http://dlib.net/train_shape_predictor.py.html (дата обращения: 16.11.2023)
  4. Современное распознавание лиц с глубинным обучением // Habr.com : сайт. – URL: https://habr.com/ru/articles/306568/ (дата обращения: 18.11.2023)
  5. Cascaded Continuous Regression for Real-Time Incremental Face Tracking / E. Sanchez-Lozano, B. Martinez, G. Tzimiropoulos, M. Valstar // European Conference on Computer Vision : электронный журнал. – URL: https://link.springer.com/chapter/10.1007/978-3-319-46484-8_39. – Дата публикации: 17.09.2016.
  6. Kazemi, V. One Millisecond Face Alignment with an Ensemble of Regression Tree / V. Kazemi, J. Sullivan // CVPR : электронный журнал. – URL: https://www.cv-foundation.org/openaccess/content_cvpr_2014/papers/Kazemi_One_Millisecond_Face_2014_CVPR_paper.pdf (дата обращения: 18.11.2023).
  7. Analysis and Improvement of Facial Landmark Detection / P. Kopp, D. Bradley, T. Beeler, M. Gross // ResearchGate : электронный журнал. – URL: https://www.researchgate.net/publication/332866914_Analysis_and_Improvement_of_Facial_Landmark_Detection. – Дата публикации: 01.03.2019.
  8. Helen dataset // ifp.illinois.edu : сайт. – URL: http://www.ifp.illinois.edu/~vuongle2/helen/ (дата обращения: 24.11.2023)
  9. OpenCV-Python Tutorials : сайт. – URL: https://docs.opencv.org/4.x/d6/d00/tutorial_py_root.html (дата обращения: 04.02.2024)
  10. DataFrame : сайт. – URL: https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.html (дата обращения: 04.02.2024
Автор: Астахов Сергей Викторович