В предыдущих главах мы рассмотрели широкий спектр сценариев использования, в которых компьютерное зрение (CV) может играть решающую роль в бизнесе. Кроме того, мы обсудили основные элементы, из которых строятся современные алгоритмы. В этой главе мы обсудим наиболее распространенные архитектуры, используемые для задачи классификации изображений. Ниже краткое изложение того, что будет дальше:

  1. AlexNet
  2. VGG16
  3. Начало
  4. ResNet
  5. Начало версии 4
  6. Начало ResNet
  7. MobileNet

AlexNet, с чего все началось:

В 1998 году Ян Лекун разработал LeNet-5 для распознавания рукописных цифр и ожидания их появления. Архитектура выглядит следующим образом:

Эта архитектура состоит из 2 наборов сверточных и средних слоев пула, за которыми следуют 2 полностью связанных (FC) уровня и softmax классификатор. Сравнивая модель LeCun с AlexNet ниже, мы видим, что они очень похожи. AlexNet состоит из 5 сверточных слоев, за которыми следуют 3 полностью связанных слоя. Это может показаться небольшой разницей, но если LeNet имеет 60 000 параметров, AlexNet содержит колоссальные 60 миллионов.

Кроме того, как показано в документе с использованием ReLU для нелинейности вместо функции tanh или сигмоида, скорость обучения была намного выше (до 6 раз). Это связано с тем, что производная сигмоида становится очень маленькой в ​​области насыщения, и поэтому обновления весов почти исчезают, что создает проблему исчезающего градиента.

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

VGG16

Несмотря на то, что VGG16 не впечатляет своей глубиной по сравнению с другими будущими архитектурами, он дал старт волне «чем глубже, тем лучше»).

Oxford Visual Geometry Group предложила эту архитектуру на конкурсе ImageNet ILSVRC 2014. Он отличается от AlexNet заменой фильтров большого размера ядра (соответственно 11 и 5 в первом и втором сверточном слое) на несколько фильтров 3x3, установленных один за другим. Это имеет важное значение для данного воспринимающего поля, которым является эффективный размер области входного изображения, от которого зависит выход. Объединение нескольких ядер меньшего размера предпочтительнее одного ядра большего размера, потому что несколько нелинейных уровней увеличивают глубину сети, что приводит к более изучению сложных функций с меньшими затратами.

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

GoogleNet и начало

На дворе 2014 год, и к настоящему времени многие архитектуры CNN набирали обороты в соревнованиях, в которых они последовательно выигрывали. Старые методы глубоких нейронных сетей оживали и снова и снова доказывали свою стойкость. Google, будучи Google, был заинтересован в развертывании этих моделей для своих целей, но сначала они должны были придумать способ уменьшить вычислительную нагрузку на глубокие нейронные сети при одновременном обеспечении высочайшей производительности, что имеет смысл, поскольку пропускная способность учитывается при облачном развертывании.

Как упоминалось в статье, где все шли глубже, Google активно использовал новые методы, чтобы раздвинуть границы. А теперь пристегните ремни безопасности для саги Начало!

Начало v1

Глядя на бумагу, сразу понимаем, что это совсем другой зверь по сравнению со своим предшественником:

  • использует свертку 1x1
  • глобальный средний пул в конце вместо слоев FC
  • введение Начального модуля

Для одного входа он одновременно свертывается с фильтрами разных размеров и максимальным количеством в пул, что приводит к более широкой »модели, а не« более глубокой ». Это похоже на вычислительное самоубийство, не так ли? Ага, это так! Отсюда наивный вариант. Ниже мы видим, что авторы ограничивают количество входных каналов, добавляя дополнительную свертку 1x1 перед свертками 3x3 и 5x5. . Также интересно отметить свертку 1x1 после модуля максимального пула. Вывод состоит в том, что свертки 1 × 1 используются в качестве модуля уменьшения размеров, чтобы уменьшить вычислительные узкие места, что приводит к увеличению глубины и ширины.

