Введение

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

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

В этой статье вы узнаете, как разрабатывать глубокие нейронные сети (DNN) и обучать их классифицировать объекты на радиолокационных изображениях. Кроме того, вы узнаете, как использовать полууправляемую генерирующую состязательную сеть (SGAN) [1], которой требуется лишь небольшое количество помеченных данных для обучения классификатора DNN. Это важно при работе с наборами радиолокационных данных из-за нехватки больших обучающих наборов, в отличие от тех, которые доступны для изображений с камеры (например, I mageNet), которые помогли сделать компьютерное зрение повсеместным.

Как DNN (или, точнее, сверточные нейронные сети), так и SGAN, которые изначально были разработаны для классификации визуальных изображений, можно использовать с точки зрения архитектуры и методов обучения для использования в радиолокационных приложениях.

Набор данных

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

Набор данных представляет собой Python dict в форме:

{‘samples’: samples, ‘labels’: labels}

samples - это list из N образцов кортежей numpy.array проекций радара в форме:

[(xz_0, yz_0, xy_0), (xz_1, yz_1, xy_1),…,(xz_N, yz_N, xy_N)]

Где проекция радара - это максимальная мощность отраженного сигнала от сканированного целевого объекта в трехмерном пространстве, спроецированная на оси x, y и z. Эти двухмерные изображения обычно разрежены, поскольку проекция занимает небольшую часть отсканированного объема. Выборка, хранение и использование двухмерных проекций может быть более эффективным, чем использование трехмерных исходных данных напрямую.

labels - это list меток классов N numpy.array, соответствующих каждому образцу проекции радара в форме:

[class_label_0, class_label_1,…,class_label_N]

Прогнозы для типичного одиночного образца показаны на визуализации тепловой карты ниже. Красный указывает, где обратный сигнал наиболее сильный.

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

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

Модельные архитектуры

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

Все модели и соответствующее обучение были реализованы с использованием Keras API, высокоуровневого API TensorFlow в рамках проекта radar-ml.

Классификатор глубоких нейронных сетей (DNN)

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

Модель реализована модулем Python в файле dnn.py в репозитории radar-ml. Вы можете увидеть фрагмент кода, который определяет и компилирует модель ниже.

Полууправляемая генерирующая состязательная сеть (SGAN)

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

Генеративная состязательная сеть (GAN) - это архитектура, которая использует немаркированные наборы данных для обучения модели генератора изображений в сочетании с моделью дискриминатора изображений. В некоторых случаях вы можете использовать модель дискриминатора для разработки модели классификатора. Сети GAN использовались для генерации радиолокационных сигналов [4] и нашли широкое применение в приложениях компьютерного зрения [5].

Модель Semi-Supervised GAN (SGAN) является расширением архитектуры GAN, которая использует совместное обучение контролируемого дискриминатора, неконтролируемого дискриминатора и модели генератора. В этом проекте контролируемый дискриминатор используется в качестве модели классификации, которая обобщается на новые наборы данных, и модели генератора, которая дает реалистичные примеры радиолокационных проекций (используется только для проверки достоверности).

Архитектура контролируемого дискриминатора показана на рисунке ниже, и вы можете заметить, что она похожа на архитектуру DNN, показанную рядом, с некоторыми исключениями, включая использование LeakyReLU (Leaky Rectified Linear Unit) вместо ReLU, что является передовой практикой обучения GAN [7] . Модель включает уровни пакетной нормализации, чтобы способствовать сходимости обучения, что часто является проблемой при обучении GAN [6]. Неконтролируемый дискриминатор разделяет большинство слоев, за исключением конечных выходных слоев, и поэтому имеет очень похожую архитектуру. Выход контролируемого дискриминатора представляет собой плотный слой с активацией softmax, который формирует классификатор с тремя классами, в то время как модель без учителя принимает выходные данные контролируемой модели до активации softmax, а затем вычисляет нормализованную сумму экспоненциальных выходов [6].

Как контролируемая, так и неконтролируемая модели дискриминатора реализованы модулем Python в файле sgan.py в репозитории radar-ml. Фрагмент кода, который определяет и компилирует приведенную ниже модель.

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

Генератор и GAN реализованы модулем Python в файле sgan.py в репозитории radar-ml. Ниже приведен фрагмент кода, который определяет и компилирует модель.

Модельное обучение и результаты

DNN

DNN обучается методом tf.keras.Model class fit и реализуется модулем Python в файле dnn.py в репозитории radar-ml. Ниже приведен фрагмент кода обучающей функции. Не показаны шаги, необходимые для предварительной обработки и фильтрации данных.

Ниже приведены результаты типичного тренировочного пробега. Текущее состояние модели и набора данных позволяет получить точность набора для валидации от средних до высоких 80%. Требуется дополнительная работа для соответствия или превышения точности ~ 90%, полученной с помощью моделей SVM и логистической регрессии в предыдущей работе [8] [9]. Это будет в центре внимания будущих усилий.

SGAN

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

«Генеративные состязательные сети с Python», Джейсон Браунли, 2021 г.

Вы можете найти множество хороших работ и статей, которые помогут понять, как применять передовой опыт для обучения GAN. В частности, Джейсон Браунли опубликовал множество прагматичных статей и статей, которые могут оказаться экономящими время [7]. Часть этой работы была использована для определения метода обучения, который достаточно хорошо работал с моделями радаров и набором данных SGAN. Прочтите его статьи в Интернете и купите электронные книги, если вы серьезно относитесь к и применению машинного обучения.

Цикл обучения реализован модулем Python в файле sgan.py в репозитории radar-ml. Ниже приведен фрагмент цикла обучения, не показаны шаги, необходимые для предварительной обработки и фильтрации набора данных, а также несколько вспомогательных функций. Этот код основан на ссылке [7]. Обратите внимание, что модель дискриминатора обновляется с использованием 1,5 пакетов выборок, но модель генератора обновляется с использованием одного пакета выборок на каждой итерации.

Вы обнаружите, что результаты обучения будут варьироваться от запуска к запуску из-за стохастической природы GAN, поэтому лучше всего усреднять результаты по нескольким запускам. Хорошая тренировочная сессия будет иметь умеренные (~ 0,5) и относительно стабильные потери для неконтролируемого дискриминатора и генератора, в то время как контролируемый дискриминатор будет сходиться к очень низким потерям ( 95%) на обучающей выборке. Результаты точности набора для проверки обычно находятся в диапазоне от низких до высоких 70% с потерями около 1,2 при использовании только 50 контролируемых образцов на класс. Это обнадеживающий результат, но очевидно, что требуется больше работы по моделированию и сбору данных, чтобы получить точность проверки наравне с другими методами машинного обучения, которые использовались для этого набора данных, которые обычно составляли ~ 90% [8] [9]. Это будет целью будущей работы над этим проектом. Ниже представлены типичные результаты тренировок.

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

Выводы

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

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

использованная литература

  1. Полу-контролируемое обучение с генеративными состязательными сетями, 2016.
  2. Многовидовые сверточные нейронные сети для распознавания трехмерных форм, 2015.
  3. Многовидовая классификация со сверточными нейронными сетями, 2021 г.
  4. Генеративная состязательная сеть для генерации радиолокационных сигналов
    , 2019.
  5. Неконтролируемое обучение представлений с помощью глубоких сверточных генеративных состязательных сетей, 2016.
  6. Улучшенные методы обучения GAN, 2016.
  7. Генеративные состязательные сети с Python, 2021.
  8. Обучаем радар понимать дом, 2020.
  9. Использование стохастического градиентного спуска для обучения линейных классификаторов, 2020.