НЕЙРОННЫЕ СЕТИ В СФЕРЕ ОБЩЕСТВЕННОЙ БЕЗОПАСНОСТИ: РАСПОЗНАВАНИЕ И КЛАССИФИКАЦИЯ ХОЛОДНОГО И ОГНЕСТРЕЛЬНОГО ОРУЖИЯ - Студенческий научный форум

XI Международная студенческая научная конференция Студенческий научный форум - 2019

НЕЙРОННЫЕ СЕТИ В СФЕРЕ ОБЩЕСТВЕННОЙ БЕЗОПАСНОСТИ: РАСПОЗНАВАНИЕ И КЛАССИФИКАЦИЯ ХОЛОДНОГО И ОГНЕСТРЕЛЬНОГО ОРУЖИЯ

Баширов А.Н. 1, Воронова Л.И. 1
1МТУСИ
 Комментарии
Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке "Файлы работы" в формате PDF

Введение

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

Свёрточные нейронные сети завоевали популярность в компьютерном зрении из-за их экстраординарно хорошего качества работы на задачах классификации изображений. На сегодняшний день они являются одной из самых популярных архитектур в глубоком обучении [3].

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

Свёрточная нейронная сеть — это нейронная сеть, в которой вместо общей операции умножения на матрицу, по крайней мере в одном слое, используется свёртка [4].Свёртка – это операция над двумя функциями вещественного аргумента. К примеру, мы наблюдаем за положением морского судна с помощью лазерного датчика, который выдаёт единственное значение x(t), положение судна в момент t. Переменные xиtпринимают вещественные значения, то есть показания датчика в любые два момента времени могут различаться.Теперьпредположим, что датчик подвержен помехам. Для получения менее зашумлённой оценки положения судна, необходимо усреднить несколько результатов измерений. Для этого можно использовать весовую функцию w(a), где a – давность измерения. Применение такой операции усреднения в каждый момент времени, позволяет получить новую функцию, дающую сглаженную оценку положения судна: s(t) = ∫x(a)w(t - a)da.Эта операция называется свёрткой и обозначается звёздочкой: s(t) = (x w)(t).В терминологии свёрточных сетей первый аргумент (функция x) называется входом, а второй (функция w) – ядром. Выход именуется картой признаков [4].

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

В свёрточных нейронных сетях за слоем свёртки следует объединяющий слой, именуемый подвыборкой. Объединение может пониматься как метод выделения признаков, где берётся среднее или максимальное значение участка окрестных признаков и передаётся на следующий слой. Для создания архитектуры свёрточной сети необходимо сложить два и более слоёв в блоки, чередуя свёрточные и объединяющие слои, после чего соединить их с многослойным персептроном для выполнения классификации [3].

Рис. 1. Модель свёрточной нейронной сети [3]

Функция активации определяет выходное значение нейрона в зависимости от результата взвешенной суммы входов и порогового значения [5]:

Y = ∑(weight * input) + bias,

где Y - выходной сигнал нейрона, получаемый на выходе сумматора ∑ с произведением весов weight и входных данных input с добавлением узла смещения bias.

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

Функция SoftMax представляет собой обобщение логистической функции для многомерного случая. Используется для последнего слоя глубоких нейронных сетей в задачах классификации. Задаётся следующей формулой [6]:

где zi - значение на выходе из i-го нейрона до активации, а N - общее количество нейронов в слое.

Достоинство функции SoftMax в том, что она использует экспоненту. За счёт этого решается проблема с отрицательными выходными значениями, так как экспонента всегда положительна. Кроме того, экспонента значительно увеличивает большие значения. Если, к примеру, на выходе из нейрона единица, то экспонента равна 2.7, если 2 – экспонента равна 4.7, а если на выходе 4, то экспонента получается 54.6. Данную функцию активации удобно применять для задач классификации, поскольку она позволяет трактовать выходные значения нейронов как вероятность принадлежности данному классу, а также обеспечивает, чтобы только одно выходное значение было близко к единице за счёт применения экспоненты. Функция хорошо подходит для классификации с непересекающимися классами.

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

