Сегментация данных с видеокамеры

    Введение

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

    Разметка данных

    Данный шаг в реализации сегментации кадров видеопотока один из наиболее трудозатратных с точки зрения работы человека.

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

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

    Рис. 1 Программа разметки кадров видеопотока
    Рис. 1 Программа разметки кадров видеопотока

    Тренировка нейросети для сегментации изображений

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

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

    Использование натренированной сети для сегментации изображений

    Последний шаг, это использование натренированной сети. Рассмотрим результат тренировки на 4 кадрах видеопотока (да, да, да ... выборка очень маленькая, но задача факультативная, чтобы посмотреть как работает, а не создание массового продукта) и 60 эпох тренировки используя архитектуру сети DeepLab v3+ (основанная на ResNet-18). Результат приведен на Рис. 2.

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

    Рис. 2 Использование быстронатреннированной нейросети для сегментации изображений
    Рис. 2 Использование быстронатреннированной нейросети для сегментации изображений

    Использование результатов сегментации

    Данную камеру можно использовать в качестве анализатора пробок на дороге, для этого можно создать маску (Рис. 3 и 4), в пределах которой анализируется количество присутствующих машин.

    Рис. 3 Создание маски для интересующего участка дороги
    Рис. 3 Создание маски для интересующего участка дороги
    Рис. 4 Созданная маска интересующего участка дороги
    Рис. 4 Созданная маска интересующего участка дороги

    Таким образом, нам необходимо сегментировать изображение только на интересующем участке (Рис. 5 и 6).

    Рис. 6 Сегментация интересующего участка дороги
    Рис. 6 Сегментация интересующего участка дороги

    Для упрощения задачи подсчета количества автомобилей, можно просто считать количество пикселей дороги и автомобилей, и по процентному соотношению выставлять бальное значение индекса загруженности (Рис. 7 и 9). Дополнительно рассмотрим случай когда дорога сильно загружена (Рис. 8).

    В случае когда дорога свободна процент загруженности составил 3%, а когда дорога загружена процент загруженности составил 54%. Это связано с тем что автомобили вблизи камеры имеют большее количество пикселей, чем автомобили вдали от камеры. Для решения этой задачи, необходимо ввести веса пикселей, пиксели вблизи должны иметь меньший вес, чем пиксели в дали. Таким образом получится довольно простой и довольно качественный детектор загруженности дороги.

    Рис. 7 Процентное соотношение площади автомобилей к площади дороги и ее элементов составляет ~3%
    Рис. 7 Процентное соотношение площади автомобилей к площади дороги и ее элементов составляет ~3%
    Рис. 8 Анализ загруженности дороги в загруженное время
    Рис. 8 Анализ загруженности дороги в загруженное время
    Рис. 9 Процентное соотношение площади автомобилей к площади дороги и ее элементов составляет ~54%
    Рис. 9 Процентное соотношение площади автомобилей к площади дороги и ее элементов составляет ~54%

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

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

    Вывод

    В настоящее время создавать какие-либо системы анализа и наблюдения не так сложно как может показаться, в данной схеме наиболее сложная и трудозатратная часть работы это создание обучающей выборки. Скорее всего в ближайшее время появятся сервисы (возможно они уже есть, если есть напишите в комментарии), где будут нанимать сотрудников для создания обучающих выборок наподобие Яндекс.Еда и Яндекс.Такси, где люди сидя дома будут зарабатывать в свободное время. Зато небольшие компании смогут размещать задание и за относительно небольшую сумму денег, они смогут создавать огромные тестовые выборки и получать наиболее качественные нейросети для сегментации и классификации данных. Ну и учитывая что занейросетить можно все что угодно, то я боюсь представить какие интересные вещи будут появляться, когда обучающие выборки будут создаваться очень быстро. Просто когда обучающие выборки создает один человек, время ее создания может растянуться на неделю, или даже на месяцы, а когда будет вариант распаралелить на сотню, или тысячи человек, тогда обучающие выборки будут создаваться за день, а то и менее.

    P.S. Если кто знает, каким софтом можно максимально просто записывать видеопоток с ютуб стрима?) Просто камеры пишут данные в циклический буфер (последние 12 часов) в виде ютуб стрима, таким образом формируется видеонаблюдение, где каждый житель дома может просмотреть последние 12 часов.

    Комментарии 38

      +1

      Но зачем так сложно? Сегментировать полосу, выделять вручную, считать пиксели — когда можно просто натренировать детектор автомобилей (и/или взять готовый) и получать количество напрямую?

        –1

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

          0

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


          Собственно, иначе бы вообще не работали решения по распознаванию (включая AR) на мобильных телефонах — камеры и положения у всех телефонов разные, а обучает модель разработчик.

            –1

            Если покажете результат на фотографии из статьи к вам бы было меньше недоверия)

              +1
              Amazon Rekognition

                0
                Ну я так понимаю теперь вы понимаете про то что он работает плохо?) автомобили вдалеке не распознаются, правильно?) пришли к тому что я и писал ранее.
                  +1
                  Ну я так понимаю теперь вы понимаете про то что он работает плохо?

                  Нет, не понимаю.


                  Вы хотите сказать, что вот в этом вашем примере они распознались?


                  image

                    0
                    Бинго!) смотрите на количество белой области у маски и на фото выше) единственное процентное соотношение может смутить, но если добавить веса все будет классно)
                      +2
                      количество белой области у маски и на фото выше

                      Неа. У вас там ничего не распозналось. Неизвестно, какой там объект — машина или листик на камеру прилип.

                        0
                        Я же для первого примера кучу скринов сделал поэтапно, а во втором случае только 2 вставил, так вот там результат авто и не авто)
                          +1
                          Я же для первого примера кучу скринов сделал поэтапно, а во втором случае только 2 вставил, так вот там результат авто и не авто)

                          Не вижу. Вижу черно-белую маску (т.е. два класса). Попробуйте банально закрыть участок картинки чем-нибудь и перераспознать. Или светофор на переходе добавить.

                    +2

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


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

                      –1
                      Я хотел всего лишь показать, что все делается легко и быстро) и за один вечер можно получить громкое название инженер глубокого обучения)
                        +1
                        за один вечер можно получить громкое название инженер глубокого обучения

                        Получить — нельзя. Можно себе написать.


                        Ну так написать можно вообще все что угодно, это несложно. Для этого и вечер не нужен, достаточно пары минут.

                          +4

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


                          В частности, за понимание того, где искать prior art, знать какие ресурсы доступны для решения разных классов задач, иметь обзор области и оценивать сложность (понимать, чем решение за пять минут выдающее на одних и тех же картинках какую-то мазню отличается от решения, которое будет выдавать нужное в рабочих условиях).


                          А сейчас это как если кому-то показали hello world, он скопировал, но заменил на Hello Vasya и начал рассуждать о том, что "всё в принципе понятно, можно стать программистом за один вечер"

                            –2

                            Напишите то что сделали вы) а то я чувствую ваше эго задели)

                              +3

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


                              А вашему успеху с сегментацией рад, не у всех так легко заходит сходу, попробуйте на соревнование по сегментации зайти, чем чёрт не шутит, может получится с ноги превзойти "экспертов" (тем более там 90% студенты, да начинающие). Заодно и пользу науке/медицине принесёте и денег подзаработаете.

                  0

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

                    0
                    Предоставьте хотя бы ссылку на этот детектор автомобилей

                    Если вы внимательно посмотрите в тред, то увидите, что я вам никакой детектор автомобилей не предлагал. Я спорю с утверждением "от расположения камеры, ее оптических искажений и т.д. для качественной сегментации необходима своя обучающая выборка".


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

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

                      +1

                      Особенно учитывая, что сложность разметки под сегментацию раз в пятьдесят выше, чем под детекцию :)

                        0
                        Тааааак) я про это и говорил) что все максимально просто за исключением создания тестовых выборок, а учитывая средний уровень ЗП то у нас куча народа готова будет дома сидеть за эти же деньги, работать в свободное время и зарабатывать те же деньги, да я бы и сам не отказался позалипать во время просмотра какого-нибудь сериальчика) Короче нужна платформа, где народ сможет зарабатывать как в Яндекс.Еда и Яндекс.Такси)
                          0
                          Короче нужна платформа, где народ сможет зарабатывать как в Яндекс.Еда и Яндекс.Такси

                          Ну так есть уже.

                        –1
                        А что, не просто сегментировать?) Просто все эти громкие названия не несут за собой вообще ничего) я про этих инженеров глубокого обучения и биг дата)
                          0
                          А что, не просто сегментировать?

                          Нет, не просто.


                          Просто все эти громкие названия не несут за собой вообще ничего) я про этих инженеров глубокого обучения

                          Гм, а DeepLab v3+, которым вы пользуетесь — он сам зародился, как мышь в сене? Или все-таки его сделали инженеры Google AI?

                            0
                            Не, ну это инженеры) я не спорю) вы создавали какую нибудь архитектуру с нуля сами?) если да, то да, вы инженер) но скорее всего использовали готовые схемы
                            Выразился не очень, просто в большинстве случаем используют готовые архитектуры)
                              0
                              вы создавали какую нибудь архитектуру с нуля сами?

                              Нет, а зачем?


                              если да, то да, вы инженер

                              Не обязательно. Много архитектур создается исследователями. А инженеры их потом внедряют.


                              просто в большинстве случаем используют готовые архитектуры

                              Ну да, задача инженера — выбрать максимально удовлетворяющее задаче решение. Если готовая архитектура удовлетворяет — то зачем придумывать свою? Работа инженера от этого никуда не делась.

                                +1

                                Директор по ИИ в Тесле — инженер? Инженер! И он сказал: "Don't be a hero. There is no need to invent your own unique architecture, just take what's already best".


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

                      +4

                      Первый попавшийся детектор на базе OpenImages:


                      Результаты


                      Если добавите ещё сотню размеченных картинок, пофайнтюните и будет ловить 90% на подобных картинках.

                        0
                        Вы вообще видите свои результаты? они ловятся только вблизи, да это тоже классный результат учитывая что ничего делать не нужно
                          +3

                          А вы свои видите? Игнорируете тот факт, что вы вручную выделили область интереса и по сути считаете процент из этой ручной области, который определился как не дорога. А это для нейросети весьма просто, да, даже с четырёх кадров, особено учитывая, что вы тренируете и тестируете на одной и той же статической области. По сути, у вас нейронка за 60 эпох научилась определять "где серенькое — там дорога", а дальше вы руками подбираете "коэффициент несеренького"

                      0

                      Разрешение камеры 2мп, и ночью если вы обратите внимание, все что видно от автомобиля это стоп сигналы, точнее размазанные световые круги от стоп сигналов, естественно я пробовал натренированную сетку и результаты там были не очень) странно, вроде deep learning это ваш профиль)

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

                      Яндекс.Толока, Amazon Mechanical Turk, AWS SageMaker Ground Truth.


                      Вот вам конкретно разметка видео.

                        0

                        Это не совсем то что я имел ввиду, в толоке нужно разбираться в задаче, устанавливать программы какие то, кучу времени потратить на то чтобы начать, а тут просто зашёл на определенную страничку и вам там весь функционал, просто тыкайте мышкой, чтобы каждый мог начать это делать буквально за 10 мин)

                          0

                          Я вам специально ссылку на Ground Truth привел.


                          Аналогично есть у GCP (и у Azure тоже должно быть, я сходу найти не могу).

                            0

                            Вы этим пользовались?)

                              0

                              Нет.

                        +1
                        «В современном мире задача сегментации как оказалось решается на раз-два, хотя я думал что это что-то сложное и удивительное. Все что нужно, это прочитать пару статей, установить определенные библиотеки и разметить данные, на все про все нужно пару часов времени, кроме создания тестовой выборки.»

                        КМК смотря что потом делать с полученными данными. К примеру, если прокладывать маршрут быстрой/тяжёлой техники то пары библиотек и наспех собранной тестовой выборки может не хватить.
                          0

                          Так там и бюджеты другие, а для домашнего пользования, все делается легко и непринужденно)

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

                        Самое читаемое