Группа Khronos, отвечающая за разработку стандартов семейства OpenGL и OpenCL, представила (https://www.khronos.org/news/press/khronos-finalizes-and-rel...) финальный вариант спецификации OpenVX 1.0 (https://www.khronos.org/openvx), определяющей API для разработки переносимых, высокопроизводительных и энергоэффективных приложений и библиотек для решения задач компьютерного зрения (обнаружение, слежение и классификация объектов на изображениях и видеоданных).
OpenVX предоставляет возможность использования серии алгоритмов для распознавания и отслеживания перемещения лица, тела и жестов, автоматизации видеонаблюдения, автоматических систем помощи водителю, реконструкции объектов и сцен, дополненной реальности, визуального осмотра, робототехники и многих других применений. Обработка данных в OpenVX-приложениях производится через манипуляцию с графом функциональных узлов, работа с которым может быть ускорена за счёт привлечения CPU, GPU, DSP и дополнительных аппаратных устройств, а также раздельной обработки фрагментов (tiling).URL: https://www.khronos.org/news/press/khronos-finalizes-and-rel...
Новость: http://www.opennet.me/opennews/art.shtml?num=40883
Давно жду, точнее жду реализации данной спецификации. а то зоопарк cv плодится.
Круто!
Надеюсь, что в скором времени можно будет сосредоточиться в основном на алгоритмах, а не на низкоуровневых оптимизациях.
> в основном на алгоритмах, а не на низкоуровневых оптимизацияхОбнаружены взаимоисключающие параграфы. Хороший алгоритм неизбежно учитывает низкоуровневые детали. И именно поэтому и работает быстро. Чудес не бывает и никакой декларацией спеков свойства железа не меняются.
Ты увидел параграфы в одном предложении?!!
По теме: в том-то и дело, что алгоритм может и должен учитывать эти особенности. Но самому программисту совсем не обязательно будет заморачиваться с реализацией и полировкой узких мест.
Например, многие алгоритмы распознавания требуют вычисления интегрального изображения. При этом для разных платформ можно задействовать реализации на SSE, NEON, шейдерах, OpenCL, CUDA и т.п. штуки. Если мне не придётся заморачиваться с этими деталями, а вызвать просто функцию vxIntegralImage, которая в свою очередь будет использовать находящуюся в SDK или драйверах оптимизированную под данный конкретный девайс функцию, то я буду прыгать от счастья.
Понимаешь в чём профит? Заниматься низкоуровневыми, а не алгоритмическими оптимизациями тоже иногда интересно, но факт в том, что сотрудники компании-производителя владеют большими данными о своих устройствах и смогут лучше оптимизировать именно низкоуровневые операции.Это известный факт, поэтому неизменно пользуются популярностью всякие интеловские MKL, IPP, AMD и Nvidia SDK и т.д. А теперь всё это ожидается:
1. в унифицированном виде из коробки;
2. бесплатно.
> Ты увидел параграфы в одном предложении?!!Это "крылатая фраза", применяемая в переносном смысле :).
> Понимаешь в чём профит?
Ну да, самые типовые вещи - может и вынесут. Ну примерно как с кодеками это делают. Правда тут тоже вопрос - насколько это будет про ВАШ девайс и ВАШ алгоритм. Но вообще пойнт валидный.
> ожидается:
> 1. в унифицированном виде из коробки;
> 2. бесплатно.Ну это в идеале :)
да нету там никаких взаимоисключающих. во-первых не "неизбежно учитывает", а "в большинстве случаев учитывает". во-вторых, автор вообще ничего не говорил о _хороших_ алгоритмах
Не, я мысль автора понял - он хочет нечто типа либы стандартных алгоритмов, оптимизнутых под железяку. Вполне разумная хотелка.
В том-то и дело, что пофиг в каких алгоритмах. Это как спецификация OpenGL для игр: никакой разработчик игр не будет делать свою реализацию OpenGL функциональности для конкретной игры.