Архитектура нейронной сети

Архитектура разрабатываемой автором нейронной сети включает три каскада свёртки и подвыборки. Размер свёрточных ядер 3х3 (количество карт признаков – 32 и 64), размер подвыборки 2х2, используется выбор максимального значения (Max Pooling). Свёрточная часть сети предназначена для выделения характерных признаков в изображении.

На первом свёрточном слое содержится два слоя: 1-й - это внутренний слой, размер которого 64*64*3 - размер входного изображения, а второй слой - 62*62*32 - это то, что выдаёт первый свёрточный слой - 32 карты признаков размером 62*62 (размер на выходе меньше, поскольку с помощью свёртки мы не можем обработать края изображения). Вид карт признаков на этом свёрточном слое проиллюстрирован на рисунке 2:

Рис. 2. Вид карт признаков первого слоя свёртки

На рисунках выделены основные части пистолета, его правая верхняя часть проявлена жёлто-зелёным цветом.

На рисунке 3 представлен общий вид работы нейронной сети после первого свёрточного слоя:

Рис. 3. Работа первого слоя свёртки

Визуальное представление итогов работы нейронной сети на шестом слое отражено на рисунке 4:

Рис. 4. Одна из карт признаков 6-го слоя

Здесь мы получаем 64 карты признаков размером 12*12 точек, как показано на рисунке.

После свёрточной части идет полносвязная часть нейронной сети, которая отвечает за классификацию. Для этой цели используются два полносвязных слоя. На первом слое 64 нейрона, функция активации Relu. Затем слой Dropout, который используется для уменьшения переобучения. Выходной полносвязный слой включает всего 3 нейрона, что соответствует задаче нашей классификации. Функция активации на выходном слое softmax.

В качестве функции потерь (функции ошибки) используется перекрёстная энтропия, рассчитанная для применения в мультиклассовых случаях. Оптимизатор - стохастический градиентный спуск, идея которого состоит в том, что градиент — это математическое ожидание, и, следовательно, его можно оценить по небольшому множеству примеров. То есть на каждом шаге алгоритма можно взять мини-пакет (minibatch) или небольшую равномерную выборку из обучающего набора [4].

Оценку градиенту даёт выражение, в котором используются только примеры из мини-пакета. Затем алгоритм стохастического градиентного спуска следует в направлении градиента [4]:

где gградиент, L – потеря на одном примере L(x, y, θ).

Таким образом, слои разрабатываемой свёрточной нейронной сети с 1 по 6 используются для выделения важных признаков в изображении, а слои с 7 по 10 - для классификации.

Описание набора данных

Набор данных для нейронной сети составлен из 1635 изображений холодного и огнестрельного оружия (ножи, пистолеты и винтовки), загруженные из источников [8, 9]. Данные разделены на обучающий (1149 изображений – 70 %), валидационный (243 – 15 %) и тестовый (243 – 15 %) наборы.

Для препроцессинга и загрузки указанных изображений в модель нейронной сети применяется генератор Keras - «ImageDataGenerator», который позволяет автоматически загружать изображения с диска в память компьютера, преобразовывать их в необходимый дискретный вид и передавать в модель для обучения.

В целях подготовки данных для генераторов изображений Keras в папке с исходным кодом проекта создаётся каталог, в котором будут подкаталоги по количеству классов объектов. В нашем случае таких классов 3. Таким образом, создаются каталоги «gun», «knife», «rifle», в которых находятся соответствующие изображения названных предметов. Имена каталогов могут быть любыми. При обучении нейронной сети, генератор изображений Keras считывает изображения из всех 3 каталогов и автоматически готовит метки с правильными ответами. Пример изображений из наборов данных представлен на рис. 5:

Рис. 5. Пример изображений из набора данных

Результаты тестирования программы

