What I learned from competing against a ConvNet on ImageNet
Андрей Карпати рассказывает, как он лично соревновался с свёрточной нейросетью GoogLeNet на задаче классификации ImageNet (ILSVRC 2014). GoogLeNet показал ошибку Hit@5 в 6.7% на тестовом наборе из 1.2 млн изображений и 1000 классов, и Карпати решил измерить человеческую точность. Он разработал веб-интерфейс с 13 примерами на класс и после долгого обучения разметил 1500 изображений сам, достигнув ошибки 5.1% против 6.8% у GoogLeNet на той же выборке (p=0.022). Анализ показал, что нейросеть чаще ошибается на мелких объектах, фильтрах и абстрактных изображениях, а человек — на тонком различии пород собак и незнании классов. В обновлении 2015 года автор отмечает, что несколько моделей уже превзошли его результат, но подчёркивает: человеческая точность — это не точка, а кривая компромисса между усилиями и ошибкой, с теоретическим нижним пределом около 2%.
Результаты ImageNet Large Scale Visual Recognition Challenge 2014 (ILSVRC) были опубликованы несколько дней назад. The New York Times также написала об этом. ILSVRC — одно из крупнейших соревнований в области компьютерного зрения, и каждый год команды борются за звание лидера по точности на этом датасете. Соревнование основано на подмножестве датасета ImageNet, впервые собранного Deng et al. 2009, и проводится нашей лабораторией в Стэнфорде с 2010 года. В этом году соревнование собрало рекордное число участников — на 50% больше, чем в прошлом году, и были побиты рекорды с впечатляющими улучшениями как в задачах классификации, так и в задачах детекции.
(Моё личное) TLDR по ILSVRC 2014: на 50% больше команд. На 50% улучшилась классификация и детекция. Ансамбли ConvNet повсюду. Команда Google побеждает.
Конечно, это далеко не всё, и все детали и выводы будут подробно обсуждаться в Цюрихе на предстоящем воркшопе ECCV 2014, который пройдёт 12 сентября.
Кроме того, мы только что (2 сентября) опубликовали препринт на arXiv, описывающий всю историю ILSVRC и большое количество сопутствующего анализа — посмотрите на arXiv. Этот пост сосредоточится на той части статьи, в которую я внёс свой вклад (раздел 6.4 «Human accuracy on large-scale image classification»), и опишет некоторый контекст.
Задача классификации в ILSVRC
В рамках этого поста я хотел бы остановиться, в частности, на классификации изображений, потому что эта задача является общим знаменателем для многих других задач компьютерного зрения. Задача классификации состоит из 1,2 миллиона изображений в обучающей выборке, каждое из которых размечено одной из 1000 категорий, охватывающих самые разные объекты, животных, сцены и даже некоторые абстрактные геометрические понятия, такие как «крюк» или «спираль». 100 000 тестовых изображений выпускаются вместе с датасетом, но метки скрыты, чтобы команды не могли переобучиться на тестовом наборе. Команды должны предсказать 5 классов (из 1000), и изображение считается классифицированным правильно, если хотя бы одно из предсказаний совпадает с истинной меткой. Оценка тестового набора проводится с нашей стороны путём сравнения предсказаний с нашим собственным набором эталонных меток.
Впечатляющая производительность GoogLeNet
Около недели назад я просматривал результаты и особенно заинтересовался победной заявкой GoogLeNet в задаче классификации, которая достигла ошибки Hit@5 всего 6,7% на тестовом наборе ILSVRC. Я был относительно хорошо знаком с масштабом и сложностью задачи классификации: это неограниченные интернет-изображения. Это джунгли ракурсов, условий освещения и вариаций всех мыслимых типов. Это породило вопрос: А как с этим справляются люди?
Сейчас в компьютерном зрении есть несколько задач, в которых производительность наших моделей близка к человеческой или даже превосходит её. Примеры таких задач — верификация лиц, различные задачи медицинской визуализации, распознавание китайских иероглифов и т. д. Однако многие из этих задач довольно ограничены в том смысле, что предполагают входные изображения из очень определённого распределения. Например, модели верификации лиц могут принимать на вход только выровненные, центрированные и нормализованные изображения. Во многих отношениях ImageNet сложнее, поскольку изображения приходят прямо из «джунглей интернета». Возможно ли, что наши модели достигают человеческой производительности на такой неограниченной задаче?
Вычисление человеческой точности
Короче говоря, я подумал, что впечатляющий результат победившей команды имеет смысл оценить только в сравнении с человеческой точностью. К тому же я находился в уникальной позиции для проведения такой оценки (учитывая, что я делю офис с организаторами ILSVRC), поэтому я решил количественно измерить человеческую точность и охарактеризовать различия между предсказаниями людей и предсказаниями победившей модели.
Подождите, разве человеческая точность не 100%? Спасибо, хороший вопрос. Нет, потому что датасет ILSVRC размечался не так, как мы его классифицируем здесь. Например, чтобы собрать изображения для класса «Бордер-терьер», организаторы искали по запросу в интернете и получали большую коллекцию изображений. Затем эти изображения немного фильтровались людьми с помощью бинарного вопроса: «Это бордер-терьер или нет?». Всё, что прошло фильтрацию, становилось классом «Бордер-терьер», и аналогично для всех остальных 1000 классов. Поэтому данные собирались не дискриминативным, а бинарным способом, и подвержены ошибкам и неточностям. Некоторые изображения иногда также могут содержать несколько классов ILSVRC и т. д.
Отступление про CIFAR-10. Забавно отметить, что около 4 лет назад я проводил аналогичный (но гораздо более быстрый и менее детальный) анализ точности человеческой классификации на CIFAR-10. Это было тогда, когда state-of-the-art составлял 77% у Adam Coates, а моя собственная точность оказалась 94%. Думаю, лучшие ConvNet сейчас достигают около 92%. Пост об этом можно найти здесь. Я никогда не думал, что буду делать то же самое для ImageNet несколько лет спустя :)
Есть один момент, который надо прояснить. Вы можете спросить: Но подождите, метки тестового набора ImageNet изначально были получены от людей. Зачем переразмечать всё заново? Разве человеческая точность по определению не 0%? Вроде того, но не совсем. Важно помнить, что ImageNet размечался как бинарная задача. Например, чтобы собрать изображения класса собак «Kelpie», запрос отправлялся в поисковые системы, а затем люди на Amazon Mechanical Turk выполняли бинарную задачу фильтрации шума. Задача классификации ILSVRC, с другой стороны, — это классификация на 1000 классов. Это не бинарная задача, как та, что использовалась для сбора данных.
Интерфейс разметки
Я разработал интерфейс разметки, который помог бы нам оценить человеческую производительность. Он выглядел похоже, но не идентично скриншоту ниже:
Интерфейс состоял из тестового изображения слева и 1000 классов, перечисленных справа. За каждым классом следовало 13 примеров изображений из обучающего набора, чтобы категории было проще визуально сканировать человеку. Категории также были отсортированы в топологическом порядке иерархии ImageNet, что располагает семантически похожие концепции рядом друг с другом в списке. Например, все классы, связанные с автотранспортом, расположены подряд. Наконец, интерфейс веб-ориентированный, поэтому по классам легко прокручивать или искать их по тексту.
Попробуйте сами! Я делаю интерфейс разметки доступным для всех, чтобы вы тоже могли попробовать разметить ILSVRC и сделать свои собственные выводы. В этой версии есть несколько модификаций по сравнению с той, которую мы использовали для сбора данных. Я добавил две кнопки (Показать ответ и Показать предсказание Google), и, конечно, в этой версии показываются валидационные изображения, а не изображения тестового набора. Предсказания GoogLeNet на валидационном наборе любезно предоставила команда Google.
Препятствия по пути
Это было сложно. Когда я бета-тестировал интерфейс, задача разметки изображений 5 категориями из 1000 быстро оказалась чрезвычайно сложной даже для некоторых друзей по лаборатории, которые уже какое-то время работали с ILSVRC и его классами. Сначала мы думали выложить это на AMT. Потом думали нанять платных студентов-бакалавров. Затем я организовал «вечеринку разметки» с интенсивным трудом только среди (экспертных разметчиков) в нашей лаборатории. Потом я разработал модифицированный интерфейс, использующий предсказания GoogLeNet, чтобы сократить число категорий с 1000 до примерно 100. Всё равно было слишком сложно — люди продолжали пропускать категории и получали ошибку в диапазоне 13-15%. В итоге я понял, что чтобы хоть как-то приблизиться к GoogLeNet, эффективнее всего было сесть и пройти мучительно долгий процесс обучения и последующую кропотливую разметку самому.
Это заняло время. В итоге я обучился на 500 валидационных изображениях, а затем переключился на тестовый набор из 1500 изображений. Разметка шла со скоростью примерно одно изображение в минуту, но со временем замедлялась. Мне нравились только первые ~200, а остальное я делал только #радинауки. (В итоге мы уговорили ещё одного эксперта-разметчика потратить несколько часов на аннотации, но он успел разметить только 280 изображений, с меньшим обучением, и получил около 12%). Распределение времени разметки было сильно бимодальным: некоторые изображения легко узнаваемы, а некоторые (например, тонкие различия пород собак, птиц или обезьян) могут требовать нескольких минут сосредоточенных усилий. Я очень хорошо научился определять породы собак.
Оно того стоило. На выборке изображений, с которыми я работал, ошибка классификации GoogLeNet оказалась 6,8% (ошибка на полном тестовом наборе из 100 000 изображений составляет 6,7%). Моя собственная ошибка в итоге составила 5,1%, примерно на 1,7% лучше. Если прогнать расчёты статистической значимости (то есть сравнить две пропорции с помощью Z-теста) при нулевой гипотезе об их равенстве, получается одностороннее p-значение 0,022. Иными словами, результат статистически значим по относительно общепринятому порогу 0,05. Наконец, я нашёл этот опыт довольно поучительным: увидев так много изображений, проблем и предсказаний ConvNet, начинаешь хорошо понимать виды ошибок модели.
Моя ошибка оказалась 5,1% против ошибки GoogLeNet в 6,8%. Разрыв всё ещё есть, его надо закрыть (и не только).
Анализ ошибок
Мы исследовали как человеческие ошибки, так и ошибки GoogLeNet, чтобы понять типичные виды ошибок и как они соотносятся. Анализ и выводы ниже получены конкретно из предсказаний GoogLeNet, но я подозреваю, что многие из тех же ошибок могут присутствовать и в других методах. Позвольте мне скопировать анализ из нашей статьи об ILSVRC:
Типы ошибок, которым подвержены и GoogLeNet, и человек:
Несколько объектов. И GoogLeNet, и люди испытывают трудности с изображениями, содержащими несколько классов ILSVRC (обычно намного больше пяти), без явного указания, какой объект является центральным для изображения. Эта ошибка присутствует только в задаче классификации, поскольку каждое изображение должно иметь ровно одну правильную метку. В сумме мы относим к этой категории 24 (24%) ошибок GoogLeNet и 12 (16%) ошибок человека. Стоит отметить, что у людей здесь может быть небольшое преимущество, так как иногда легко определить наиболее значимый объект на изображении. Неправильные аннотации. Мы обнаружили, что примерно 5 из 1500 изображений (0,3%) были неверно размечены в эталонных метках. Это вносит примерно одинаковое количество ошибок как для людей, так и для GoogLeNet.
Типы ошибок, которым GoogLeNet подвержен больше, чем человек:
Маленький или тонкий объект. GoogLeNet испытывает трудности с распознаванием объектов, которые очень малы или тонки на изображении, даже если этот объект — единственный. Примеры включают изображение стоящего человека в солнцезащитных очках, человека, держащего перо в руке, или маленького муравья на стебле цветка. Мы оцениваем, что примерно 22 (21%) ошибок GoogLeNet попадают в эту категорию, в то время как у людей таких ошибок нет вовсе. Иными словами, в нашей выборке изображений ни одно изображение не было неправильно размечено человеком из-за того, что он не смог идентифицировать очень маленький или тонкий объект. Это расхождение объясняется тем, что человек может очень эффективно использовать контекст и аффордансы, чтобы точно вывести идентичность маленьких объектов (например, несколько едва заметных перьев около руки человека, которые с большой вероятностью принадлежат в основном скрытому перу-чернильнице). Фильтры изображений. Многие люди обрабатывают свои фотографии фильтрами, которые искажают распределение контраста и цвета изображения. Мы обнаружили, что 13 (13%) изображений, которые GoogLeNet классифицировал неверно, содержали фильтр. Таким образом, мы предполагаем, что GoogLeNet не очень устойчив к таким искажениям. Для сравнения, только одно изображение среди человеческих ошибок содержало фильтр, но мы не относим источник этой ошибки к фильтру. Абстрактные представления. Мы обнаружили, что GoogLeNet испытывает трудности с изображениями, изображающими интересующие объекты в абстрактной форме, такими как 3D-визуализации, картины, эскизы, плюшевые игрушки или статуи. Пример — абстрактная форма банта, нарисованная источником света при ночной фотографии, 3D-визуализация робота-скорпиона или тень на земле от ребёнка на качелях. Мы относим примерно 6 (6%) ошибок GoogLeNet к этому типу и считаем, что люди значительно более устойчивы — в нашей выборке таких ошибок не наблюдалось. Прочие источники. Дополнительные источники ошибок, встречающиеся относительно редко, включают экстремальные крупные планы частей объекта, нестандартные ракурсы, например повёрнутые изображения, изображения, для распознавания которых очень помогло бы умение читать текст (например, безликая упаковка с надписью «face powder»), объекты с сильной окклюзией и изображения, представляющие коллаж из нескольких изображений. В целом мы обнаружили, что люди более устойчивы ко всем этим типам ошибок.
Типы ошибок, которым человек подвержен больше, чем GoogLeNet:
Тонкое (fine-grained) распознавание. Мы обнаружили, что люди заметно хуже справляются с тонким распознаванием (например, собак, обезьян, змей, птиц), даже когда они хорошо видны. Чтобы понять сложность, учтите, что в датасете более 120 пород собак. Мы оцениваем, что 28 (37%) человеческих ошибок попадают в эту категорию, тогда как у GoogLeNet таких ошибок только 7 (7%). Незнание классов. Разметчик иногда может не знать, что эталонный класс присутствует в списке вариантов меток. Когда на класс ILSVRC указывают, обычно становится ясно, что метка применима к изображению. Эти ошибки становятся всё реже по мере того, как разметчик лучше знакомится с классами ILSVRC. Примерно 18 (24%) человеческих ошибок попадают в эту категорию. Недостаточно обучающих данных. Напомним, что разметчику показывается только 13 примеров каждого класса под именем категории. Однако 13 изображений не всегда достаточно, чтобы адекватно передать допустимые вариации класса. Например, коричневую собаку можно ошибочно отвергнуть как «Kelpie», если все примеры «Kelpie» показывают собаку с чёрной шерстью. Однако если бы было показано больше 13 изображений, стало бы ясно, что «Kelpie» может иметь и коричневую шерсть. Примерно 4 (5%) человеческих ошибок попадают в эту категорию.
Выводы
Мы исследовали производительность обученных человеческих разметчиков на выборке до 1500 изображений тестового набора ILSVRC. Наши результаты показывают, что обученный человеческий разметчик способен превзойти лучшую модель (GoogLeNet) примерно на 1,7% (p = 0,022).
Мы ожидаем, что некоторые источники ошибок можно относительно легко устранить (например, устойчивость к фильтрам, поворотам, коллажам, эффективное рассуждение на нескольких масштабах), в то время как другие могут оказаться более неуловимыми (например, идентификация абстрактных представлений объектов). С другой стороны, большая часть человеческих ошибок происходит из тонко-различимых категорий и незнания классов. Мы ожидаем, что первое можно значительно уменьшить с помощью экспертных разметчиков по тонкому распознаванию, а второе — за счёт большей практики и большего знакомства с классами ILSVRC.
Очевидно, что вскоре люди смогут превосходить state-of-the-art модели классификации изображений только ценой значительных усилий, экспертизы и времени. Один интересный вопрос для будущего исследования — как точность компьютера соотносится с точностью человека на более сложных задачах понимания изображений.
«Очевидно, что вскоре люди смогут превосходить state-of-the-art модели классификации изображений только ценой значительных усилий, экспертизы и времени».
Что касается моего личного вывода из этого недельного упражнения, я должен сказать, что качественно я был очень впечатлён производительностью ConvNet. Если изображение не содержит каких-либо нерегулярностей или сложных деталей, ConvNet уверенно и устойчиво предсказывает правильную метку. Если вам хочется приключений, попробуйте интерфейс разметки сами и сделайте собственные выводы. Я могу обещать, что вы получите интересные качественные инсайты о том, где state-of-the-art компьютерное зрение работает, где оно ошибается и как.
РЕДАКТУРА: дополнительные обсуждения:
ОБНОВЛЕНИЕ:
На странице воркшопа ImageNet теперь есть ссылки на слайды и видео многих команд. Статья о GoogLeNet на arXiv описывает детали их архитектуры.
ОБНОВЛЕНИЕ 2 (14 февраля 2015):
С тех пор появилось несколько заявленных результатов, превосходящих мою ошибку 5,1% на ImageNet. Я поражён таким стремительным прогрессом. В то же время, я думаю, нам следует помнить о следующем:
Человеческая точность — это не точка. Она лежит на кривой компромисса.
Мы обмениваем человеческие усилия и экспертизу на уровень ошибки: я — одна точка на этой кривой с 5,1%. Мои коллеги по лаборатории, почти без обучения и с меньшим терпением, — другая точка, с ошибкой вплоть до 15%. И, основываясь на некоторых расчётах, учитывающих конкретные виды моих ошибок и предположениях о том, какие из них проще исправить, не лишено оснований предположить, что ансамбль очень преданных делу экспертных человеческих разметчиков мог бы снизить эту цифру до 3%, при этом около 2% является оптимистичной нижней границей ошибки. Я знаю, что это не так захватывающе, как иметь одно число, но это правильный способ об этом думать. Подробнее в моём недавнем посте в Google+.