Сверточная нейронная сеть использовалась для достижения современной классификации изображений [1], обнаружения объектов [2] и сегментации изображений [3] результатов [4]. Однако, когда это применяется к автономному вождению на практике, остается много проблем.

Проблема потери выходной информации CNN для автономного вождения

Одна из проблем заключается в том, что карта выходных характеристик CNN теряет определенную полезную информацию. Например, входное изображение имеет размер 320 x 320 x 3; после переадресации через несколько сверточных слоев и максимальных слоев пула CNN генерирует окончательную карту отклика признаков размером 10x10xN, где N — размер вектора признаков. Эта фильтрация помогает сохранить самые надежные активации. Это также экономит вычисления и использование памяти. Тем не менее, есть несколько технических компромиссов в отношении этой проблемы потери информации:

Компромисс при проектировании максимального слоя пула

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

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

Компромисс проектирования сверточных слоев

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

Одним из подходов к решению этой проблемы является использование Locally-Connected Layer. Локально-связанный слой похож на сверточный слой, к которому применяется банк фильтров, но каждое местоположение на карте объектов изучает свой набор фильтров. Поскольку разные области выровненного изображения имеют разную локальную статистику, предположение о пространственной стационарности свертки не может выполняться. Подробности реализации см. в [6].

Компромисс между размером восприимчивого поля и дизайном масштаба

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

  1. Пирамида изображений, пирамида фильтров, пирамида ссылок регрессии.
  2. R-CNN, быстрый R-CNN, более быстрый R-CNN.
  3. Модель внимания.
  4. Пространственная трансформаторная сеть.
  5. Пространственная сегментация экземпляров.
  6. Маска объекта.

Эта часть сообщения в блоге неполная. Он будет обновлен в ближайшее время…

CNN Inference Speed ​​Challenge для автономного вождения

Еще одной проблемой применения CNN для автономного вождения является скорость логического вывода. Например, если обнаружение транспортного средства или понимание пешехода не может быть выполнено в режиме реального времени, то эта задержка может привести к столкновению автономного транспортного средства с другим транспортным средством или пешеходом. Мы, конечно, хотим избежать этой ситуации. Существует два подхода к оптимизации для обработки в реальном времени. Алгоритмы можно перенести на GPU (см. Компромисс дизайна оптимизации CUDA для автономного вождения); другой — придумать инновационные алгоритмы машинного обучения для реального решения основных проблем. Документы Fast R-CNN [9] и Faster R-CNN [10] — два хороших справочника по оптимизации системы обнаружения объектов по скорости.

Ссылки

[1] Сегеди и др., Inception-v4, Inception-ResNet и влияние остаточных соединений на обучение

[2] Рен и др., Faster R-CNN: на пути к обнаружению объектов в реальном времени с сетями региональных предложений

[3] Дай и др., Семантическая сегментация с учетом экземпляров с помощью многозадачных сетевых каскадов

[4] http://mscoco.org/dataset/#detections-leaderboard

[5] Но и др., Обучение сети деконволюции для семантической сегментации

[6] Тейгман и др., DeepFace: преодоление разрыва с производительностью на уровне человека в верификации лица

[7] Серманет и др., OverFeat: комплексное распознавание, локализация и обнаружение с использованием сверточных сетей

[8] Фарабет и др., Изучение иерархических функций для маркировки сцен

[9] Росс, Fast R-CNN

[10] Рен и др., Faster R-CNN: на пути к обнаружению объектов в реальном времени с сетями региональных предложений