Программа начинает свою работу с загрузки наборов данных. На этом шаге в нейронную сеть передаются три генератора: train_generator с данными для обучения, val_generator с данными для проверки и test_generator (тестовый набор). Обучение выполняется в течение 80 эпох.

Генераторы в Keras могут выдавать изображения бесконечно. После того, как изображения в каталоге заканчиваются, происходит переход в начало каталога и генератор начинает работать по новому кругу. В этой связи следует указать количество обращений к генератору на каждой эпохе обучения. Для этого используется параметры steps_per_epoch (данные для обучения) и validation_steps (данные для проверки). За одно обращение генератор выдает не одно изображение, а несколько, в соответствии с размером его мини-выборки (batch_size). Для того, чтобы рассчитать количество обращений к генератору, при котором мы сможем получить все изображения из набора данных по одному разу, количество изображений в наборе делим на размер мини-выборки.

Итоги работы нейронной сети на обучающем, валидационном и тестовом наборах данных представлены на рисунках 6, 7 и 8.

Рис. 6. Результаты работы нейронной сети на наборах данных

Рис. 7. Точность обучения на эпохах Рис. 8. Точность валидации на эпохах

На рисунках 7 и 8 видно, что при обучении точность увеличивается как на обучающем, так и на проверочном (валидационном) наборах данных. На обучающем наборе точность составила 89 %, на проверочном – 70 %, на тестовом – 79 %.

Классификация изображений

В качестве входного изображения для распознавания выбрано изображение, загруженное на жесткий диск компьютера из источника [9], не входящее в dataset (Рисунок 9).

Рис. 9. Тестовое изображение

Результаты классификации данного изображения представлены на рисунке 10.

Рис. 10. Результаты классификации тестового изображения

Алгоритм правильно распознал изображение, отнес его к классу «gun» (пистолет). На рисунке также отражено как нейронная сеть на 73 % определила, что в данном случае предмет на изображении относится к классу «пистолет», вероятность отнесения к другим двум классам 12 и 14 %.

Выводы

Несмотря на сравнительно небольшой объём обучающих данных разработанная свёрточная нейронная сеть способна с точностью около 75-80% правильно распознавать и классифицировать холодное или огнестрельное оружие на изображениях.

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

Список источников и литературы

Воронова Л.И., Воронов В.И. MachineLearning: регрессионные методы интеллектуального анализа данных: Учебное пособие / МТУСИ. – М., 2018. – 83 с.

Justin Lai, Sydney Maples, Stenford University. Developing a Real-Time Gun Detection Classifier. [Электронный ресурс]: режим доступа http://cs231n.stanford.edu/reports/2017/pdfs/716.pdf.

Рашка С. «Python и машинное обучение» / пер. с англ. А.В. Логунова. М.: ДМК Пресс, 2017. - 418 с.

Гудфеллоу Я., Бенджи И., Курвилль А. «Глубокое обучение» / пер. с англ. А.А. Слинкина. 2-ое изд., искр. - М.: ДМК Пресс, 2018. - 652 с.

Avinash Sharma V. Understanding Activation Functions in Neural Networks // The Theory Of Everything. [Электронный ресурс]: режим доступа https://medium.com/the-theory-of-everything/understanding-activation-functions-in-neural-networks-9491262884e0.

Соколинский Л.Б. Машинное обучение. Лекция № 5: Softmax. Кафедра системного программирования ЮУрГУ, 2018, 19 с.

Милютин И. Функции активации нейросети: сигмоида, линейная, ступенчатая, ReLu, than // Neurohive. [Электронный ресурс]: режим доступа https://neurohive.io/ru/osnovy-data-science/activation-functions/.

Набор обучающих данных. [Электронный ресурс]: режим доступа https://yandex.ru/images/search?text=оружие.

Набор обучающих данных. [Электронный ресурс]: режим доступа https://www.google.ru/search?q=оружие.

Просмотров работы: 66