к.т.н. Руцков М.В.

 

     Видеодетекторы пять лет спустя

(часть вторая)

 

Итак, займёмся вопросом быстродействия систем. Ведь действительно, кому нужен сверхнавороченный видеодетектор, который только по одному каналу грузит процессор под завязку, да и работает далеко не в режиме real-time! Получается, что лишь для -  показухи. Вот и спрашивается, а на сколько реально использовать полосовую пространственную фильтрацию для видеодетекции. Ну, тогда поведаю вам быль!

 Дело было четыре года назад, нас любезно пригласила редакция журнала CCTV Focus  для тестирования наших видеодетекторов. Ну, мы и поехали, прихватив с собой системный блок, в котором пригрелись, нами сотворённые - аж два 8-ствольных ВидеоПроцессора MegaFrame-X. Короче, аппаратные средства теоретически позволяли работать в режиме real-time. А что же получилось на практике. Привожу сводную таблицу тестов из статьи MegaFrame-X новая плата видеоввода с интерфейсом PCI-X   CCTV Focus,  N1 2005.

 Необходимо отметить, что было запрограммировано 16 каналов, по каждому из которых работали все три полосовые фильтры грубый, средний и точный. Итого 48 видеодетекторов! Нетрудно заметить, что скорость упала в разы после включения записи и передачи данных по сети. Естественно снизился и темп контроля, поскольку всё было  завязано в единый жесткий цикл. Причём, после обнаружения движения автоматически включалась запись и ещё добавлялась процедура JPEG-компрессии. Однако не забывайте это было 4 года назад, сейчас системные параметры компьютеров значительно возросли. Появились двух и четырёх ядерные процессоры, увеличилась L2 кэш, системная шина стала работать быстрее и т.д. Поэтому сегодня уж ничто не тормозит всё работает в real-time. Но самое интересно место в таблице первая строка в предпоследнем блоке. В режиме - только отображения и обработки развивалась скорость 25 кадр/с. Это боевой режим - обнаружение движения. Значит, система за 40 мс обработывает все 16-ть каналов по 3 видеодетектора в каждом!

 

формат

кадра

цвет

 

кол-во

каналов

скорость

вывода

(на канал)

скорость

записи

(на канал)

скорость

обработки

(на канал)

скорость

передачи по сети

(на канал)

384х288

ч/б

8

25 кадр/с

25 кадр/с

25 кадр/с

25 кадр/с

цв

25 кадр/с

25 кадр/с

 

25 кадр/с

цв

24 кадр/с

22 кадр/с

22 кадр/с

22 кадр/с

768х288

ч/б

25 кадр/с

21 кадр/с

21 кадр/с

21 кадр/с

ч/б

24 кадр/с

24.5 кадр/с

 

24.5 кадр/с

ч/б

25 кадр/с

25 кадр/с

 

 

цв

24 кадр/с

20 кадр/с

20 кадр/с

 

цв

24 кадр/с

10 кадр/с

10 кадр/с

10 кадр/с

цв

24 кадр/с

13 кадр/с

 

13 кадр/с

цв

24 кадр/с

24.5 кадр/с

 

 

 

384х288

ч/б

16

25 кадр/с

17 кадр/с

 

17 кадр/с

24 кадр/с

11 кадр/с

11 кадр/с

11 кадр/с

25 кадр/с

20 кадр/с

20 кадр/с

 

25 кадр/с

25 кадр/с

 

 

 

384х288

цв

16

25 кадр/с

 

25 кадр/с

 

24 кадр/с

12.5 кадр/с

12.5 кадр/с

12.5 кадр/с

25 кадр/с

19 кадр/с

 

 

25 кадр/с

9 кадр/с

 

9 кадр/с

 

768х288

ч/б

16

25 кадр/с

 

25 кадр/с

 

24 кадр/с

13.5 кадр/с

13.5 кадр/с

 

24 кадр/с

6.5 кадр/с

6.5 кадр/с

6.5 кадр/с

24 кадр/с

8.5 кадр/с

 

8.5 кадр/с

 

768х288

цв

16

25 кадр/с

 

 

 

24 кадр/с

6 кадр/с

 

 

24 кадр/с

5 кадр/с

5 кадр/с

 

24 кадр/с

5 кадр/с

5 кадр/с

5 кадр/с

 

Спрашивается - а как же процессор успевает делать столько умножений и сложений? Ответ прост - алгоритм так оптимизирован, что не надо вычислять свёртку "в лоб". Более того, в любой его точке промежуточные результаты никогда не вылезают за пределы одного фиксированного байта. Вот тут-то и сказываются преимущества MMX и SSE  обработки! Однако, поверьте профессионалу, как и в повседневной жизни надо соблюдать золотое правило не ставить телегу впереди лошади! Что это означает в нашем случае, в плане сочинения алгоритмов? А означает сие следующее прежде чем сочинять что-либо, внимательно изучите особенности микроархитектуры того процессора, на котором всё это будет крутиться. Алгоритмы должны быть аппаратно-ориентированными, иначе можно такой математики нагородить, что уж никакая оптимизация не поможет.   И это замечательно, но хотелось бы понять - а что собственно даёт нам полосовая фильтрация? С точки зрения видеодетекции?  