Ниже мы можем полюбоваться этим зверем Inception во всей его красе. Блоки Inception содержат вышеупомянутый модуль Inception с соответствующим уменьшением размеров. Осталось только обсудить мистическую Нормализацию локального отклика (LRN), объединение глобального среднего значения и вспомогательный классификатор. Как сказано здесь: … LRN реализует форму бокового торможения, вдохновленную типом реальных нейронов, создавая конкуренцию за большую активность среди выходов нейронов, вычисленных с использованием разных ядер. На обычном языке это означает, что LRN уменьшает ответы, которые являются одинаково большими для окрестности, и делают большую активацию более выраженной в пределах окрестности.

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

С помощью модели Inception мы можем назвать это глубокой сетью с твердыми убеждениями, и, как и в любой глубокой сети, проблема исчезающего градиента таится поблизости.

Для борьбы с исчезающими градиентами авторы ввели вспомогательные классификаторы (AC), которые по существу применяли softmax к выходам двух из начальных модулей и вычисляли вспомогательные потери над теми же ярлыками. Затем эти дополнительные потери добавляются к общим потерям с весом 0,3. Важно понимать, что кондиционеры используются только во время тренировки.

Последняя свежая концепция в этом фестивале новинок - это блок Global Average Pooling (GAP) почти в конце модели. Ранее использовались уровни FC, что означало, что на этом уровне все входы были просто подключены к каждому выходному узлу.

Мы можем рассматривать GAP как крайний тип уменьшения размеров, когда тензор с размерами h × w × d уменьшается до размеров 1 × 1 × д. Это происходит путем простого усреднения каждой карты объектов h × w. Как описано в разделе 3.2 статьи, он предлагает 3 преимущества:

  • GAP по сравнению с FC более естественен для структуры свертки, обеспечивая соответствие между картами функций и категориями. Таким образом, карты характеристик можно легко интерпретировать как категории карты достоверности.
  • Нет необходимости в параметрах для оптимизации GAP, что позволяет избежать переобучения, поскольку известно, что уровни FC склонны к переобучению.
  • Суммирует пространственную информацию, поэтому она более устойчива к пространственным перемещениям входных данных.

Начало v2 и v3:

В феврале 2015 года та же группа исследователей из Google представила концепцию пакетной нормализации (BN) в архитектуре Inception.

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

Это не помешало команде Google представить в декабре 2015 года этот документ, который содержит еще один набор обновлений первоначальной архитектуры Inception. Первым конкретным улучшением была факторизация свертки с фильтрами большого размера. Это означает, что фильтр 5x5 можно разложить на 2 последовательных фильтра 3x3. Вычислительный выигрыш составляет (2 * (3x3)) / (5x5) или 27,8%.

Для сообразительных из вас эта факторизация, конечно, может быть применена к нашим фильтрам 3x3, используя так называемые асимметричные свертки:

Это означает, что свертка 3x3 может состоять из свертки 1x3 и 3x1. Опять же, это многоуровневое решение дешевле на 33%. Применение обоих методов факторизации даст нам следующий модуль Inception:

ResNet

ResNet, которая является аббревиатурой от Deep Residual Network, попала в центр внимания вместе с AlexNet в конкурсе по классификации LSVRC2012, продвигая CV и глубокое обучение в эру искусственного интеллекта, как теперь известно. Многие исследователи, охваченные новым raison de vivre, погрузились в секреты ResNet с целью раскрыть его секретные соусы и предложить улучшения.

*** Ах, кстати! Помните Начало? Конечно, знаешь, как ты мог забыть? Что ж, после этого ребенка будет еще немного Inception. ***

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

  • насыщение точности
  • снижение точности

Решение состоит в том, чтобы добавить так называемые ярлыки соединений. Исследователи обнаружили, что применение установки загружало слой с выходными данными предыдущих последовательных сверточных слоев, и соответствующий обходной вход имел большой потенциал. Фактически, этого «простого» понимания было достаточно, чтобы обучить сети с более чем 1000 слоями!

Элегантная простота и неоспоримая производительность позволили лучше понять ResNets и ANN в целом:

Inception v4 и Inception-ResNet

Начало v4

Когда исследователи Microsoft опубликовали свои выводы ResNet, Google последовал их примеру с Inception v4:

