Так что же такого сложного в проблеме ImageNet? Давайте начнем с просмотра данных. Данные для задачи классификации ImageNet были собраны с Flickr и других поисковых систем, вручную помечены людьми, при этом каждое изображение принадлежит одной из 1000 категорий / классов объектов. Распределение набора данных показано ниже в таблице.

К 2012 году в ImageNet было почти 1,3 миллиона обучающих изображений. Основная проблема такой крупномасштабной задачи классификации изображений - это разнообразие изображений. Здесь мы можем взглянуть на пару примеров этого.

Посмотрите изображение ниже. Слева мы видим несколько примеров изображений из другой задачи классификации изображений: PASCAL. В задании PASCAL было всего около 20 000 обучающих изображений и 20 категорий объектов. В этой задаче были довольно общие категории классов, такие как «птица», «собака» и «кошка», как показано ниже. Перейдите к вызову ImageNet, и это совершенно новая игра с мячом. Вместо того, чтобы иметь общий класс под названием «собака», который охватывает все виды собак, в ImageNet есть классы для каждого вида собак. Фактически, вместо категории «собаки» PASCAL в ImageNet есть 120 категорий для разных пород собак! Таким образом, любая модель / алгоритм, которые мы используем для этой задачи, должна быть способна обрабатывать эти очень мелкозернистые и конкретные классы, даже если они могут выглядеть очень похожими и их трудно отличить.

Говоря техническим языком, мы хотим максимизировать межклассовую изменчивость. Это означает, что мы хотим, чтобы два изображения, каждое из которых содержит разные виды птиц, сильно отличались от нашей модели, поскольку, хотя они оба являются птицами, в нашем наборе данных они относятся к разным категориям. Посмотрите на иллюстрацию ниже.

Еще одна интересная особенность ImageNet: объекты одного и того же класса могут выглядеть совершенно по-разному. Давайте посмотрим на изображения ниже. Двое слева относятся к классу «оранжевый», а двое справа - к классу «бильярдный стол». Тем не менее, каждая пара изображений выглядит по-разному! Как люди, мы можем видеть, что один апельсин разрезан, а другой нет; мы также можем видеть, что одно изображение бильярдного стола увеличено, а другое - нет. Это называется внутриклассовой изменчивостью. Мы хотим минимизировать эту изменчивость, поскольку хотим, чтобы два изображения одного и того же класса выглядели очень похоже на нашу модель глубокого обучения, то есть количественно.

Теперь, когда эти проблемы классификации изображений известны, давайте рассмотрим, как глубокое обучение помогло добиться больших успехов в решении этой задачи.

Быстрый прогресс глубокого обучения для классификации изображений

Практически каждый год, начиная с 2012 года, дает нам большие успехи в разработке моделей глубокого обучения для задачи классификации изображений. Из-за большого объема и сложных данных задача ImageNet стала основным ориентиром для измерения прогресса. Здесь мы собираемся взглянуть на прогресс глубокого обучения по этой задаче и на некоторые из основных архитектур, которые сделали этот прогресс возможным.

Тот, с которого все началось: AlexNet

Еще в 2012 году в NIPS была опубликована статья из Университета Торонто, и она меня шокировала. Эта статья называлась Классификация ImageNet с глубокими сверточными сетями . Она стала одной из самых влиятельных статей в этой области после того, как в конкурсе ImageNet количество ошибок снизилось почти на 50%, что был беспрецедентным прогрессом в то время. Архитектура нейронной сети для AlexNet из статьи показана выше.

В статье предлагается использовать глубокую сверточную нейронную сеть (CNN) для задачи классификации изображений. Это было относительно просто по сравнению с теми, которые используются сегодня. Основным вкладом, внесенным в этот документ, были:

  • Первый, кто успешно использовал глубокую классификацию изображений большого размера. Это стало возможным благодаря большим объемам помеченных данных из ImageNet, а также обучению модели с использованием параллельные вычисления на двух GPU.
  • Они использовали ReLU для не - линейности активации функций, обнаружив, что выполняются лучшее и уменьшенное время тренировки по сравнению с функцией tanh. Нелинейность ReLU теперь имеет тенденцию быть функцией активации по умолчанию для глубоких сетей.
  • Они использовали методы увеличения данных, которые состояли из перевода изображений, горизонтальных отражений и вычитания среднего. Эти методы сегодня очень широко используются для решения многих задач компьютерного зрения.
  • Они использовали выпадающие слои, чтобы решить проблему чрезмерного - соответствия обучающим данным.
  • Предлагаемый ими стиль последовательной свертки и объединения слоев, за которым следуют полностью - подключенные слои в конце по-прежнему являются основой многих современных сетей.

По сути, AlexNet установил планку, предоставив базовые и стандартные методы использования CNN для задач компьютерного зрения!

Давайте углубимся: VGGNet

