Лучшие компьютерные системы распознавания лиц сегодня действительно хорошо справляются с этой задачей. Они делают это почти так же хорошо, как и люди, хотя пока не могут сравниться с человеческим мозгом в компактности и энергоэффективности. Давайте рассмотрим два противоположных подхода. Первый – основанный на правилах, это означает, что он построен на выполнении серии строго заданных аналитических шагов. Такой подход обычно первым приходит в голову большинству людей (включая того самоуверенного аэрокосмического инженера, о котором я упомянул в начале главы). Для краткости мы будем называть основанный на правилах метод «глупым», хотя его варианты могут отличаться значительной сложностью.
Второй подход основан на машинном обучении и все больше начинает напоминать работу человеческого мозга. На данный момент кажется, что за этим подходом будущее. Именно он приводит в ужас защитников конфиденциальности. Назовем все версии на основе ИИ «умными» методами – потому что они имитируют работу нашего мозга, а я считаю мозг умной системой, – и дальше я сосредоточусь главным образом на них. На сегодняшний день именно умные методы доминируют в области распознавания лиц.
Задача алгоритма распознавания лиц состоит из двух основных шагов: сначала определить наличие лица, а затем установить, кому оно принадлежит. Первая задача называется обнаружением лица, вторая – идентификацией. Умные и глупые методы начинают с одинаковой исходной проблемы: им нужно проанализировать визуальную сцену со множеством различных объектов – например, в отделе мужской одежды в универмаге Macy’s, чтобы определить, есть ли там лица, и изолировать эти лица для дальнейшего анализа.
Но прежде, чем искать лица, компьютеру нужно подготовить изображение, сделать его максимально четким (для себя). Эти шаги, предшествующие запуску алгоритма обнаружения лиц, собирательно называются предварительной обработкой
[30]. Существует множество разных способов улучшить четкость изображения, как это знает каждый, кому приходилось работать с Adobe Photoshop. Вот два примера. Во-первых, большинство естественных сцен имеют неравномерную освещенность: на открытом воздухе солнце создает тени и блики; в отделе мужской одежды Macy’s то же самое делает подсветка витрин. Благодаря особым свойствам нашего зрительного анализатора мы не замечаем различий в освещенности, чего нельзя сказать о цифровой камере в смартфоне или компьютере. Их педантичный цифровой анализатор воспринимает один и тот же по-разному освещенный объект как два разных объекта. Следовательно, первая операция по нормализации – «выравнивание» яркости. Компьютер вычисляет среднюю яркость всего изображения (иногда используя для этого мудреные средне-подобные величины) и затем корректирует яркость различных участков изображения так, как если бы вся сцена была равномерно освещена одинаковым источником света. Во-вторых, в большинстве случаев выполняется выделение краев, потому что, как мы уже не раз говорили, именно края несут основную информацию об объектах.
Подготовив изображение, компьютер может приступить к поиску лиц. Существует несколько способов это сделать. Один из наиболее любопытных, который отчасти копирует работу нейронных сетей в зрительной коре мозга, называется методом HOG (Histogram of Oriented Gradients), или гистограммой направленных градиентов.
В нашем случае градиент – это переход между ярким и менее интенсивным цветом, то есть мы имеем участок изображения (край), одна сторона которого яркая, а другая – тусклая. Другими словами, градиент показывает не только наличие края, но и его направление – внутрь или наружу. Компьютер измеряет все возможные градиенты на изображении, определяет их направление и отображает их все в виде карты.
На рисунке на следующей странице представлен пример такого редуцированного HOG-изображения. Чтобы его получить, алгоритм разбил исходное изображение на небольшие квадраты, 16×16 пикселей каждый. В каждом квадрате он вычислил градиенты по всем основным направлениям (вверх, вниз, по диагонали и т. д.) и затем заменил изображение в каждом квадрате его сжатой репрезентацией – обычной линией, показывающей направление края, наиболее выраженное в данной ячейке.
На самом деле здесь вы видите своего рода усредненную, универсальную HOG-структуру лица, созданную на основе множества изображений лиц. Такой шаблон удобно использовать для обнаружения лиц в толпе. Для этого компьютер преобразует каждый участок изображения толпы – каждый квадрат пикселей, размер которого примерно соответствует размеру лица, – в HOG-карту. После чего перемещает универсальный HOG-шаблон по всему преобразованному изображению, сравнивая локальные HOG-квадраты с шаблоном. Большинство квадратов будет содержать беспорядочную мозаику краев. Но некоторые из них приблизительно совпадут с HOG-шаблоном и, следовательно, будут идентифицированы алгоритмом как лица. Конечно, это не позволяет нам идентифицировать, кому именно принадлежит лицо. Но зато мы получаем изображение лица, которое можно преобразовать в стандартный формат и использовать как ввод для последующих шагов классификатора, которому гораздо проще работать с такими входными данными, чем с необработанными изображениями. Таким образом, алгоритм взял беспорядочную мешанину пикселей – отображающую визуальную сцену с толпой – и вычленил из нее несколько локальных массивов пикселей, которые предположительно являются лицами.
Итак, мы имеем нормализованное изображение с локализованными на нем лицами. Посредством нескольких дополнительных операций изображения лиц переводятся в стандартный формат (например, обрезаются по контуру, чтобы исключить окружающий фон, – такие тонкие рамки вокруг лиц вы можете видеть в научно-фантастических фильмах). Теперь компьютер готов перейти к следующему шагу – попытаться определить, кому принадлежит лицо.
Если выйти на Таймс-сквер и спросить у случайных прохожих, как компьютер распознает лица, большинство из них ответит примерно следующее: «В компьютер закладывают правила об основных параметрах лица. Например, он измеряет расстояние между глазами или высоту лба. А затем сравнивает эти параметры неизвестного лица с параметрами лиц, которые есть в его базе данных».
Действительно, системы распознавания лиц на основе фиксированных правил существуют. Например, разработанный Мэтью Терком и Алексом Пентлендом алгоритм использует расчет так называемых собственных векторов для главных компонентов лица. Но на сегодняшний день большинство систем распознавания лиц используют машинное обучение. Разумеется, ситуация может измениться, и в будущем правиловые алгоритмы вполне могут вернуться на сцену (вспомните о моем предсказании через десяток лет). Но пока этого не произошло, мы сосредоточимся на обучающихся нейронных сетях.