В прошлом году Apple начала использовать в iOS 10 для распознавания человеческих лиц глубокое машинное обучение на смартфонах.
Изначально компания реализовала открытый набор API, который распознавал лица в приложениях Apple — например, в клиенте «Фото». Он базировался на алгоритме Виолы — Джонса, который позволял находить объекты на изображениях в реальном времени. Однако этот метод не был оптимален при работе на смартфонах, поэтому еще в 2014 году компания начала разрабатывать новые подходы к распознаванию лиц.
Несмотря на мощь современных мобильных устройств, они не приспособлены для запуска моделей глубокого машинного обучения. Для решения этой проблемы компании создают API и отправляют данные в «облако» — большой компьютер с мощными видеокартами — которое уже обучает нейронную сеть.
Но Apple ратует за безопасность и анонимность данных пользователей, поэтому не могла пойти таким путем. В процессе создания архитектуры глубокой сверточной нейронной сети для смартфонов она столкнулась с несколькими препятствиями:
1. Количеством свободной оперативной и флеш-памяти;
2. Распределением нагрузки (смартфон должен не только обучать нейронную сеть, но и выполнять действия пользователя);
3. Уменьшение затрачиваемого времени на обучение при большом количестве фотографий в галерее.
В результате Apple пришла к следующему варианту: сверточная нейронная сеть обрабатывает изображения и создаёт 2D-карту, каждая точка которой соответствует определенной части картинки и содержит «догадку» нейронной сети о наличии на снимке человеческого лица. Эту модель компания применила ко всем этапам распознавания лиц, что позволило обрабатывать изображения разных размеров и разрешений.
Чтобы решить проблемы с производительностью, Apple реализовала подход «учителя» и «ученика» — на общедоступных данных обучается большая сеть, которая затем выдаёт карту догадок локальной сети на смартфоне. Так она не получает пользовательские данные, но сохраняет паттерны, которыми затем руководствуется локальная сеть при определении лиц на снимках.
Подробнее о процессе создания локальной глубинной сверточной нейронной сети для распознавания лиц на смартфонах:
https://goo.gl/cKrnZa