Предыстория


image
Когда то я поспорил с моим приятелем по поводу одного фильма. Он утверждал, что главный герой говорит одно, я же считал, что он говорит совершенно обратное. В результате мы поспорили на N-ое количество алкогольно-прохладительных напитков и направились к общему другу, который являлся счастливым обладателем VHS-видеоплеера и у которого должен был быть этот самый фильм. Спор этот я проиграл, но, хорошо помню, что мы потратили много времени на поиск именно этой сцены.Годы спустя, уже в наши дни, другой мой приятель переписал мне видео с регистратора на флэшку со словами, что там мол, после какого то поворота налево в объектив устройства должен был попасть наш общий знакомый (неприятный тип), который находился в чуднОм состоянии и, предлагал мне, приколоться по этому поводу.Искать чью-то физиономию на видео длиной в пару часов, это, конечно, не то чтобы искать иголку в стогу сена, но, тоже, удовольствие на любителя. Похоже, что именно тогда в моей голове начала зреть идея и я задался вопросом: как просмотреть несколько часов видеозаписей, чтобы найти там что тебе надо и при этом не сильно ограничить себя во сне?

Основная идея


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

Табличное представление видео: что это за зверь и с чем его едят?


Примеры видео в табличном формате

Candies
Parking
Road

Примеры изображений в табличном формате

Candies
Parking
Road

Собственно, сам инструмент


После некоторых мучений мной была написана программа Table View Video Player. image

Основные возможности программы


  • Воспроизведение видео в табличном виде
  • Возможность сохранять видео в табличном виде (для просмотра на планшете или просто на другом компьютере)
  • Настраиваемое количество строк и столбцов в таблице, а также размеры результирующего кадра в пикселях
  • Список файлов (для быстрого переключения между видео, а также если событие состоит из нескольких файлов, например VOB-файлы на DVD или записи с видео регистратора)
  • Сохранение индексного изображения
  • Пакетное создание видео и индексных изображений для всех файлов в списке
  • Некоторые преобразования исходного видео при воспроизведении (вращение на 90, 180, 270 градусов, отражение по вертикали и по горизонтали)
  • Возможность выбора конкретной области исходного видео
  • Возможность воспроизведения исходного видео в обычном режиме с заданной позиции во встроенном проигрывателе или в другой программе

А что там под капотом?


Программа написана на C++, использовался MS Visual Studio 2015. В качестве видео библиотек можно было ограничиться FFMPEG, но я юзал OpenCV (планирую использовать другие возможности этой библиотеки).

Область применения данного инструмента


Попробую показать всё на примере. Я поставил видео камеру на кухне, а конфеты спрятал на кухонный навесной шкаф. Продолжительность видео 2 часа. А теперь посмотрите на картинку и скажите кто их съел: папа, мама или кто-то из детей? Даже если бы не было выделения нужных областей, всем всё стало бы ясно через 2 минуты просмотра, а может и раньше.image Если кто-то хочет провести эксперимент, то вот ссылка на исходное видео, а вот ссылка на видео в табличном виде. Итак, основное предназначение программыузнать кто стырил конфеты визуальный анализ видео.

Ещё немного практики


По праздникам я снимаю видео в детском саду, а также семейные юбилеи, свадьбы друзей и родственников. Pinnacle Studio — отличная программа для видеомонтажа! Говорят даже, что в ней с лёгкостью разбираются домохозяйки! Не понимаю правда, откуда у домохозяек столько упорства и свободного времени, чтобы тратить часы на многократные попытки проэкспортировать смонтированное видео в файл или на DVD-диск? Сам я пользуюсь этой программой начиная с 8-ой версии (сейчас использую лицензионную 17, а последняя выпущенная это 19 версия), но, несмотря на мой опыт, редко получается, чтобы в процессе редактирования или экспорта приложение не повисло. Но даже если экспорт завершился удачно (по мнению Pinnacle Studio), то при просмотре видео в VLC-плеере или проигрывателе Windows-Media иногда встречаются артефакты, вид которых смущает пользователей моей продукции.Что ж! Table View Video Player можно использовать и здесь! Запускаем программу, открываем наш файл и не концентрируясь на каком-либо фрагменте конкретно просто пытаемся почувствовать, где вдруг появляется фриз или какая то бяка.Типа этого.imageПять минут на поиск артефактов видео — это не так уж и много!В таком случае заново открываем проект и пытаемся исправить проблему. И немного радуемся тому, что обнаружили это сами, а не «счастливые родители» во время семейного просмотра.

