Ученые из Венгрии, Иордании, Саудовской Аравии, Великобритании и США разработали систему распознавания лиц, которая умеет определять внешность, пол и приблизительный возраст человека с закрытым лицом. Программа даже способна предсказать, улыбается ли испытуемый под медицинской маской или вуалью.
В основе разработки лежит свёрточная нейросеть — разбираемся, что это за технология.
Свёрточная нейронная сеть
Convolutional Neural Networks (CNN) или свёрточная нейронная сеть — это модель глубокого обучения, которая «специализируется»» на обработке данных, имеющих топологию в виде сетки.
Строение ее архитектуры похоже на организацию зрительного восприятия мозга: в человеческом органе отдельные нейроны отвечают на стимулы в ограниченном рецептивном поле. При этом все клетки связаны между собой таким образом, что эти поля накладываются друг на друга и покрывают всю область видимости.
Точно также каждый «узел» нейросети обрабатывает данные только в своем поле деятельности. В итоге сначала система обнаруживает более простые узоры (линии и кривые), а затем переходит к сложным (объектам и лицам). Свёрточная модель, как правило, имеет три уровня: сверточный слой, слой объединения и полностью связанный слой.
Сверточный слой можно назвать основным этапом преобразования изображения, которое совершает сеть: этот уровень выполняет скалярное произведение между двумя матрицами. Одна из них – ядро, представляет собой набор обучаемых параметров, а другая – ограниченная часть рецептивного поля. Ядро меньше изображения, однако оно имеет большую глубину: так, если изображение состоит из трех RGB-каналов, глубина матрицы распространяется на все три канала.
Ядро шагает по картинке, составляя представление изображения этой области. Фильтр перемещается вправо на конкретное значение шага, анализируя всю ширину. Дойдя до края, он возвращается к началу, одновременно смещаясь на то же значение шага вниз. Это продолжается до тех пор, пока фильтр не пройдется по всему изображению. Например, вот так выглядит операция свертывания изображения NxMx3 с ядром 3x3x3:
В результате из вводного изображения извлекается высокоуровневые признаки, например, обозначение краев. Затем начинается слой объединения или пулинга: этот уровень отвечает за уменьшение пространственного размера представления, что уменьшает и необходимое количество вычислительных мощностей. Также этот слой используется для извлечения доминантных признаков.
Самая популярная функция объединения – это максимальный пулинг. Этот метод возвращает максимальное значение из охваченной ядром части изображения. Сверточный слой и уровень пулинга вместе формируют отдельный слой свёрточной нейросети.
После завершения всего этого процесса модель обучается понимать признаки, и начинается работа на уровне полностью связанного слоя, который сопоставляет представление между данными на входе и выходе.
Когда вводное изображение преобразовано в удобную для модели форму, оно трансформируется в N-пространственный вектор, где N — число классов. Каждое число в этом векторе представляет собой вероятность конкретного класса. Например, если программа предназначена для распознавания цифр, у N будет значение 10, а результирующий вектор может выглядеть как: [0 0,1 0 0,75 0 0 0 0 0]. Это значит, что существует 10 процентная вероятность, что на изображении цифра «1», а также 75 процентная вероятность, что на картинке — «3».
На уровне полностью связанного слоя нейросеть обращается к выходу предыдущего уровня и определяет наиболее связанные свойства. Например, если алгоритм предсказывает, что на изображении птица, высокие значения будут у свойств с высокоуровневыми характеристиками крыльев или клюва. Эти функции высокого уровня имеют определенные веса: после вычисления произведения этих весов с предыдущем слоем, и получаются вероятности для различных классов.
Основываясь на принципе работы свёрточной нейросети научный коллектив из Венгрии, Иордании, Саудовской Аравии, Великобритании и США создал программу, способную узнать человека, даже если у него закрыто все лицо, кроме глаз.
Маски больше не помогут
Первая свёрточная нейронная сеть была продемонстрирована в конце 80-х годов французским ученым Яном Лекуном. Всего через пару лет после демонстрации ее возможностей 10-20 процентов банковских чеков в США, написанных от руки, читали машины.
Сегодня свёрточная нейросеть — одна из самых популярных моделей для распознавания образов. На ее основе строится и модель для «узнавания» людей с закрытым лицом. Созданная учеными сеть имеет четыре тысячи признаков в каждом слое распознавания, а обучали ее на основе специальной базы данных изображений с фотографиями лиц в вуалях.
Тестирование модели проводилось на базе фотографий 150 человек. В результате нейросеть смогла распознать даже тестируемого в парандже, которая закрывает большую часть лица. При этом точность распознавания пола и возраста составила 99 процентов. В дальнейшем ученые планируют испытать сеть с помощью более «сложных» снимков, сделанных под разными углами и освещением.
Как и в случае с любой другой технологией, развитие модели свёрточной сети радует и пугает одновременно. С одной стороны, спрятаться от «большого брата» и «умной» рекламы корпораций становится труднее, с другой стороны, такие нейросети потенциально могут спасать жизни. Например, диагностировать опасные болезни на ранней стадии.
Судя по скорости технического прогресса, как с позитивными, так и с негативными последствиями развития технологии распознавания образов мы столкнемся уже скоро.
[cut]
Источники:
1. Елена Капаца «Свёрточная нейронная сеть (CNN)»
2. Mayank Mishra «Convolutional Neural Networks, Explained»
3. Academic team «Deep learning for identification and face, gender,
expression recognition under constraints»
4. Adit Deshpande «A Beginner’s Guide To Understanding Convolutional Neural Networks»
[/cut]