-
Notifications
You must be signed in to change notification settings - Fork 10
Boost Color implementation #80
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Boost Color implementation #80
Conversation
И тут ещё тест перестал проходить, мне кажется, это всё из-за смены типа. |
photoeffects/src/boostColor.cpp
Outdated
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@Stragger , такая конструкция с циклами работает быстрее, чем srcHls += Scalar(0, 0, intensityInt)
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Да, быстрее.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Странно. Очень странно.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Собрал все под Windows (Windows 8, MSVS 2012, TBB 4.2, Intel Core i5-3330, 8GB RAM), получил обратный эффект: такой вариант с циклами работает ~2.8 мс, srcHls += Scalar(0, 0, intensityInt)
--- ~0.7 мc.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Поправлю на второй вариант, действительно лучше одна строка, чем цикл, время если и отличается, то не критично.
Эффект действительно немного отличается, но по мне он не хуже, просто другой. |
Поправил отступы, добавил замеры времени, не отличаются они. |
Жаль. Думаю, что если мы хотим добиться хорошего времени при компиляции MSVС, надо разбираться, почему переход из RGB в HLS/HSV не ускоряется и, возможно, реализовать его самостоятельно. С GCC, насколько я понимаю, проблем быть не должно (было бы хорошо, если бы кто-то собрал все это GCC и измерил время). @valentina-kustikova , что думаешь? |
@druzhkov-paul , мне кажется, что сейчас идут какие-то "танцы с бубном" :), потому что идут попытки поменять алгоритм, но мы не понимаем, зачем и из-за чего мы это делаем. Насколько я помню, мы договаривались, что Артем запустит IPS (инструкцию я присылала) и пришлет картинку с полученным профилем перед тем, как менять пространства с HLS на HSV или наоборот. Поэтому предлагаю именно это и проделать. Concurrency-анализ должен показать, как распределена нагрузка между потоками при вызове каждой функции. Сейчас у меня вообще складывается ощущение (исходя из времени), что конвертация в HLS (HSV) последовательная. Было бы неплохо иметь аналогичный профиль и под Ubuntu, чтобы можно было их сравнить и сказать, что идет по-разному. При этом конечно же стоит посмотреть время на обеих системах. @Stragger , договоритесь с кем-то из ребят, у кого реальная система с Ubuntu, чтобы они запустили вашу реализацию с замерами времени. Для упрощения процесса снятия профиля можно написать приложение, которое ничего не делает, кроме прямой и обратной конвертации (по факту выдернуть узкое место функции). Именно с него снимать замеры времени и строить профиль. |
Сделал приложение которое выполняет только конвертацию туда и обратно. Ну в общем, то что и написал Павел. |
@Stragger , а можно скриншот предварительно прислать, чтобы разговор был предметным? |
угум, легко, я на почту их скинул. |
@Stragger , а можно картинки с результатами Concurrency-анализа на 4-ех потоках, причем мне нужна не вкладка Summary, а та, где изображено 4 потока и распределение нагрузки. |
Я добавил табличку(лежит со всеми остальными таблицами, AS - hls test) с замерами времени для приложения, которое bgr в hls переводит и обратно, конвертировались картинки разного размера. По замерам можно увидеть, что распараллеливание там всё-таки есть, правда для картинок маленького разрешения, ускорения нет, а наоборот. Похожий эффект и при использовании HSV, различия по скорости между hls и hsv не заметил. |
Залил финальную реализацию, поправил регрессионный тест, т.к. перешёл на целочисленные изображения и там проблемы с округлением. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Табуляции...
Boost Color filter optimization
Если будут еще идеи, как можно ускорить работу данного фильтра, предлагайте, пробуйте, делайте pull request'ы. |
Перешёл на работу с CV_8U стало быстрее.
Но конвертирование в hls, bgr и увеличение интенсивности не ускорились.
Т.е. ускорение достигается в результате избавления от конвертирования в CV_32F.
Ну да, по сути это было бесполезным действием, т.к. обычно пользователи работают с CV_8U.
Текущее время 45-47 мс, как ещё ускорить идей пока нет.