Как уже отмечалось - любой полосовой фильтр подавляет высокочастотные шумы и помехи, а также срезает постоянную составляющую. Очень даже полезное свойство! А теперь поговорим о фильтрах, которые задействованы в нашей системе. Их три - точный, средний и грубый. Точный позволяет детектировать мельчайшие объекты. Для иллюстрации можно глянуть в мою статью: Видеодетекторы взгляд изнутри. Практическая плоскость,  Гротек СБ, N3 (51), 2003, там движение глаз и пальцев отлавливаются.

 

 

 

 

Можете даже посмотреть, что поступает на точный детектор - там видны все эти мелкие детали.

 

 

Если говорить о размерах объектов, то отсылаю к результатам тестирования: "Тестирование детекторов движения в российских системах видеонаблюдения CCTV Focus,  N3 2005. Нам удавалось ловить квадратики размером всего 4х4 пиксела при формате кадра 720х576. Кому интересно будет, отсылаю к самой методике: "Методика тестирования детекторов движения  CCTV Focus,  N3 2005. Кроме того, привожу таблицу результатов по нашей системе.

 

Размер объекта

Отношение сигнал/шум

 

64х64

48х48

32х32

28х28

24х24

20х20

16х16

12х12

08х08

04х04

32/1

191

188

183

182

181

181

180

180

180

178

16/1

191

188

183

183

182

181

180

180

178

177

8/1

192

188

184

179

178

177

180

178

174

128

4/1

183

179

178

175

169

173

154

145

139

0

2/1

33

38

9

19

25

51

56

55

0

0

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

 

 

Перейдём к грубыму детектору. Посмотрите ещё одно отфильтрованное изображение. Кулак уже практически превратился в яркое белое пятно, а сам я в - "сеятеля". Типа картины руки великого мастера - Остапа Бендера! Естественно вы спросите - "А куда это?". Рассказываю! Дело было в году так 98-ом прошлого тысячелетия. Сижу в здании Московского ГАИ - около Театра Кукол и тестирую нашу систему распознавания автономеров. Камера была установлена на эстакаде через Цветной Бульвар и тряслась как бешенная! Разметка и трещины ходили ходуном (камера сверху вниз смотрела под углом 20-25 градусов к дороге) - с амплитудой примерно 10 сантиметров! Как одержимый естествоиспытатель - запускаю видеодетекторы. Естественно на точном и среднем детекторах идут сработки. Ставлю грубый - о чудо, нет тревог, а все проезжающие авто детектируются! Вот вам первое применение - Детектор Транспортного Потока. Причём, была бы нужда, можно и кое-что дописать в плане статистических измерений едущих пятен. И худо-бедно определить тип машины - легковая, грузовая иль автобус! Однако отличить последний от троллейбуса при таком подходе - невыполнимая задача, надо ещё и рожки электрические вылавливать.

 


 

А теперь, на закуску, расскажу и проиллюстрирую забавную историю, которая наглядно показывают - как работают полосовые фильтры. И случилась она именно с нашей системой, причём на тестах в рамках выставки PROST 2006. Все материалы здесь: Тестирование детекторов движения на выставке ProST 2006,  CCTV Focus,  N5 2006.   Вот гляньте на 30-ой странице, последняя таблица "Тест на быстрые движения". Смотрим колонку результатов системы MegaSense - нас то бишь. И что ж мы видим? А видим  парадокс наше творение в упор не видит крупных шаров с диаметром 45 при контрастности в 1 и даже 4 процента! Зато ловит все остальные, более мелкие шары, вплоть до колобка диаметром 15 и контрастностью всего - 2 процента! Как же так? Вот они голубчики:

 

     

 

А почему по два шара в кадре? Так он же из двух полей состоит, меж которых как раз 20 мс и будет! Это ещё раз к вопросу Деинтерлейсинга попробуйте объединить. Так почему ж мы такую лошадь не увидели? Всё очень просто - для тестов был установлен только точный детектор (лопухнулись - сам процесс не контролировал, поскольку был в Жюри), который своим фильтром буквально срезал размытый крупняк. Там высоких частот практически не было. Зато маленькие шары очень даже хорошо и вписались! Если бы параллельно был запущен средний детектор (это нормальный режим работы системы) - отловили б только так! Сия ситуация проявилась и в "Тесте на реальных сценах" (самая первая таблица, стр.29), где система схлопотала один "минус". А взялся он от выхлопа автомобиля (первоначально даже не был прописан в списке объектов), в котором "высокие" также отсутствуют. Да и неуверенной детекции - "+/-" тоже можно было бы избежать! Ох уж эти если бы, да ка бы!!! Но на то они и тесты, что б в последствии избегать таких проколов на реальных объектах.

  

Об авторе: Руцков Михаил Вадимович, кандидат технических наук, гендиректор  MegaPixel Ltd., e-mail:  megapixel@tochka.ru тел. (495)4129422

 

Rambler's Top100