В наше время конфиденциальность и защита личности в интернете, чуть ли не первостепенная задача. Для ее решения нужно реализовать обезличивание лица. Анонимизации необходима при достижении конфиденциальности и защиты личности, для защиты детей в Интернете, а именно обезличивание несовершеннолетних, также репортажи новостей или журналистов (например, людей, которые не давали разрешение на разглашение своего лица).
Реализуем два метода анонимизации лиц:
- Размытие по Гауссу
- Пиксельное размытие
Примерный алгоритм:
- С помощью компьютерного зрения и модели по распознаванию лиц, находим лица людей;
- Обрезаем ROI лица;
- Анонимизируем лица;
- Объединяем оригинальное фото и обезличиное лицо.
Для начала импортируем необходимые библиотеки:
Реализуем функцию размытия лица используя «Размытие Гаусса»:
Такую же функцию реализуем для «Пиксельного размытия», где сначала вычисляем длину и ширину фото, и делим на количество пикселей. Каждый пиксель заполним средним цветом по контуру.
Далее загружаем модель для распознавания лиц. Обычные детекторы лиц включают:
- Каскады Хаара;
- HOG + Линейный SVM;
- Детекторы лиц на основе глубокого обучения.
В своей разработке я буду использовать модель на основе глубокого обучения. При использовании модели глубокой нейронной сети OpenCV с моделями Caffe вам понадобятся два набора файлов:
- Файлы prototxt, определяют архитектуру модели (т. е. сами слои)
- Файлы caffemodel содержат веса для реальных слоев.
Оба файла необходимы при использовании моделей, обученных с использованием caffe для глубокого обучения.
Однако найти файлы prototxt можно только здесь, в репозитории GitHub OpenCV.
Детектор лиц с глубоким обучением OpenCV основан на платформе детектора одиночных снимков (SSD) с базовой сетью ResNet (в отличие от других OpenCV SSDs, которые обычно используют MobileNet в качестве базовой сети). Caffe модель можно взять в репозитории Github learnopencv.
Приступаем к реализации анонимизации лиц на фото, видео и видеопотоке с веб-камеры. Начнем с фото. Вычисляем вероятность обнаружения, если она больше 0.5, то это наше лицо. Получаем координаты ROI, далее анонимизируем лицо, и накладываем на оригинал.
Результаты обезличивания двумя методами: размытия и пикселизации.
Для примера давайте изменим фактор размытия для уменьшения вероятности идентифицировать личность человека и возьмем фактор 2.
Далее реализуем функцию обезличивания в реальном времени с веб-камеры, и для примера возьмем метод пикселизации. Суть такая же как и с фото, только обезличиваем каждый кадр видеопотока.
Результат:
Такое же действие проводим и с видео. Делим его на кадры, обезличиваем каждый, затем снова собираем результативное видео. Таким образом, был реализован алгоритм для обезличивания фото, видео и видеопотока с камеры способами пикселизации и размытия.