В 2014 году вышла статья VGGNet Очень глубокие сверточные нейронные сети для распознавания крупномасштабных изображений, в которой были расширены идеи использования глубоких сетей с множеством сверток и ReLU. Архитектура нейронной сети для VGGNet из статьи показана выше. Их основная идея заключалась в том, что для получения высокой точности не нужны никакие причудливые приемы. Просто глубокая сеть с множеством маленьких сверток 3x3 и нелинейностей сделает свое дело! Эти стопки повторяющихся блоков одинакового размера на рисунке выше являются прямым результатом использования стопок 3x3! Основные возможности VGGNets:

  • Использование только фильтров размером 3x3 вместо 11x11, используемых в AlextNet. Они показывают, что две последовательные свертки 3x3 имеют эквивалентное рецептивное поле или «поле зрения» (то есть пиксели, которые он видит) как одна свертка 5x5; аналогично, три последовательных свертки 3x3 эквивалентны одной 7x7. Преимущество этого состоит в том, что он имитирует фильтр большего размера, сохраняя при этом преимущества фильтра меньшего размера. Первое преимущество меньших фильтров - уменьшение количества параметров. Вторая - возможность использовать функцию ReLU между каждой сверткой, что вносит в сеть больше не - линейности, что делает решение функция более различительная.
  • По мере того как пространственный размер входных объемов на каждом слое уменьшается (в результате объединения слоев), глубина объемов увеличивается. Идея заключается в том, что по мере уменьшения пространственной информации (от понижающей дискретизации до максимального объединения) ее следует кодировать как более различающие функции, которые можно использовать для получения точных и высокодискриминационных классификация. Таким образом, количество карт признаков увеличивается с глубиной, чтобы можно было зафиксировать эти особенности и использовать их для классификации.
  • Он представил новый вид увеличения данных: дрожание масштаба.
  • Построенная модель с помощью набора инструментов Caffe. На данный момент библиотеки глубокого обучения становятся все более популярными.

Еще глубже: GoogLeNet и модуль Inception

Архитектура GoogLeNet была первой, которая действительно решила проблему вычислительных ресурсов наряду с мульти - масштабированием . обработка в статье Углубляясь в свертки. По мере того, как мы продолжаем углублять наши классификационные сети, мы доходим до точки, когда используем много памяти. Кроме того, в прошлом предлагались различные размеры вычислительных фильтров: от 1x1 до 11x11; как решить какой? Начальный модуль и GoogLeNet решают все эти проблемы с помощью следующих вкладов:

  • За счет использования сверток 1x1 перед каждыми 3x3 и 5x5, начальный модуль уменьшает количество функций карт, проходящих через каждый слой, тем самым сокращая вычисления и потребление памяти!
  • В начальном модуле используются свертки 1x1, 3x3 и 5x5, параллельные. Идея заключалась в том, чтобы позволить сети решить, через обучение, какая информация будет изучена и использована. Он также поддерживает много - масштабную обработку: модель может восстанавливать как локальные особенности через меньшие свертки и высокие абстрактные функции с большими свертками. Потрясающие!
  • GoogLeNet была одной из первых моделей, которая представила идею о том, что слои CNN не всегда должны располагаться последовательно. Авторы статьи показали, что вы также можете увеличить ширину сети для повышения производительности, а не только для увеличения глубины.

Переход с помощью ярлыка: ResNet

С момента первой публикации в 2015 году статьи Глубокое остаточное обучение для распознавания изображений ResNets значительно повысила точность решения многих задач компьютерного зрения. Архитектура ResNet была первой, которая прошла в ImageNet по производительности на человеческом уровне, и их основной вклад в виде остаточного обучения часто используется по умолчанию во многих современных сетях. Cегодня:

  • Выяснилось, что наивное наложение слоев, чтобы сделать сеть очень глубокой, не всегда помогает и даже может усугубить ситуацию.
  • Чтобы решить вышеупомянутую проблему, они вводят остаточное обучение с пропуском соединений. Идея состоит в том, что при использовании дополнительного пропуска соединения в качестве ярлыка глубокие слои получают прямой доступ к особенности из предыдущих слоев. Это позволяет более легко распространять информацию о функциях по сети. Это также помогает при обучении, поскольку градиенты также могут более эффективно распространяться в обратном направлении.
  • Первая «ультра глубокая» сеть, в которой обычно используется более 100–200 слоев.

Быстрые пути до крайности: DenseNet

Быстрые соединения были доведены до крайности с появлением DenseNets из статьи Плотно связанные сверточные сети. DenseNets расширяют идею быстрых подключений, но имеют гораздо более плотное подключение, чем ResNet:

  • DenseNets соединяют каждый слой с каждым другим слоем с прямой связью. Это позволяет каждому слою использовать все карты объектов всех предыдущих слоев в качестве входных данных, а его собственные карты объектов используются в качестве входы во все последующие слои.
  • Это делается посредством конкатенации, а не добавления, используемого в ResNets, так что необработанные объекты передаются напрямую через слои.
  • Показано, что производительность выше, чем у ResNets. DenseNets помогают решить проблему исчезающего градиента, усилить распространение признаков, поощрить повторное использование признаков и существенно сократить количество параметров.

