Предложен алгоритм определения направления движения группы людей на видео с помощью оптического потока. Для вычисления оптического потока используется сверточная нейронная сеть LiteFlowNet3, затем вычисляется интегральный оптический поток и строится карта векторов смещения. Построив векторное поле смещений пикселей двух изображений (кадров видео), можно получить полную картину перемещения пикселей и всех объектов кадров, которые они составляют.
Введение
Интеллектуальные системы видеонаблюдения в настоящее время получили широкое распространение. Автоматическое распознавание и отслеживание передвижения людей на видео являются нормой. Однако все больше внимания стало уделяться вопросам понимания поведения толпы (группы) людей, что является гораздо более сложной задачей.
Традиционный способ для определения поведения группы людей заключается в отделении объектов интереса от фона и отслеживании их движения в отдельности. Однако при движении группы данный метод невозможно использовать из-за возникающих многочисленных окклюзий. В последние годы для решения этой задачи применяется множество методов, например оптический поток, сверточная нейронная сеть (СНС), модель социальной силы и т. д.
В предыдущих работах было предложено вычислять интегральный оптический поток и карты движения для определения поведения толпы. Вычисление оптического потока – смещения каждого пикселя кадра – достаточно сложное длительное вычисление, поэтому в последние годы появились попытки использовать для него нейронные сети. Одна из самых известных сетей – LiteFlowNet и ее модернизации. В докладе для вычислений базового оптического потока использовалась сеть LiteFlowNet3, основанная на предшествующей ей LiteFlowNet2 с включением модуляции объема стоимости и деформации поля потока для дальнейшего повышения точности вычисления потока.
В настоящем докладе предложен алгоритм оценки движения групп людей на видео на основании вычисления интегрального оптического потока нейронной сетью и построения карты векторов смещения. Построив векторное поле смещений пикселей двух изображений (кадров видео), можно получить полную картину перемещения пикселей и всех объектов кадров, которые они составляют. Это позволяет более точно определять движение группы людей, направления их движения или статичность.
1. Предлагаемый алгоритм оценки движения группы людей
Алгоритм оценки движения людей на основе вычисления оптического потока и карт векторов движения применяется к видеопоследовательностям, полученным стационарными камерами наблюдения в общественных местах, и заключается в следующем.
На первом этапе вычисляется оптический поток, под которым понимается дис- кретная аппроксимация движения в трехмерной сцене, осуществляемая путем проектирования скоростей трехмерных поверхностей на плоскость изображения или визуального сенсора. Двумерное поле скоростей, которым является оптический поток, используется для описания движения в сцене. Оптический поток оценивает перемещение пикселей от кадра к кадру и визуально представляется в виде векторов смещения для каждой точки изображения. Для этого находится такой сдвиг, чтобы точке на исходном кадре соответствовала точка на втором кадре, который и определяет длину и направление векторов. В качестве характеристик точки изображения, как правило, используется ее уровень яркости. Полученная информация об оптическом потоке (скорости и направлении движения соседних точек) используется для пространственной сегментации движущихся объектов.
Для вычисления оптического потока использовалась СНС LiteFlowNet3 с включением модуляции объема стоимости и деформации поля потока для дальнейшего повышения его точности.
Общий принцип работы СНС при вычислении оптического потока между кадрами:
– извлечение пирамидальных признаков – преобразование изображения в пирамиду многоуровневых признаков высокого уровня;
– деформация признаков. Чтобы облегчить вывод о потоках с большим смещением, высокоуровневые признаки второго изображения искажаются по отношению к высокоуровневому пространству первого изображения с помощью слоя искажения при- знаков (f-warp) на каждом уровне пирамиды признаков;
– вывод каскадного потока. Сопоставление функций высокого уровня дает грубую оценку потока. Поэтому далее происходит уточнение грубого потока, чтобы дополнительно улучшить его точность;
– регуляция потока. Расчетное поле потока может быть уязвимым для выбросов, если используется только точность данных. Поэтому необходимо упорядочить поле по- тока, для чего используется слой локальной свертки.
Для формирования векторного поля строится сетка и отображаются векторы сме- щений только тех пикселей, которых расположены в узлах построенной сетки. В силу данного неудобства и невозможности получить полную картину о смещении всех пикселей кадра чаще используется такой способ представления потока, как визуализация цветом.
Исходя из взаимного расположения наиболее схожих пикселей на соседних кад- рах, определяется вектор движения пикселей. Необходимо отметить, что найденный вектор движения для пикселя может не соответствовать реальному его движению, т. е. будет ошибочным. Наличие ошибочных векторов не позволит выполнить качественную оценку движения. Ошибочные векторы могут возникать из-за размера области поиска схожести пикселей и блоков. Кроме этого, наличие шумов и внешних факторов может не позволить правильно определить схожие пиксели или же приведет к неверному решению, в результате чего будет значительное отличие полученного вектора движения от соседних. В результате формируется карта (поле) движения для пикселей или блоков, в которой векторами показываются направления смещения каждого пикселя или их отсутствие при нулевом векторе.
Однако если промежуток времени между двумя последовательными кадрами очень мал, то сложно отделить движение объектов переднего плана от хаотического движения фона. Применение интегрального оптического потока вместо классического позволяет уменьшить влияние фона на оценку движения объекта и получить область интенсивного движения.
Для уменьшения влияния фона, избавления от шума, а также более четкого выде- ления границ движимых объектов, состоящих из смещающихся со временем пикселей, строится интегральный оптический поток. Интегральный оптический поток – это результат накопления оптического потока для нескольких последовательных кадров. В результате такого накопления уменьшаются амплитуды векторов смещения фона, при этом амплитуды смещающихся пикселей, а соответственно, и состоящих из них объектов, увеличиваются.
Основываясь на интегральном оптическом потоке, можно определить и построить карты движения, позволяющие описывать движения блоков в каждой позиции сов- местно, т. е. дать статистический анализ количества и направления движения блоков в направлении каждой позиции или от нее.
В работе введены карты движения, позволяющие формализовать типы движения группы объектов. Эти карты были использованы для анализа и описания движений на уровне пикселей и областей. Для карт движения на уровне пикселей (блоков) существует два способа рассмотрения траекторий движения. Первый способ – рассмотреть только начальную и конечную позиции. Второй способ заключается в дальнейшем рассмотрении позиций, которые прошли по траектории движения. Когда используется первый путь, траектория движения называется простой траекторией движения; когда используется второй путь, траектория движения называется траекторией интерполяционного движения. Поскольку карты движения на уровне региона создаются на основе карт движения на уровне блоков, они также будут зависеть от того, какой путь выбран.
2. Результаты экспериментов
На рис. 1 показано построение оптического потока между кадрами видео, на котором две толпы людей движутся в противоположных направлениях (использовалось видео с перекрестка с большим скоплением людей в час пик).
Рис. 1. Кадр 1 (а) и кадр 2 (б) видео с переходом
В результате построения оптического потока LiteFlowNet3 и его визуализации (рис. 2) можно четко выделить два направления движения, изображенные соответ- ственно красным и синим цветами, а также малоподвижный, почти статичный преимущественно светлый фон (дорога, деревья, почти неподвижные автомобили и др.) с отдельными вкраплениями различных светлых оттенков разных цветов, но границы объектов размыты и их трудно определить четко.
Рис. 2. Визуализация оптического потока между кадрами 1 и 2 (а) и кадрами 1 и 6 (б)
При визуализации интегрального оптического потока между шестью последовательными кадрами (рис. 2, б) однозначно определяется белый фон и четко очерчены две толпы: одна движется вправо и ее направление определено красным цветом, другая движется влево и ее направление выделено синими оттенками.
Для визуализации направлений векторов потока была выбрана плотность пикселей – отношение пикселей-узлов сетки ко всему числу пикселей. В каждом случае выбирается свое значение для параметра, но важно учитывать, что большая плотность делает векторы маленькими (соответственно, теряются данные) и покрывает очень большой процент кадра. В то же время, если для параметра плотности указать маленькое значение, это приведет к большой точности, но потенциально также повлечет потерю групп пикселей (объектов) и флуктуации. В данном примере были выбраны два значения – 15 (рис. 3) и 5 % (рис. 4).
Рис. 3. Визуализация интегрального оптического потока векторами с сеткой плотностью 15 % между кадрами 1–6
Рис. 4. Визуализация интегрального оптического потока векторами с сеткой плотностью 5 % между кадрами 1–6
Далее на основании данного параметра была построена сетка, в каждом узле которой изображается вектор интегрального потока, относящийся к данной точке. Сами векторы изображены как красные отрезки, направления которых можно определить по началу вектора – зеленой точке. Таким образом, вектор начинается в зеленой точке (начало вектора, точка сетки). Если красный отрезок левее точки, то он направлен влево, если правее точки – вправо, выше – вверх и т. д. В рассматриваемых примерах толпы людей движутся во встречных направлениях и достаточно интенсивно, быстро, так как векторы имеют достаточно большие модули.
В используемом для анализа движения толпы видео векторы смещения очень большие по модулю (в силу скорости движения объектов), из-за чего на изображениях рис. 3 накладывались друг на друга, что не позволяло определить как сами векторы, так и их направления, так как начала векторов (зеленые точки) закрываются красными линиями направлений векторов.
Для решения проблемы накладывания векторов друг на друга была использована стандартизация и выбрана плотность 5 %. Определялся самый большой по модулю вектор интегрального потока, его визуальная длина приводилась к длине, равной половине расстояния между соседними узлами сетки. Длина изображения остальных векторов изменялась пропорционально длине самого большого вектора. В результате параметрической стандартизации получилось вписать каждый вектор в свой квадрат сетки и избежать наложения векторов одинаковых направлений (рис. 4).
Таким образом, с помощью визуализации векторов можно определить как направление смещений, так и области смещения – границы толпы, но данная граница не очень точная в силу того, что построена на основании сетки, где теряются данные. Для изображения границ движимых объектов лучше использовать визуализацию цветом.
Также с определением поведения толпы, направлением ее движения и соотноше- ния направлений движения нескольких толп, подгрупп могут помочь карты движения. Карта с вектором в каждой позиции, указывающим суммарное движение пикселей, движущихся к соответствующей позиции, называется комплексной картой движения в сторону конкретной позиции (ICM-карта, in-pixel comprehensive motion map). Карта с вектором в каждой позиции, указывающим суммарное движение пикселей, удаляющихся от соответствующей позиции, называется комплексной картой движения из данной позиции (OCM-карта, out-pixel comprehensive motion map). По картам можно также подтвердить направление движения толп навстречу друг другу. Направления векторов на ICM (рис. 5, а) и OCM (рис. 5, б) соответственно в одной точке противоположны, что также подчеркивается цветом: там, где на ICM красный цвет, на OCM – синий, и наоборот. Черный цвет на ICM- и OCM-картах означает отсутствие движения пикселей или их незначительное смещение. Также стоит отметить, что чем ярче цвет на картах, тем больше интенсивность выхода/входа пикселей в области.
Рис. 5. Визуализация ICM-карты (а) и OCM-карты (б)
Заключение
Проведенные исследования показали, что с помощью карт движения и потока можно различать группы людей и любые объекты, направления их движения или статичность, а также отношения групп, объектов направления: параллельное (движение в одном направлении), противоположное (движение поперек друг друга или просто в противоположные направления), перпендикулярное. Использование нейронной сети позволяет более точно и быстро рассчитывать оптический поток и более точно определять области движения групп людей. Вычисление интегрального оптического потока позволяет избавиться от шума и одновременно получить более точные границы движущихся объектов и визуализацию направлений их движения.
Предлагаемый подход дает возможность определить интенсивность движения от- дельных групп людей: где вектор смещения больше или же соответственно цвет более яркий, там смещение пикселей больше, движение пешеходов интенсивнее, а где изображение вектора меньше, а также его цветовая визуализация тусклее, там люди и составляющие их пиксели движутся медленно, хотя и направления движения, а соответственно и цвет, совпадают с соседними. Также визуализация с помощью отображения векторов интегрального оптического потока может накладываться прямо на кадр и явно показывать, из какой точки пиксель смещается, в каком направлении и с какой интенсивностью пропорционально длине изображения вектора. С помощью изменения параметров сетки (плотности) и стандартизации длины полученных векторов предоставлена возможность анализировать направление, интенсивность и характер движения как целой толпы, так и отдельных ее подгрупп, объектов – людей, выделенных на основании групп векторов, близких по длине и направлению.
Однако сетку и стандартизацию векторов следует подбирать под конкретный слу- чай и настраивать в зависимости от цели: если нужно определить более точно границы толпы, выделить подгруппы, то сетку лучше делать более мелкой, а чтобы показать интенсивность смещения и сравнить ее между подгруппами и отдельными участниками толпы, то сетку лучше сделать с меньшей плотностью узлов, но тогда потенциально могут размываться границы толпы и теряться ее объекты.
Используя стандартизацию векторов, можно сохранить данные и пропорционально изобразить смещение, но если в кадре есть очень быстро движущиеся пиксели и очень медленные в сравнении с ними (но не фон, а именно движимые объекты), то в результате стандартизации менее быстрые элементы толпы и целые группы становятся менее заметными на фоне больших векторов смещений.