Шаг назад


Некоторое время назад я похвастался своей программой перед знакомым, на что получил замечание, что программа слишком сложна и лично он бы в ней никогда не разобрался. Мдя, а я то думал… Учтя конструктивную критику, я осознал, что, возможно, он прав. Так возникла необходимость создания более простой (Lite) версии.image

Основные возможности программы


  • Воспроизведение видео в табличном виде
  • Изменяемые размеры таблицы
  • Список файлов (для быстрого переключения между видео, а также если событие состоит из нескольких файлов, например VOB-файлы на DVD или записи с видео регистратора)
  • Возможность воспроизведения исходного видео в обычном режиме с заданной позиции во встроенном проигрывателе.
По сравнению со стандартной версией убраны многие фичи, но зато программа стала простая как 2 копейки!

Теория поиска сцен и объектов


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

Сильные стороны


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

Слабые стороны


  • Поиск конкретных людей в толпе. Например, в метро в час пик. Здесь табличное представление не поможет, лучше просматривать видео в обычном режиме (меньше вероятность пропустить искомое) или использовать специально заточенные автоматические средства.


Конкуренты или программы для поиска сцен и объектов


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

Планы на будущее


  • Ускорение воспроизведения видео. Уже сейчас видео в разрешении VGA на современном компьютере можно смотреть в таблице 10x10 с частотой 20-30 FPS. Однако видео c современных фото и видео камер, экшен-камер и видео регистраторов имеет разрешение Full HD или даже выше и не за горами 4K. Поэтому без использования GPU не обойтись.
  • Возможность сохранения найденной информации в виде изображений (стоп-кадр), аудио или видео фрагментов интересующих моментов для последующего использования. Например, для монтажа видеофильма (собираем смешные сюжеты с вечеринки) или для представления доказательств в суде (если камера видео наблюдения засняла момент кражи).


Выводы


  • Инструментов для поиска сцен и объектов в видео на сегодняшний день для рядового пользователя практически не существует.
  • Приложения Table View Video Player и Table View Video Player Lite пытаются хоть как восполнить эту нишу.
  • Для определённых видов поиска сцен в видео метод табличного представления является очень эффективным.
  • Несмотря на то, что для одновременного воспроизведения нескольких десятков видео потоков требуется высокая производительность компьютера, при невысоком разрешении (SD качество) исходного видео задача успешно решается современными ПК.
Считаете ли Вы, что программы для поиска сцен и объектов в видео могли бы быть полезной в Вашей работе?

Проголосовал 181 человек. Воздержалось 75 человек.

Хотели бы Вы продолжения цикла статей на данную тему?

Проголосовало 200 человек. Воздержалось 56 человек.

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

