Этим летом мне посчастливилось пройти стажировку по машинному обучению в оборонной компании Centauri, где я работал над интерпретируемостью и компьютерным зрением. Я разработал инструмент визуализации функций с OpenCV, Tensorflow и Keras для YOLOv3, модели обнаружения возражений в реальном времени, построенной с использованием глубокой сверточной сети и магистральной сети Darknet, для классификации и определения местоположения спутников на геостационарной орбите. Я реализовал различные алгоритмы обратного распространения ошибки, основанные на очень увлекательных исследованиях машинного обучения, для создания карт значимости.

Введение

Несколько государственных обсерваторий по всему миру используют телескопы для периодического сбора изображений космоса с целью отслеживания местоположения различных спутников на геостационарной орбите (более 22 000 миль от экватора Земли). Развернутое по всему миру программное обеспечение для компьютерного зрения Astrograph в настоящее время используется для идентификации и определения местоположения спутников по данным, полученным с помощью телескопов, в режиме, близком к реальному времени. Однако при определенных условиях Astrograph испытывает трудности с правильным обнаружением спутников. Например, когда присутствует значительный свет вспышки, такой как от автомобильной фары, Astrograph может неверно предсказать присутствие спутников, когда их нет. Чтобы повысить точность классификации и локализации спутников, разрабатывается модель машинного обучения для более точной классификации и определения местоположения неразрешенных спутников на изображениях с телескопов слежения. Одна из оцениваемых моделей - это YOLOv3, современный алгоритм обнаружения объектов в реальном времени, который использует глубокую сверточную сеть для классификации и определения местоположения объектов на изображениях. Этот проект использует SatNet, маркированный набор данных спутниковых изображений, записанных Astrograph, для обучения модели YOLOv3. Мой проект включает в себя визуализацию некоторых характеристик этой сверточной нейронной сети и интерпретацию результатов модели, чтобы понять, как модель обнаруживает и определяет местонахождение спутников. Это делается с помощью визуализации функций, которая включает в себя интеграцию различных методов обратного распространения и вычисления градиентов для создания карт значимости и определения того, как наше входное пространство пикселей влияет на прогнозы нашей сети.

Что такое YOLOv3?

В этом проекте мы использовали YOLOv3, алгоритм обнаружения объектов в реальном времени, который использует полностью сверточную сеть вместе с магистралью Darknet, которая выполняет извлечение функций. Что делает YOLOv3 таким увлекательным, так это не только его показатели производительности для обнаружения объектов в реальном времени, но и новая улучшенная архитектура по сравнению с YOLOv2 и другими моделями обнаружения объектов, такими как SSD или Faster R-CNN. YOLOv3 может похвастаться остаточным пропуском соединений и повышающей дискретизацией, а также возможностью выполнять обнаружение в трех разных масштабах, в которых мы устанавливаем якорные рамки для каждого масштаба малых, средних и крупных обнаружений. Каждая привязка содержит ограничивающую рамку, которая характеризуется координатами, оценкой объектности и оценкой класса. Чтобы выполнить обнаружение, мы применяем ядра обнаружения 1x1 на картах функций, учитывая различные указанные масштабы (размеры якоря).

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

В очень кратком обзоре того, как работает модель YOLOv3, сначала она принимает входное изображение и проходит через несколько уровней свертки, пакетной нормализации и дырявого ReLU. В пределах первых 81 слоя изображение подвергается субдискретизации, затем увеличивается до двух размеров, а затем объединяется с выводом слоя 36 (это наше первое пропускаемое соединение). Этот шаг повторяется до тех пор, пока мы не достигнем уровня прогнозирования и не выполним подавление без максимума для генерации наших окончательных результатов.

Прогнозы объектности генерируются путем вычисления IoU (пересечения по объединению) наземного блока истинности и предсказанного ограничивающего прямоугольника, который измеряет точность предсказания с учетом наземной истины. Для генерации окончательных прогнозов YOLOv3 использует подавление, отличное от максимального, сначала сортируя прогнозы по оценкам достоверности и выводя окна прогнозов, которые соответствуют или превышают указанный порог достоверности.

Что такое интерпретируемость?

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

