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

Увеличение скорости распознавания лиц

Recommended Posts

Хм...тут весь пайплайн работает не больше 100ms...смысл вообще по потокам бить? Может лучше немного код пооптимизировать и добиться реалтайма в одном потоке? Мне почему-то кажется, что у вас просто добавление openmp'шных прагм может разогнать все до реалтайма...

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

  • Like 1

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


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

Я бы с радостью загнал все в один поток и радовался жизни, но вот только не знаю каким образом оптимизировать самую прожерливую функцию которая обрабатывает входное изображение (как я ранее писал она занимает порядка 45 миллисекунд). Пробовал оборачивать эту функцию в #pragma omp parallel, но результатов это не дало только стало еще хуже..

Можете помочь с примером кода или чуть подробней расписать как реализовать очереди кадров?

Если я правильно понял из ваших комментариев, то мне необходимо два потока, в одном потоке я получаю изображения с камеры и запихиваю их в очередь  изображений и в этом же потоке я должен создать очередь для вывода изображений:

Цитата

 

cv::Mat frame; // необработанное изображение с камеры

cv::Mat processedframe;// обработанное изображение

void GUIня()

{

     while(true)

     {

              frame = getFrame();// получаем изображение с камеры

              FrameQuie(proccessedframe);// добавляем в очередь 

              ShowFromQuie(FrameQuie);// выводим из очереди

              Sleep(1);

     }

}

void proccessFrame()

{

     while(true)

     {

            processedframe = Processframe(frame);//Обработка

            Sleep(1);

     }

}

boost::thread thrd1(&GUIня,this);

boost::thread thrd2 (&proccessFrame,this);

 

1) как сделать очередь изображений и очередь вывода и есть ли в этом смысл? Если функция proccessFrame в любом случае занимает не менее 45 миллисекунд, то следовательно очередь вывода будет пополняться не ранее чем через 45 миллисекунд. То есть никакой оптимизации по времени мы не получим правильно?

2) куда расставлять mutex?

3) как синхронизировать потоки?

Извиняюсь за кучу вопросов, с потоками вообще раньше не работал.. Для реализации потоков прикрутил boost к проекту.

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


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

Ну, за 45 ms лицо вряд ли сменится :) 

Соответственно, трекать и распознавать можно в разных потоках.

Распознал - обновил метку трека.

  • Like 1

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


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

Я это понимаю, просто нужна помощь в синхронизации потоков и совет по оптимизации обработки изображения. Также пока не понятно необходимо ли реализовывать очередь и поможет ли она ускорить процесс распознавания?

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


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

Я это понимаю, просто нужна помощь в синхронизации потоков и совет по оптимизации обработки изображения. Также пока не понятно необходимо ли реализовывать очередь и поможет ли она ускорить процесс распознавания?

Как правильно заметил Smorodov, голова не должна далеко уехать за 45ms...т.ч. весь тяжелый процессинг можно убрать в бэкграунд тред, который будет обрабатывать кадры с такой скоростью с какой сможет, а в основной тред запихнуть трекинг, который будет трекать лицо с последней посчитанной позиции. При таком пайплайне практически ничего синхронизировать не придется, только на каждой итерации основного цикла проверять не обновились ли данные от детектора и подменять ими текущую информацию о ROI, ну и засылать новый кадр тяжелому обработчику.

  • Like 1

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


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

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

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

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

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

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

Войти

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

Войти сейчас


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

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

×