Это основные архитектуры, которые сформировали основу прогресса в классификации изображений за последние несколько лет. Достигнут большой прогресс, и это интересно наблюдать, поскольку это позволяет использовать эту новую технологию для решения многих реальных проблем. Остается только один вопрос… ..

Куда мы отправимся отсюда

Как мы только что рассмотрели, исследования в области глубокого обучения для классификации изображений стремительно развиваются! Мы сделали огромные шаги в улучшении методов для этой задачи, превзойдя даже человеческий уровень. Глубокие нейронные сети теперь широко используются во многих компаниях для классификации изображений и даже являются основой для многих новых технологий.

Приятно видеть весь этот прогресс, но мы всегда должны стремиться к совершенствованию. По-прежнему существует ряд проблем с моделями глубокого обучения в классификации изображений. Это проблемы, которые необходимо решить, если мы хотим двигаться вперед. Здесь я рассмотрю некоторые из них, которые я считаю важными и которые исследователи активно пытаются решить:

От обучения с учителем к обучению без учителя

В настоящее время большинство методов глубокого обучения, применяемых к задачам компьютерного зрения, контролируются. Это означает, что нам нужны большие объемы помеченных обучающих данных. Получение этих данных утомительно и дорого. Подумайте об этом: задача ImageNet содержала 1,3 миллиона обучающих примеров, и это было только для 1000 различных категорий! Человеку нужно получить все данные, просмотреть каждое изображение и пометить его; это много ручной работы!

В большинстве случаев, когда компания хочет применить сеть классификации изображений для своего конкретного приложения, ей приходится использовать трансферное обучение для точной настройки предварительно обученной сети ImageNet. Чтобы выполнить эту тонкую настройку, им все равно нужно собрать много собственных данных и пометить их; утомительно и дорого, если не сказать больше.

Исследователи активно прилагают усилия и добиваются прогресса в решении этой проблемы. Все больше и больше делается над такими вещами, как быстрое и эффективное перенос, обучение, полу - контролируемое обучение и одно - быстрое обучение. Мы, вероятно, не сразу перейдем к обучению без учителя, но исследование этих методов - серьезный шаг в правильном направлении.

Защита от наших противников

Растущая популярность использования генеративных состязательных сетей (GAN) выявила новую проблему для классификации изображений: состязательные Изображения. В двух словах состязательные изображения - это изображения, категория класса которых кажется очевидной для человека, но вызывает массовые сбои в глубокой сети. Посмотрите изображение выше. С незначительным искажением (по-видимому), глубокая сеть классифицирует изображение от панды до гиббона!

Нам, людям, кажется очевидным, что изображение все еще является пандой, но по какой-то причине оно приводит к тому, что глубокая сеть не справляется со своей задачей. Это может быть очень опасно в реальных - мировых приложениях: что, если ваш беспилотный автомобиль не распознает пешеходов и вместо этого наезжает на них ? Отчасти проблема может быть связана с тем, что мы не полностью понимаем, что происходит внутри наших сетей. В любом случае над этой сложной проблемой активно работают исследователи.

Ускорение процесса

Большая часть прогресса в глубоком обучении была достигнута за счет улучшения аппаратного обеспечения, в частности графических процессоров. Графические процессоры обеспечивают высокоскоростную обработку вычислений, которые могут выполняться в параллельном режиме. Глубокие сети требуют тонны операций умножения и сложения из-за матричных операций; Графические процессоры отлично справляются с этими операциями. Это было фантастически для прогресса, но у нас нет графических процессоров повсюду!

Многие современные сети, включая описанные выше, работают с логическим выводом с разумной скоростью только на высокопроизводительном графическом процессоре. Мобильные устройства представляют собой огромный рынок, и важно, чтобы были предприняты шаги для обслуживания этого рынка. Кроме того, по мере того, как сети становятся все глубже и глубже, им, как правило, требуется больше памяти, что ограничивает возможность запуска сетей еще большему количеству устройств!

Исследования в этой области в последнее время значительно расширились. MobileNets - это семейство архитектур, ставшее популярным для запуска глубоких сетей непосредственно на мобильных устройствах. Они используют другой стиль сверток, чтобы уменьшить потребление памяти и время вывода.

Завершая все это

Готово! Мы увидели, что такого сложного в классификации изображений, и проанализировали удивительный прогресс, достигнутый в этой области с помощью глубокого обучения. Мы также увидели некоторые из проблем, которые ждут впереди. Но решение этих проблем с помощью новых достижений науки и техники - вот что так захватывает в технологиях.

Любите учиться?

Следуйте за мной в твиттере, где я публикую все о новейших и величайших достижениях искусственного интеллекта, технологий и науки! Присоединяйтесь и ко мне в LinkedIn!