Комментарии (27)


  1. istui
    13.04.2016 17:45
    +2

    Развитие идеи: программа, реагирующая на резкую смену кадра. Когда-то в Windows Movie Maker была такая возможность — делить на отдельные клипы файл при резкой смене сцены, сейчас ее очень не хватает.

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

    Далее: поиск лиц (face detection) и вывод их отдельно (можно сделать средствами OpenCV), в т.ч. и с автоматическим распознаванием лиц (face recognition)


    1. cronk
      13.04.2016 19:19
      +2

      FFprobe из пакета FFmpeg умеет искать склейки в видео, а потом выдавать инфу (json какой-нибудь или просто текст)


      1. hardex
        14.04.2016 12:02
        +1

        Там встроенный детектор резкой смены сцен

        ffprobe -show_frames -of csv -v quiet -f lavfi "movie='file.mp4',select=gt(scene\\,.2)"


        Коэффициент .2 менять по желанию


        1. cronk
          14.04.2016 15:49
          +1

          Кстати, давно мучает вопрос, на который я не смог найти ответа — может ли ffprobe искать склейки не на всём видео, а на конкретном куске?


          1. hardex
            14.04.2016 16:26
            +1

            Я думаю, -ss и -t здесь тоже поддерживаются


    1. alekseev_ap
      14.04.2016 12:17

      Развитие идеи: программа, реагирующая на резкую смену кадра. Когда-то в Windows Movie Maker была такая возможность — делить на отдельные клипы файл при резкой смене сцены, сейчас ее очень не хватает.

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

      Ну вот, предположим, родители хотят посмотреть вместе с детьми некий фильм. А перед этим хотят убедиться, что там отсутствуют постельные сцены. Как это сделать, с учётом того, что названные мною постельные сцены в реальности могут быть сняты на природе или, скажем, в подъезде? Или, наоборот, нашли у сына (дочери) коллекцию видео и желают убедиться, что там нет ничего криминального. Как это сделать, желательно ничего не пропустив, что будет 100% при быстрой перемотке за ограниченное время?
      Далее: поиск лиц (face detection) и вывод их отдельно (можно сделать средствами OpenCV), в т.ч. и с автоматическим распознаванием лиц (face recognition)

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


      1. LLWE_FUL
        15.04.2016 11:58

        > Я думаю это сделать сравнительно легко, только в чем профит?
        Пропустить сцену в фильме, например. Или если на камеру наснимал много фрагментов, перейти к следующему.


        1. alekseev_ap
          15.04.2016 12:03

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


      1. istui
        16.04.2016 11:40

        для поиска эротики можно воспользоваться технологиями от microsoft например (adult score). Это тоже может быть дополнительной полезной функцией.

        Далее: поиск (с определенным процентом схожести) заданного изображения в видео. Очень удобно, если в видеоролике есть известная вам заставка, с которой начинается нужный вам фрагмент.
        Поясню мысль: здесь речь идет о «сериале», в котором начало каждой новой рубрики предваряется известной заставкой. Задача: имея 1000 серий, вырезать все вхождения данной рубрики в отдельное видео/набор видео. Рутинная задача и очень нудная, так и просится на автоматизацию.

        face detection можно сделать либо через ms технологии, либо opencv — с учетом того, что вы его уже используете. Распознавание сделать чуть сложнее. Опыта лично имею не так много, на Хабре есть намного более опытные люди.


  1. ns5d
    13.04.2016 18:19
    -9

    бесит захламленный рабочий стол


  1. alexvoz
    13.04.2016 19:19
    +8

    Несколько советов от человека, который никогда не снимал обзоры ПО и сам не писал ПО для распространения =)
    — для видео можно было бы создать отдельный виртуальный рабочий стол без ярлыков (кроме ярлыка программы)
    — сильный перепад между громкостью речи и музыки
    — немного сбил с толку заголовок, думал ПО само ищет как то по сложному алгоритму.
    — использования личного видео для обзора выглядит не очень «в тему». Хоть они и иллюстрируют хорошо работу программы — но все же чувствуется какой то дискомфорт, как будь то подсматриваешь за чужой личной жизнью.
    По ПО:
    — почему бы не перейти с Pinnacle Studio на другое ПО. Привычка не аргумент =). Думаю Вам под силу изучить After Effects, Premiere или др. подобные программы
    — не увидел причин выпуска лайт версии. Если ваш знакомый не смог разобраться с обычной версией то и с лайт у него возникнут вопросы ведь принцип работы не поменялся, достаточно просто русской версии.
    — делить на отдельные клипы файл при резкой смене сцены — годная идея коментатора выше.

    Программа вышла хорошая, справляется со своей задачей. Желаю Вам развивать ее и дальше.


    1. alekseev_ap
      13.04.2016 19:26
      +3

      Спасибо за комментарии! Да, видео готовил на скорую руку, ничего более интересного в голову не пришло. Что касается Pinnacle — у меня лицуха, а покупать более качественные продукты втридорога пока не позволяет бюджет. Но, я упомянул про него исключительно как демонстрационный пример из реальной жизни. Другие видео редакторы тоже могут страдать разными артефактами при кодировании. Лично против Pinnacle Studio ничего не имею — смонтировал в нём десятки фильмов.


  1. ValdikSS
    13.04.2016 20:51
    +2

    Ускорение воспроизведения видео. Уже сейчас видео в разрешении VGA на современном компьютере можно смотреть в таблице 10x10 с частотой 20-30 FPS. Однако видео c современных фото и видео камер, экшен-камер и видео регистраторов имеет разрешение Full HD или даже выше и не за горами 4K. Поэтому без использования GPU не обойтись.
    Можете декодировать H.264 с отключенным loop-фильтром (деблокинг-фильтром) — получится гораздо быстрее, а на маленькой превьюшке артефакты не будут видны.


  1. MNDghost
    13.04.2016 21:57
    +1

    Жалко, что всё на английском. И цена $45 слишком дорого для студента или школьника


    1. alekseev_ap
      13.04.2016 22:03

      Версия с русскоязычным интерфейсом будет чуть позже. Что касается цены, то у Вас есть отличная возможность получить любой из продуктов Soft4other совершенно бесплатно. Если Вы пользуетесь любым продуктом нашей компании, достаточно просто прислать на наш E-mail видео отзыв о понравившейся Вам программе (смотрите такую возможность на сайте) и получите выбранный Вами продукт (это может быть не тот о котором Вы написали видео отзыв) совершенно бесплатно!


  1. reroll
    13.04.2016 22:10

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


    1. alekseev_ap
      13.04.2016 22:23

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


      Простой вряд ли получится.

      в настоящее время для сжатого видео применяют сжатие с ключевым кадром
      но лучше видео в два прохода

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

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

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

      Отлично понимаю, о чём неоднократно заявляю в самой статье (см. «Слабые стороны»). Но, в то же время (и это подтверждено сриншотами) есть задачи, где табличное воспроизведение может за считанные минуты (иногда секунды) найти искомую сцену или объект.


  1. denis_g
    13.04.2016 23:03
    +3

    Напишите по статье про эту технологию в секс-разделы двача и форчана. Они вам там не просто карму плюсанут, а еще и биткоинами скинутся ;)


    1. CeyT
      14.04.2016 05:07

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

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


  1. savostin
    13.04.2016 23:16
    +1

    Имхо для решения именно задачи визуального поиска чего-то на видео, я бы воспользовался VLC
    Точность конечно поменьше, но определить позицию можно достаточно быстро, а затем уже просмотреть видео в найденном месте более подробно.
    Если честно, думал автор предложил решение автоматического поиска…


    1. alekseev_ap
      14.04.2016 08:21

      В принципе, да. Но!
      Для выполнения всех этих манипуляций необходимо использовать командную строку, запускать просмотровщик изображений, потом запускать видео плеер и перематывать на нужную позицию. Здесь это всё уже сделано! Добавили один или несколько файлов в список, щёлкнули по любому (можно настроить в опциях автоматический переход на следующий трек), смотрим-любуемся, заметили что-то подозрительное — щёлкаем мышкой по кадру. Открывается новое окно (или другая вкладка в Lite версии) и смотрим это видео в обычном режиме. Нашли то, что нужно — берём на карандаш, ошиблись в ожиданиях — едем дальше. На словах это тяжело объяснить, но если Вы попробуете скачать приложение и поискать с его помощью что то, Вы удивитесь насколько быстро и просто это можно сделать.


  1. feo83
    14.04.2016 07:44
    +1

    1. alekseev_ap
      14.04.2016 07:48
      +1

      Хорошая у них идея (решение). Недостатком я бы назвал то, что решение не универсальное. Т.е. найти что-то в видео с регистратора (если машина всё время не стоит на месте) нельзя. Но большой плюс, что решение законченное и работает (по-видимому) из коробки.


  1. lumaxy
    14.04.2016 08:23

    А можно сюда еще прикрутить что-то типа neuraltalk2? Тогда можно будет сделать поиск по автоматически сгенерированному описанию картинки в таблице.


  1. Error_403_Forbidden
    14.04.2016 13:13
    +1

    Хитрец, а! Мы-то знаем, что конфетки тырил папа. Это видно на чёрных кадрах


    1. alekseev_ap
      14.04.2016 15:12

      Чесно-чесно, не я!


  1. alekseev_ap
    21.04.2016 23:07

    Русскоязычная версия программы доступна здесь.