Как мы видим выше, команда приложила много усилий, чтобы получить более общую и упрощенную архитектуру. К сожалению, как мы увидим, Inception совсем не симпатичен с точки зрения его внутренней работы, тем более, из-за отсутствия объяснений со стороны авторов относительно архитектурного выбора. Входное изображение сначала проходит через стержень.

Затем входной сигнал подается в блок Inception A. Для ясности ниже вы можете сравнить различные блоки Inception:

Мы видим, что все блоки используют вышеупомянутую парадигму уменьшения размерности с помощью этих переходов 1x1. Причина в том, что даже некоторые свертки «5x5 поверх сверточного слоя с большим количеством фильтров» быстро становятся дорогостоящими. 'Свертки 1x1 используются для вычисления сокращений перед более дорогостоящими свертками. Говоря о сокращениях, ниже мы находим:

Начало-ResNet

Как следует из названия, исследователи ИИ взяли лучшее из обоих миров с точки зрения архитектурного дизайна и добавили аспект ResNet в архитектуру Inception. Ниже мы видим, что, добавляя соединение быстрого доступа параллельно с модулем, похожим на Inception, и суммируя этот результат, можно получить гибрид обоих. В частности, ниже мы наблюдаем Inception-Resnet v2, который отличается от Inception-Resnet v1 только большим количеством гиперпараметров.

Что касается редукционных блоков, A-блок идентичен A-блоку Inception v4, в то время как между B-блоками обнаружено сходство.

Сравнивая исходную архитектуру Inception v4 с ее аналогом ResNet, мы видим (ниже), что добавление быстрых соединений приводит к более глубокой модели. Это имеет два немедленных эффекта:

  • Inception-ResNet v1 / v2 вычислительно похож на Inception v3 / v4
  • Модели Inception-ResNet обеспечивают более высокую точность в более низкие эпохи

MobileNet

MobileNet v1

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

Ниже мы можем оценить прямолинейность и простоту архитектуры.

После сверточного слоя с шагом 2 мы находим 3 мобильных блока, которые содержат следующие слои:

  • глубинный слой
  • точечный слой
  • глубинный слой с шагом 2
  • точечный слой

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

С точки зрения производительности MobileNet (4 миллиона параметров) примерно в 3 раза быстрее, чем Inception (24 миллиона параметров), и в 10 раз быстрее, чем VGGNet-16 (138 миллионов параметров). На современном смартфоне MobileNet может работать со скоростью 20 FPS с точностью ImageNet 70,6%.

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

MobileNet v2

В апреле 2018 были представлены следующие концепции улучшения MobileNet v1:

  • остаточные связи
  • слои узких мест

Остатки, как объяснялось ранее, помогают градиентам гораздо глубже проникнуть в сеть.

Ниже мы видим, что последовательность точечных и глубинных сверток все еще присутствует. Изменяется только цель точечной свертки. Если для MobileNet v1 целью поточечной свертки было либо сохранить количество каналов одинаковым, либо удвоить их, то в MobileNet v2 поточечная операция преследует две разные цели.

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

Когда изображение попадает в этот строительный блок, оно сначала расширяется с точки зрения количества каналов. К этому расширенному набору каналов мы применяем глубинную свертку, которая затем сжимается до меньшего набора каналов. Если этот способ работы звучит знакомо, это потому, что это так. Эта идея также широко используется в семье Inception.

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

Вы можете спросить, почему это работает? Эти расширения и проекции выполняются с помощью обучаемых сверточных слоев. Это означает, что модель может научиться лучше (де) сжимать данные на каждом этапе в сети.

С точки зрения производительности MobileNet v2 (3,5 миллиона параметров) превосходит MobileNet v1 (4,2 миллиона параметров) по каждому методу оценки.

Заключение

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

В следующей главе мы обсудим основы обнаружения объектов. Если вам не терпится обучить свой собственный Классификатор изображений, посетите Overture, где наша платформа компьютерного зрения находится в вашем распоряжении, чтобы удовлетворить все ваши потребности: от автоматизированного обучения до развертываний, чтобы получать действенные отчеты и аналитические данные.