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

Железо для real-time обработки видео

Recommended Posts

Всем здравствуйте!

Недавно начал изучать opencv. Тестирую производительность, разные методы, даже написал пару своих методов которые в моем случае справляются быстрее чем встроенные. Задумал переходить на новое железо, а именно хочется одноплаточные пк.

Купив себе для тестов orange pi pc с процессором cortex a7 4*1.2 ГГЦ собрал библиотеку и начал тестировать. Обработка одного кадра 300*200 занимает 150-200 мс на одном ядре. Этого не достаточно. Хочется прикрутить платку к ip камере и в реальном времени обрабатывать видео. Если частота камеры 20fps, то 1 кадр нужно обрабатывать минимум за 50мс. В Принципе распараллелить на все ядра можно, но хочется оставить запас на другие нужны, ведь получение кадра, доступ по ssh, какие-то дополнительные плюшки потребуют своей производительности...

Может кто-то использовал для обработки какое-то интересное железо? На пример dsp платы или плис? Интересна производительность...

И второй вопрос, orange pi pc на базе armv7 имеет 32-битную архитектуру, а armv8 уже х64. Будет ли прирост скорости на 64-битной версии?

Заранее благодарю:)

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


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

Спасибо, но к сожалению это слишком дорогое решение...может есть что дешевле? В пределах до 5 тыс на пример?:)

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


Ссылка на сообщение
Поделиться на других сайтах
20 hours ago, Razangann said:

И второй вопрос, orange pi pc на базе armv7 имеет 32-битную архитектуру, а armv8 уже х64. Будет ли прирост скорости на 64-битной версии?

armv8 будет явно быстрее.

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

  • Thanks 1

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


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

Про NEON пока не слышал, почитаю, спасибо:)

Алгоритм по сути не сложный, собственная реализация threshold + morphologyEX, но вместо морфологии придумал свою реализацию, пускаю лучи с центра объекта и обрабатываю столкновения, считаю углы между точками :) Оптимизировать можно, но судя по замерам, то одна функция cvtColor() уже требует 8-10мс...

На orange pi pc есть еще графический проц, можно подумать разделить участки обработки и выполнять часть кода на gpu, но даже не знаю есть ли смысл...:)

Мне как-то говорили что проц работает быстрее с целочисленными, значит есть смысл минимизировать float переменные? Или в моем случае это тоже бессмысленно?:)

Вообще, если у кого-то есть свободное время и желание, могу показать код, может поможете в реализации:)

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


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

Железо. 

orange pi pc - оптимизированы для снежения энергопотребления. Поэтому скорости от них ждать не стоит.  

Что касается 64-битных процессоров то при одинаковой частоте они в 2 раза медленее по умножению.  В среднеем по остальным командам на 30-50% медлее чем 32 бита.

Вот если бы вы использовали криптографию тогда выигрышь возможен. 

Fpga сравнимый с pi вам обойдётся в 10 раз дорожи 150-300$. 

Dsp - как правило заточены под радио и звук. В таких платах просто нехватает памяти и производительности.

Нужны специальные видеопроцессоры. А они как правило очень дорогие. 

Есть ещё процессоры для видеорегистраторов. 4 раз быстрее чем CPU - pi. Одна беда close hardware. Через несколько лет возможно появятся как открытые. 

 Так что после pi берём дешовый комп i3 за 250-300 баксов. И если надо то видеокарту.

Или б/у ноутбук, комп можно сэкономить.

 

Код. Вам однозначно надо оптимизировать. Расчёт углов это медленная операция. 

А вот прр GPU - отпишитесь как удалось завести его или нет? 

 

  • Thanks 1

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


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

Железо. 

orange pi pc - оптимизированы для снежения энергопотребления. Поэтому скорости от них ждать не стоит.  

Что касается 64-битных процессоров то при одинаковой частоте они в 2 раза медленее по умножению.  В среднеем по остальным командам на 30-50% медлее чем 32 бита.

Вот если бы вы использовали криптографию тогда выигрышь возможен. 

Fpga сравнимый с pi вам обойдётся в 10 раз дорожи 150-300$. 

Dsp - как правило заточены под радио и звук. В таких платах просто нехватает памяти и производительности.

Нужны специальные видеопроцессоры. А они как правило очень дорогие. 

Есть ещё процессоры для видеорегистраторов. 4 раз быстрее чем CPU - pi. Одна беда close hardware. Через несколько лет возможно появятся как открытые. 

 Так что после pi берём дешовый комп i3 за 250-300 баксов. И если надо то видеокарту.

Или б/у ноутбук, комп можно сэкономить.

 

Код. Вам однозначно надо оптимизировать. Расчёт углов это медленная операция. 

А вот прр GPU - отпишитесь как удалось завести его или нет? 

 

Спасибо за краткое описание систем:)

На счет GPU, еще не пробовал, думаю можно сделать пару тестов.

По поводу ПК c i3, у меня сейчас такое реализовано, i3-4160(3.6ГГЦ) тащит 12 камер и тратит всего 6-8% цп. Идея была в разделении обработки каждой камеры отдельным модулем. К одному такому ПК можно подключить и 80 камер, но там уже будет проблема с кабелями, свичами и тд... В идеале думал микрокомпьютер на одну камеру, к нему wifi модуль, обрабатывать само видео на микропк и слать по сети уже готовые данные по wifi.

