Перейти к содержимому
Compvision.ru
Андрей_Андрей

Тормозит Release версия С++ каскада Хаара

Recommended Posts

Ищу в потоке машин пластины номеров. нахожу обученным каскадом Хаара. 
использую detectMultiScale. Каскад обучен на примерно 1000 положительных примеров и 5000 отрицательных.

Прототипировал на python2. При этом искал пластины сначала на всем кадре 2560х2048 точек, потом пробовал выделять зоны в которых есть движущиеся автомобили, и искать только в них. 

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

Перешел на С++/VS2013. С родным компилятором MSVS. Удивительно то, что программа в Debug версии имеет цикл больше секунды, а в Release -  300 - 350 мс, что больше, чем у питона!. Все 4 ядра Core I5 и в питоне, и в С++ при работе release версии грузятся примерно на 90%. Утечек памяти не наблюдаю. 
Почему С++ не дает выигрыша по скорости, хотя должен? 

Где я не прав? Что подправить в настройках в Visual Studio 2013?

и главное, что дальше делать? 

Спасибо.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

OpenCV написан на плюсах, версия для питона это просто оболочка над с++, выигрыша никакого и не должно быть. Разница может быть в оптимизации использовании всяких ipp tbb и прочее. А хаар на cpu, да на таком разрешение в риалтайм никак не уложится, можно кончено на gpu но это так чисто в исследовательских целях.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Другие методы не связанные с каскадами+скользящее окно. Ни одна из продуктов на рынке такой метод не использует из-за недостаточной производительности, в России например большая часть комплексов оснащены одноядерными(редко 2) селеронами с частотой 2ггц, ни о каких мощных видеокартах даже речи нет. Если вам для эксперимента то можно просто контура(у номеров есть окантовка) искать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ну, у существующих комплксов разные характеристики и функции разные...А вот "поток" например, использует core i7. У автоурагана действительно слабенький селерон, я правда не знаю, сколько полос он видит одновременно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вроде как каскады это самое быстрое что сейчас есть, вроде как есть и модификации побыстрее чем в opencv.

А насчет detectMultiScale можно еще поиграться с параметрами

http://stackoverflow.com/a/20805153/1179925

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
5 часов назад, APXANGEL сказал:

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

Можете дать ссылку на описание метода, или примера?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
30 минут назад, Андрей_Андрей сказал:

Можете дать ссылку на описание метода, или примера?

В книге А.А. Лукьяница, А.Г. Шишкин - Цифровая обработка видеоизображений - 2009 раздел 9.1.6 . Там всё по формулам написано, но из картинок всё понятно будет

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Кстати, тут на форуме по распознаванию номеров отдельная тема есть, можете там посмотреть что-нибудь полезное: Распознавание номерного знака, расп. текста.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте учётную запись или войдите для комментирования

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

Создать учётную запись

Зарегистрируйтесь для создания учётной записи. Это просто!

Зарегистрировать учётную запись

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу

×