Без интерпретируемости мы могли бы предположить, что наша модель изучает функции, не связанные с тем, для чего они были созданы. Прекрасный пример этого - когда армия США построила нейронную сеть для обнаружения замаскированных вражеских танков на изображениях. Их набор данных содержал изображения замаскированных танков на деревьях и изображения деревьев без танков. Армия США использовала контролируемое обучение, чтобы обучить модель классифицировать, были ли замаскированные танки на каком-либо изображении. Однако, когда эта модель была протестирована Пентагоном, они поняли, что модель не может быть обобщена на новые данные изображения. Благодаря возможности интерпретации, они вскоре поняли, что изображения с танками были сделаны в пасмурные дни, а изображения без танков - в солнечные дни. В результате модель отличила ночь от дня на изображениях, независимо от того, были ли на снимках замаскированные танки или нет.

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

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

Приближаясь к моему проекту

Подходя к возможным решениям для визуализации модели YOLOv3 + Darknet, я сначала рассмотрел стандартные методы визуализации, такие как визуализация весов на определенных слоях. Однако это оказалось бесполезным, поскольку объекты, которые пытается обнаружить наша модель, настолько малы, что визуализированные веса выглядят как пиксели случайного цвета. Следующим методом, который я рассмотрел, был t-SNE, нелинейный метод уменьшения размерности и визуализации пространства векторов признаков. С помощью t-SNE мы можем генерировать кластеры данных, которые соответствуют аналогичным классам. Важно отметить, что этот метод применяется к разнообразному набору данных, например к изображениям в наборе данных ImageNet или даже в Обработке естественного языка для кластеризации тональности слов, таких как Word2Vec. Метод t-SNE также оказался неподходящим для этого проекта, учитывая, что наш набор данных изображений не был разнообразным: более 100 000 изображений спутников на геостационарной орбите в оттенках серого.

В конце концов, я решил реализовать некоторые методы визуализации, которые относятся к визуализации функций.

Что такое визуализация функций?

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

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

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

А теперь самое интересное - реализованные методы визуализации функций

Простые «ванильные» градиенты

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

Интегрированные градиенты

Другой метод заметности на основе градиентов, Integrated Gradients, основанный на статье Аксиоматическая атрибуция для глубоких сетей, вычисляет интеграл градиентов по единой шкале с различной плотностью пикселей для измерения того, насколько влиятельные пиксели влияют на нашу оценку предсказания класса. . Для этого проекта мы начинаем с базового изображения со всеми значениями пикселей, равными 0 (черное изображение), и равномерно масштабируем это базовое изображение по входному изображению, при этом равномерно масштабируя эти интенсивности пикселей, альфа. Этот прямолинейный путь, по сравнению с большинством нелинейных методов атрибуции, используется для измерения того, как изменяется отдельный признак, путем вычисления суммы Римана для аппроксимации интеграла этих значений. Обратите внимание, что значение шагов по умолчанию установлено на 20, но в документе выше отмечается, что от 20 до 300 шагов являются наиболее подходящими для интегрального приближения.

Управляемое обратное распространение

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

Визуальное обратное распространение

Этот метод, основанный на ценностях, как обсуждается в VisualBackProp: эффективная визуализация CNN, использует концепцию деконволюционной сети, разработанную в статье Мэтью Д. Цейлера и Роба Фергуса Визуализация и понимание сверточных сетей. Мотивация техники, описанной в статье VisualBackProp, заключается в интуиции, что, продвигаясь дальше по глубокой сверточной сети, мы теряем важную информацию. Чтобы противодействовать этой потере информации, VisualBackProp рассматривает выходные данные каждого сверточного слоя, карты функций, как точки, в которых модель хранит наиболее важную информацию. После одного прямого прохода мы используем деконволюционную сеть вместе с VisualBackProp, чтобы сопоставить карты характеристик последнего сверточного слоя с картами первых сверточных слоев. С помощью этого метода мы можем сохранить ключевую информацию о входных данных, поскольку мы смотрим на карты характеристик каждого сверточного слоя по всей сети, а не отображаем отдельный выходной слой обратно во входное пространство пикселей. Что касается технических деталей, то в качестве краткого обзора мы вычисляем среднее значение карт характеристик, следующих за каждым слоем LeakyReLU, затем используем деконволюцию для повышения дискретизации и масштабирования полученного продукта до размера карт характеристик предыдущего слоя. Это продолжается до тех пор, пока мы не достигнем пространства входных пикселей. Обратите внимание, что реализация, обсуждаемая в статье VisualBackProp, была изменена для YOLOv3, в которой я не только увеличиваю дискретизацию посредством деконволюции, но также уменьшаю дискретизацию через AveragePool2D, если сеть распространяется через слои Upsample2D.

Вывод

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

Следите за обновлениями, чтобы увидеть еще несколько (очень интересных) проектов компьютерного зрения, которые я готовлю!