Конкурс ImageNet состоялся в октябре 2012 года и был посвящен классификации объектов на фотографиях. В конкурсе требовалось распознавание образов в 1000 категорий.
Команда Хинтона использовала методы deep learning и сверточных нейронных сетей, а также инфраструктуру, созданную в Google под руководством Jeff Dean и Andrew Ng. В марте 2013 года Google инвестировал в стартап Хинтона, основанный при университете Торонто, тем самым получив все права на технологию. В течение шести месяцев был разработан сервис поиска по фотографиям photos.google.com.
Сервис использует в сверточные нейронные сети, первоначально разработанные профессором Яном Лекуном в конце 1990-х годов. Уже тогда эта технология позволяла надежно решать задачи распознавания рукописных текстов. С тех пор значительно увеличилась мощность компьютеров, и появились новые алгоритмы широкомасштабного обучения нейронных сетей.
Что касается технической инфраструктуры, я ее частично описывал в статье Формирование высокоуровневых признаков с помощью широкомасштабного эксперимента по обучению без учителя. Подробное описание см. в статье (pdf), а я ограничусь несколькими цифрами. За счет использования локально связанных сетей, характерных для обработки двумерных изображений, удается эффективно задействовать до 32 компьютеров по 16 ядер в каждом, суммарно до 512 ядер, для обучения одной крупной нейронной сети. За счет же использования распределенных алгоритмов оптимизации и репликации обучаемых параметров число эффективно работающих параллельных процессорных ядер удается довести до десятков тысяч!
В частности, для обучения сети, победившей в конкурсе ImageNet, использовались 16 млн. изображений 100х100 пикселов. Выходной слой нейронной сети состоял из 21000 логистических классификаторов «один из всех». Общее число оптимизируемых параметров (весов нейронной сети) составило 1.7 миллиарда. Для обучения использовались 81 машин – почти 1300 ядер.
Реализация академических технологий, приобретенных Гуглом менее года назад, позволила в кратчайшие сроки разработать непревзойденный сервис поиска по немаркированным изображениям. Вот некоторые любопытные результаты:
Генерализация
Несмотря на значительную разницу между изображениями в обучающей и тестовой выборках, поисковая система достаточно хорошо справляется с обобщениями. Например, для обучения понятию «цветок» могли использоваться фотографии цветов, сделанные макросъемкой, с идеальной композицией, включающей единственный цветок в центре кадра. Обученная же сеть находит цветы на любительских фотографиях с произвольной композицией и масштабом.
Изображение цветка из обучающей выборки
Изображение, на котором система обнаружила цветы
Мультимодальные классы
Сеть оказалась способна распознавать классы изображений, значительно различающиеся по внешнему виду. Например, к классу «автомобиль» система относит и фото экстерьера, и интерьера автомобилей. Это тем более удивительно, что в выходном слое используются по-сути линейные классификаторы, разделяющие многомерное пространство признаков.
Классификация абстрактных понятий
Система неплохо справляется с абстрактными или сильно обобщенными классами, такими как «танец», «поцелуй», «еда». Это интересно, т.к. для таких понятий неочевидны простые визуальные признаки, такие как цвет, текстура или форма.
На этих изображениях обнаружена еда
Осмысленные ошибки
В отличие от многих систем компьютерного зрения, когда данная система ошибается, ее ошибки кажутся вполне обоснованными. Такие ошибки вполне мог бы допустить и человек – см. например ошибочную классификацию моллюска (змея) или ослика (собака).
Банановый слизняк, ошибочно распознанный как змея
Ослик, ошибочно распознанный в качестве собаки
Распознавание узкоспециальных классов
Система оказалась способна распознавать очень специфические классы, например виды цветов (гибискус и т.п.) Для системы, способной распознавать широкие понятия, такие как «Рассвет», классификация тонких признаков удивительна.
Система определила, что это белый медведь...
… а это — медведь гризли
Автор: sergeypid