на фотографии лицо. Мы собираем много фотографий, на которых есть лица, и другие фотографии, на которых их нет. Затем вручную рисуем квадрат вокруг каждого лица. Компьютер регистрирует положение квадратов, извлекает миниатюры лиц, обозначенные квадратами, и стандартизирует их размер, скажем, до 32 × 32 пикселей. Он также собирает большое количество квадратов в произвольных положениях и размерах на изображениях, где нет лиц. Теперь у нас есть коллекция миниатюр с лицами и без. С помощью таких миниатюр мы обучаем сверточную сеть для получения +1 для миниатюр с лицами и 0 для остальных.
После обучения применяем сеть к большому изображению, скажем, размером 1024 × 1024, приспосабливая размер слоев к размеру входа. Теперь на выходе получается таблица чисел от 0 до 1, которая указывает на вероятность того, что в окне 32 × 32 в соответствующей позиции на входе есть лицо. Но что если требуется обнаружить лица размером более 32 × 32 пикселей? Для этого достаточно повторно применить ту же сеть к версии изображения, размер которого был уменьшен, например, вдвое, до 512 × 512. Лица размером 64 × 64 пикселя теперь меняют размер на 32 × 32 и могут быть распознаны с помощью той же сети. Затем мы еще раз уменьшаем изображение и снова применяем сеть. Так делается для всей последовательности размеров 256 × 256, 128 × 128, 64 × 64 и, наконец, 32 × 32. В масштабе 32 × 32 можно обнаружить лицо, которое заполняло все исходное изображение.
Описанный метод очень эффективен. В дальнейшем мы станем использовать его для определения местоположения пешеходов и других объектов. Сегодня методы такого типа обнаруживают, распознают и идентифицируют транспортные средства, пешеходов, велосипедистов, дорожные знаки, светофоры и различные препятствия в системах восприятия беспилотных автомобилей.
Рис. 6.12. Результат обнаружения лиц с помощью сверточной сети со скользящим окном при разном масштабировании
Эта система была создана в 2003 г., когда я работал в Исследовательском институте NEC в Принстоне. Она может не только обнаруживать лица, но и оценивать их ориентацию. Данный пример – фотография свадьбы моих бабушки и дедушки по материнской линии в начале 1920-х гг. Моя бабушка выросла в немецком Эльзасе на рубеже веков и приехала в Париж в конце Первой мировой войны, не зная ни слова по-французски (источник: личный архив автора).
Семантическая сегментация со сверточной сетью
Семантическая сегментация включает в себя маркировку каждого пикселя изображения с категорией объекта, к которому он принадлежит. Она отличается от обнаружения объектов, где выход сети активируется, когда его окно просмотра сосредоточено на рассматриваемом объекте. Такая сегментация применяется, когда вы хотите обнаружить не ограниченный объект, а область изображения, скажем, траву, листву деревьев или асфальт на дороге. Например, беспилотный автомобиль должен иметь возможность маркировать все пиксели изображения, относящиеся к проезжей части, чтобы знать, куда он может поехать, не встретившись с препятствием. Аналогичным образом, для системы анализа маммографии важно иметь возможность маркировать все пиксели, где наблюдается опухоль. В этом случае применяется принцип скользящего окна. Вот пример.
Рис. 6.13. Автономный мобильный робот LAGR (вверху слева) воспринимает мир с помощью четырех камер
У робота две пары стереокамер, с помощью которых он фиксирует пару изображений (одно из них внизу слева). Первая система технического зрения использует различия между двумя принятыми изображениями для оценки расстояния каждого пикселя от камеры. Это позволяет роботу узнать, выступает ли конкретный пиксель изображения из земли или нет, и, следовательно, относится ли он к препятствию или проходимому участку (изображение внизу, в центре: проходимые участки – светлые, а препятствие – темные). Такой метод хорошо работает на расстояниях примерно до 10 м (на центральном изображении светлые и темные участки находятся как раз на расстоянии 10 м). Сверточная сеть (вверху справа) обучается маркировать пиксели изображения в зависимости от того, принадлежат ли они к проходимому участку или к препятствию. Впрочем, робот может маркировать сцену из одного изображения и без ограничения расстояния (изображение в правом нижнем углу).
В период с 2005 по 2009 г. я и мои студенты работали над проектом мобильных роботов в сотрудничестве с небольшой компанией Net-Scale Technologies в Нью-Джерси, основанной моим бывшим коллегой из Bell Labs Урсом Мюллером. Проект LAGR (Learning Applied to Ground Vehicles, обучение наземных роботов) финансировался DARPA (Defense Advanced Research Projects Agency, управление перспективных исследовательских проектов Министерства обороны США). Система зрения такого робота позволяла ему передвигаться на реальной местности. Для семантической сегментации использовалась сверточная сеть со скользящим окном[64].
Такая сеть классифицирует каждый пиксель изображения на три возможные категории: проходимый участок, непроходимое препятствие и «ступенька» препятствия (граница между проходимым участком и препятствием). Чтобы выбрать категорию, необходимо взять окно на изображении, создать категорию для центрального пикселя этого окна и использовать информацию в окне в качестве контекста, чтобы помочь в принятии решения. Когда сеть запускается во всех окнах, изображение полностью маркируется. Затем робот может планировать траекторию, позволяющую избежать препятствий[65].
Прелесть этой системы в том, что метки изображений не предоставлялись людьми, а автоматически рассчитывались системой стереозрения. Благодаря двум парам камер у робота было два изображения для каждой сцены, снятых с двух разных точек зрения, что очень похоже на совместную работу пары человеческих глаз. К ним применялся классический метод стереозрения, при котором на основе двух изображений мы можем вычислить несоответствие для каждого пикселя, то есть разницу в положении определенного места сцены на двух изображениях. Чем больше разница, тем ближе данное место к камере.
Рис. 6.14. a) Сверточная архитектура сети для семантической сегментации (вверху). б) Результат на примере улицы (внизу)
Семантическая сегментация включает в себя маркировку каждого пикселя изображения категорией объекта или области, к которой он принадлежит. Категория пикселя зависит от его контекста. Серый пиксель на дороге или в небе узнаваем только по его окружению. Сеть ConvNet имеет три канала, которые просматривают изображение в трех разных масштабах. Каждый из этих каналов извлекает на входе представление окна размером 46 × 46 пикселей. Выход сети – это категория центрального пикселя. В крупном масштабе окно охватывает почти все изображение, предоставляя широкий контекст для классификации центрального пикселя (источник: Farabet et al., 2013, New York University).
Рис. 6.15. RetinaNet: сверточная архитектура сети для обнаружения, локализации и распознавания объектов
RetinaNet – это архитектура ConvNet, которая позволяет одновременно обнаруживать, определять местонахождение, сегментировать и распознавать объекты и области. Она состоит из классической ConvNet, за которой