Что на счет одноплатных от intel? Intel N2930 или какой-нибудь Atom? :)

 

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


Ссылка на сообщение
Поделиться на других сайтах
В 16.09.2017 at 13:20, Razangann сказал:

Спасибо за краткое описание систем:)

На счет GPU, еще не пробовал, думаю можно сделать пару тестов.

По поводу ПК c i3, у меня сейчас такое реализовано, i3-4160(3.6ГГЦ) тащит 12 камер и тратит всего 6-8% цп. Идея была в разделении обработки каждой камеры отдельным модулем. К одному такому ПК можно подключить и 80 камер, но там уже будет проблема с кабелями, свичами и тд... В идеале думал микрокомпьютер на одну камеру, к нему wifi модуль, обрабатывать само видео на микропк и слать по сети уже готовые данные по wifi.

Что на счет одноплатных от intel? Intel N2930 или какой-нибудь Atom? :)

 

Вопрос.

Вы используете IP камеры?

Сам работаю с ними через RTSP, декодирую через FFMPEG, но при этом только на одну камеру нужно порядка 5% процессора уровня intel i5. Интересно как у Вас получилось с 12 камер...6-8% загрузки ЦП?

PS. Многое еще от камер зависит, т.к были камеры которые на декодирование тратили 1%

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


Ссылка на сообщение
Поделиться на других сайтах
В 18.09.2017 at 05:12, LexaP сказал:

 

Вопрос.

Вы используете IP камеры?

Сам работаю с ними через RTSP, декодирую через FFMPEG, но при этом только на одну камеру нужно порядка 5% процессора уровня intel i5. Интересно как у Вас получилось с 12 камер...6-8% загрузки ЦП?

PS. Многое еще от камер зависит, т.к были камеры которые на декодирование тратили 1%

Здравствуйте. Да, ip камеры. Через VideoCapture открываю rtsp поток и получаю кадры. Я распоточил всю обработку. У меня на каждую камеру ( 1 поток на получение кадра и складывание его в ConcurrentQueue библиотеки TBB + 1 поток на получение кадра из очереди и его обработку) дополнительно я сделал динамическую задержку между обработкой, чтобы зря не проверять есть ли кадр в очереди. На пример, в конце бесконечного цикла while, который обрабатывает кадры, стоит sleep(t). t задано 1мс. Дальше, когда проверяется есть ли кадр в очереди - если нет или их количество маленькое(<5), то увеличиваем задержку +1мс. Иначе уменьшаем задержку -1мс. В итоге программа в холостую не грузит проц, а сама подбирает нужный ей ритм:)

Плюс у вас какая частота проца? Может дело в том что на моём i3 3.6ггц?

Ребята, тут прорыв необъяснимый, приехал я домой, у меня отвалился интернет, ни в какую не хочет работать ни с dhcp, ни со статик адресом, пингует роутер, но доступ до интернета не даём. Именно с домашним роутером, по этому я начал переустанавливать разные системы, Lubuntu, Armbian, Ubuntu Mint, везде один результат. Вернулся на Armbian, пошел на работу, там к другому роутеру подрубился и интернет залетал сразу же.

Но благодаря это поломки обнаружил следующее: заново скомпилил opencv, запустил свой проект и...о боже! Задержка на обработку снизилась в 10 раз! Если когда я писал тему требовалось 150+ мс, то сейчас тот же самый код отрабатывает за 10+ мс! Как такое могло произойти?

Догадки следующие:

1) Флешка. В процессе пробования разных OS менялись флешки. Но думаю вариант не логичный, программа только при старте грузит кадр для обработки и остальное время он висит в оперативе.

2) Система. Не помню какая была версия Armbian до, но по датам выхода и когда я её ставил вроде бы та же... Может в процессе установки был косяк в прошлый раз. Хотя опять таки вопрос, если программа не взаимодействует с файлами то почему же....

3) Версия opencv. Раньше была с гита скомпилина версия 3.2, сейчас подтянулась свежая 3.3. Может быть в новой версии прилично так поработали над скоростью?:)

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

Всем добра и хороших результатов!:) Если кому нужна какая-то информация, пишите, буду рад помочь:) roma.fantom@mail.ru

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


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

Решил не плодить тем и спросить тут.

Хочу прикупить еще один комп. для работы с cuda, какую лучше видеокарту выбрать

nVidia GTX 750Ti 2Gb

nVidia GTX 1050 Ti 4Gb

или может посмотреть в сторону других моделей (бюджет не сильно раздутый)?

Спасибо

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


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

Однозначно второй вариант. Сейчас такая ситуация, что многие менее мощные карты нового поколения могут именно для CUDA оказаться быстрее, чем более мощные предыдущих.

К тому же старые карты не будут поддерживать новые стандарты CUDA, что не есть хорошо для программирования.

  • Like 1

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


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

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

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

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

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

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

Войти

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

Войти сейчас


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

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

×