В современном мире, нейросети применяют повсеместно для нахождения логики и предсказывания, в результате анализа данных, поступивших в сеть. На протяжении многих лет, поднимался вопрос о распознавании объектов, а именно о методах классификации объекта в определенно взятый класс. С целью обеспечения безопасности, интерес человечества к технологиям обработки видеоизображения в режиме реального времени растет. Что и можно считать определенным толчком к практическоиму применению данных методов с целью обеспечения безопасности.
В данный момент, наиболее распространенными являются следующие методы:
-
метод, основанный на классификации по сходству с эталонами, называемый корреляционным;
-
методы детерминированного и статистического подхода, которые называются признаковыми или синтаксическими.
Рассмотрим каждый метод подробнее. Корреляционный метод работает по следующему алгоритму: входное пространство зрения сканируется полным перебором. Достоинством данного метода является помехоустойчивость. А главным недостатком можно считать сложность в реализации. Применяется данный метод в современных системах слежения и навигации.
Синтаксический и признаковый метод работает на основе выбранных признаков, притом признаки одного класса не должны существенно различаться, в то время как необходимо, чтобы признаки разных классов различались радикально. Главным преимуществом является простота в разработке. А главным недостатком можно назвать сложность обработки признаков для классификации объектов.
Главной задачей распознавания динамического объекта, который движется по произвольной траектории, является прогнозирование параметров траектории и восстановление изображения. При реализации методов классификации образов принято рассматривать физическую модель восприятия изображений. Нужно учитывать, что при наблюдении двух объектов с угловым расстоянием α, которое меньше одной угловой минуты, имеет тенденцию сливаться в один объект. Это нам позволит определить оптимальный размер объекта для успешной классификации.
Например, используя метод ключевых точек, мы получим формулу:
где minl – минимальное расстояние между самыми ближайшими точками;
L – расстояние до объекта;
tgα – тангенс углового расстояния.
В данной формуле tgα будет рассчитываться следующим образом:
В данной работе был рассмотрен пример использования alwaysAI для машинного обучения. Для его реализации будем использовать GitHub файл с нейросетью для классификации динамичных объектов для автономного вождения. Сначала необходимо подготовить видеозапись для классификации, будем классифицировать движущиеся и статические объекты на улице. Однако в этом случае нам нужна гораздо более подробные сведения о точном местонахождении пешеходов и велосипедистов при обнаружении объектов, поэтому мы будем использовать метод семантической сегментацией, в которой классификация выполняется попиксельно, а не с помощью рамок.
Удаление пешеходов и велосипедистов из видео
В этой работе будет использоваться модель компьютерного зрения enet для сегментации пешеходов и велосипедистов в каждом кадре видео, а затем классифицировать и выводить результаты для дальнейших действий в зависимости от местоположения пешеходов и велосипедистов. Чтобы упростить работу, мы использовать детекторы для редактирования выходного видео, удаляя пешеходов и велосипедистов из видео.
Сначала необходимо выбрать видео и поместить его в каталог приложения. Сделать это можно с помощью данного фрагмента кода:
Листинг 1 – фрагмент кода программы
Затем мы можем запустить приложение из GitHub, чтобы проанализировать, насколько хорошо оно классифицирует пешеходов и велосипедистов. После запуска приложения и запуска видео получим следующее (рисунок 1):
Рисунок 1 – Пример работы
Как можно заметить, модель enet успешно обнаруживает некоторую часть людей, но, все еще неправильно определяет оставшуюся часть людей и классифицирует велосипеды как мотоциклы, поэтому нам нужно будет предпринять дополнительные шаги, чтобы исправить эту проблему.
Рассмотрим лейблы для модели, нас интересуют ярлыки «Человек», «Водитель» и «Велосипед». Ниже замаскируем только пешеходов и велосипедистов.
def main ():
…
label_to_mask = ['Person', 'Rider', 'Bicycle']
print (“Labels to mask:n{}n”.format(labels_to_mask))
Листинг 2 – Маскировка классов
Видим, что классификация проходит успешнее (рисунок 2).
Рисунок 2 – Пример классификации после маскировки
Чтобы более четко видеть изображение и маску, мы можем разделить их, чтобы мы могли видеть их отдельно вместо того, чтобы видеть маску, наложенную на изображение видеоряда. Для этого мы просто объединим кадр и маску и отправим объединенные изображения как одно изображение в Streamer. Выглядеть это будет следующим образом:
mask = semantic_segmentation.build_image_mask(filtered_class_map)
combined = np.concatenate((frame, mask), axis=0)
streamer.send_data(combined, text)
Листинг 3 – Объединение видеоряда и меток
Выглядеть это будет следующим образом (рисунок 3):
Рисунок 3 – Объединение меток и изображения
Так как происходит пакетная обработка видео, на самом деле нет необходимости отображать все на экране. Мы можем обработать каждый кадр отдельно и выводить новый видеофайл на Streamer. Для сохранения видеоклипа воспользуемся классом VideoWriter. Также есть необходимость в создании флага, чтобы мы могли легко включать и отключать процесс обработки.
Листинг 4 – обработка видеоряда и создание флага
В результате выполненной работы были описаны возможности alwaysAI для изучения технологий машинного обучения и нейронных сетей и приведен пример классификации видеоряда на основе простой сегментации изображения, маскирования определенных классов и выполнения действий на основе этих масок.
Библиографический список
-
Kotlars P., Kotulski Z. On application of neural networks for S-box design, in: P.S. Szczepaniak, J.Kacprzyk, A.Niewiadomski, ed.Advances in Web Intelligence, AWIC 2005, LNCS 3528. Р. 243-248. Berlin 2005.
-
Arvandi M., Wu S. Sadeghian A., Melek W.W., Wougang I., Symmetric Copher Design Using Recurent Neural Networks // International Joint Conference on Neural Networks. 2006 P. 2039 – 2046.