Предобработка обучающего набора данных для системы распознавания дипфейков
"Научный аспект №6-2024" - Информ. технологии
УДК 004.0315
Астахов Сергей Викторович – студент магистратуры факультета информатики и системы управления федерального государственного бюджетного образовательного учреждения высшего образования Московского государственного технического университета имени Н.Э. Баумана (Национального исследовательского университета).
Гендина Нина Борисовна – студент магистратуры факультета информатики и системы управления федерального государственного бюджетного образовательного учреждения высшего образования Московского государственного технического университета имени Н.Э. Баумана (Национального исследовательского университета).
Кадыров Тимерлан Ильдарович – студент магистратуры факультета информатики и системы управления федерального государственного бюджетного образовательного учреждения высшего образования Московского государственного технического университета имени Н.Э. Баумана (Национального исследовательского университета).
Аннотация: В данной статье описывается процесс формирования обучающего набора данных для системы распознавания дипфейков на основе "регионов интереса" (ROI). Концепция ROI позволяет анализировать изображения и видео, что делает ее универсальной. В статье рассмотрены теоретические основы определения типовых зон на изображении и фрагменты программы для формирования обучающего набора данных.
Ключевые слова: компьютерное зрение, машинное обучение, распознавание образов, дипфейк, гистограмма направленных градиентов, каскад регрессионных моделей.
Введение
В наше время социальные сети и мессенджеры стали неотъемлемой частью жизни многих людей. Однако, вместе с возможностью общения и обмена информацией, появилась и проблема недостоверных новостей, видео и фотографий.
Дипфейки - это фотографии или видео, созданные с помощью искусственного интеллекта, которые могут быть использованы для создания фальшивых новостей или дезинформации [1].
В связи с этим, возникает необходимость в разработке методов определения дипфейков, которые позволят бороться с распространением фальшивой информации.
В данной статье рассмотрен процесс формирования обучающего набора данных для системы распознавания дипфейков, использующей концепцию “регионов интереса” (ROI) [2].
Идентификация зоны лица
Алгоритм функционирования проектируемой системы распознавания дипфейков, что первым этапом на пути обработки изображения является выделение зон интереса. На основе характеристик изображения в этих зонах и будет производиться дальнейшее определение признаков дипфейка.
Для определения зон интереса подпрограмма предварительной обработки данных определяет положение 68 типовых точек лица с помощью библиотеки dlib [3].
Для обнаружение участка исходного изображения, в котором находится лицо, эта библиотека использует так называемую гистограмму направленных градиентов [4]. Для этого исходное изображение сначала переводится в черно-белый формат (рисунок 1).
Рисунок 1. Пример исходного изображения
Затем, для каждого небольшого участка изображения анализируется градиент (направление изменения) яркости в нем (рисунок 2).
Рисунок 2. Вычисление градиента
Такой подход нивелирует влияние освещения и позволяет упростить вычисления при дальнейшем анализе. Пример изображения, обработанного данным алгоритмом приведен на рисунке 3.
Рисунок 3. Представление изображения в виде набора градиентов
Идентификация зон интереса
Для определения положения отдельных точек в зоне, где было обнаружено лицо, библиотека использует каскад регрессионных моделей [5].
Прежде всего, использование каскадов решает такую проблему, как влияние освещения и артефактов на точность определения точек. Изначальная дилемма состоит в том, что при определении признаков регрессорами, признаки могут быть искажены. Для борьбы с этим используется каскадная модель, которая итеративно уточняет форму лица и значения признаков в ее рамках.
Второй проблемой является тот факт, что алгоритм должен оценить форму, вектор высокой размерности, который наилучшим образом согласуется с данными изображения и моделью формы. Успешные алгоритмы решают эту проблему, предполагая, что предполагаемая форма должна лежать в линейном подпространстве, которое может быть обнаружено, например, путем нахождения основных компонентов форм [6].
Регрессоры представляют из себя деревья решений, используемых в сочетании с технологией градиентного бустинга на основе квадратичной функции потерь. Эти деревья решений анализируют разность значений интенсивности в парах пикселей на изображении, распределение расстояний между которыми определяется априорной функцией вероятности. Априорное распределение позволяет алгоритму бустинга эффективно исследовать большое количество релевантных признаков. Результатом является каскад регрессоров, которые могут локализовать лицевые метки на изображении лица в положении анфас.
Решение в каждом узле основано на пороговом значении разности значений интенсивности в паре пикселей. Это довольно простой подход, но он гораздо более эффективен, чем пороговое значение с одной интенсивностью, из-за его относительной нечувствительности к изменениям глобального освещения. К сожалению, недостатком использования разностей пикселей является то, что число потенциальных признаков является квадратичным по отношению к количеству пикселей в среднем изображении. Это затрудняет поиск хороших пар без поиска по очень большому их числу. Однако этот ограничивающий фактор может быть в некоторой степени ослаблен с учетом структуры данных изображения. Для этого при выборе расстояния между пикселями используется экспоненциальное распределение [7].
Стоит так же отметить, что данная модель умеет работать с обучающими примерами, где некоторая часть рассматриваемых меток не определена, задавая для них 0 вес при обучении.
Рассматриваемая модель состоит из большого числа “слабых” регрессоров, которые в свою очередь объединяются в несколько “сильных”. Зависимость точности модели от числа “сильных” регрессоров показана на рисунке 1.
Рисунок 4. Зависимость точности модели от числа регрессоров
Модель, используемая в библиотеке dlib обучалась на наборе данных HELEN, состоящем из 2000 размеченных изображений человеческих лиц из социальной сети Flickr [8].
Сравнение ошибок для используемых в бибилиотеке регрессоров в сопоставлении с другими возможными вариантами показано на рисунке 2. Ось абсцисс описывает число уровней каскада, ординат — значение ошибки. Кривая для используемых регрессоров обозначена зеленым цветом.
Рисунок 5. Уровни ошибок в зависимости от числа уровней каскада для различных типов регрессоров
На рисунке 3 показаны пары пикселей, отбираемые в качестве признаков при равномерном и экспоненциальном распределениях расстояний между ними соответственно. Из рисунка интуитивно понятно, что априорный выбор экспоненциальной функции повышает эффективность и точность модели, стимулируя ее выбирать более близкие точки для определения деталей лица.
Рисунок 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. Зависимость значения ошибки от числа примеров для различного числа уровней каскада
Листинг 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. Фрагмент обучающего набора данных
Заключение
Проблема недостоверных новостей, видео и фотографий становится все более актуальной в информационном обществе. Дипфейки могут нанести серьезный ущерб как отдельным людям, так и обществу в целом.
Однако, существуют различные методы определения дипфейков, которые позволяют бороться с распространением фальшивой информации.
В данной статье был рассмотрен процесс предобработки данных для формирования обучающего набора системы обнаружения дипфейков, использующей концепцию регионов интереса (ROI).
Список литературы
- Collins, Forged Authenticity: Governing Deepfake Risks / Collins, Aengus // EPFL International Risk Governance Center (IRGC) : электронный журнал. – URL: https://infoscience.epfl.ch/record/273296. – Дата публикации: 16.12.2019.
- 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.
- DLib.net : сайт. – URL: http://dlib.net/train_shape_predictor.py.html (дата обращения: 16.11.2023)
- Современное распознавание лиц с глубинным обучением // Habr.com : сайт. – URL: https://habr.com/ru/articles/306568/ (дата обращения: 18.11.2023)
- 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.
- 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).
- 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.
- Helen dataset // ifp.illinois.edu : сайт. – URL: http://www.ifp.illinois.edu/~vuongle2/helen/ (дата обращения: 24.11.2023)
- OpenCV-Python Tutorials : сайт. – URL: https://docs.opencv.org/4.x/d6/d00/tutorial_py_root.html (дата обращения: 04.02.2024)
- DataFrame : сайт. – URL: https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.html (дата обращения: 04.02.2024