OpenVX开源神器分析
OpenVX开源神器分析
探秘OpenVX:加速计算机视觉的开源神器
项目地址:https://gitcode.com/rgiduthuri/openvx_tutorial
Khronos OpenVX材料
Khronos OpenVX是一个开放的、无版权的标准API,用于计算机视觉应用程序的跨平台加速。OpenVX实现了性能和功率优化的计算机视觉功能,在嵌入式和实时用例中尤为重要。涵盖基于功能的API和图形API,使OpenVX开发人员能够在异构计算架构上,高效地运行计算机视觉算法。将讨论从计算摄影和高级驾驶员辅助映射到图形API的一组示例算法。还涵盖了OpenVX和OpenCV以及OpenCL之间的关系。包括动手练习,让参与者开始使用OpenVX解决真实的计算机视觉问题。
材料基于OpenVX 1.1,可在具有最新64位操作系统(Windows、OS X或Linux)的PC上使用。介绍了各种平台上的练习和构建过程。另外还介绍了使用VirtualBox虚拟机的练习。
1)练习概述
2)使用VirtualBox软件和预构建的虚拟机在任何PC上构建(推荐)
3)在Mac或Linux PC上构建
4)使用Visual Studio在Windows PC上构建
注意:以下目录~是指包含openvx_tutorial子目录的目录。
1.练习概述
最好在完成讨论OpenVX生态系统概述,实际编程课演示后开始进行这些练习。
所有练习都保存在~/openvx_tutorial/tutorial_exers中。tutorial_exercises/CMakeLists.txt将所有练习作为单独的项目包括在内。所有练习文件夹都只包含一个以main()为入口点的.cpp文件。所有包含文件都保存在tutorial_exercises/include目录中。
tutorial_exercise子目录包含四个练习:
练习1:框架基础知识、图形概念、关键点跟踪
练习2:用户内核,构建OpenCV函数的包装器内核
练习3:张量对象介绍,为张量对象构建余弦激活用户内核
练习4:为神经网络余弦激活和张量对象构建基于OpenCL的用户内核
还有其他包含完整解决方案的文件夹:
solution_exerciseN:exerciseN的完整解决方案。仅供参考。
每个练习都需要修改exerciseN/exerciseN.cpp文件。以下是一些有用的说明:
在exerciseN/exerciseN.cpp注释中查找TODO关键字,以获取需要创建的代码段的说明。
步骤已编号,请按顺序执行。
所有头文件都保存在tutorial_exercises/include中。要打开头文件,请将光标移动到exerciseN/exerciseN.cpp中相应的#include语句,然后按F2。
“opencv_ccamera_display.h”是一个包装器,用于导入介质并使用opencv库显示结果。
#define DEFAULT_WAITKEY_DELAY 1用于指定每次帧处理后的等待时间(以毫秒为单位);要放慢速度,请使用更大的数字;或者使用0在每帧之后等待关键帧。
“VX/VX.h”和“VX/vxu.h”文件是从下载的OpenVX头文件的一部分https://www.khronos.org/registry/vx/
要查看任何OpenVX API或数据类型的定义,只需将光标移动到名称并按F2。
视频序列PETS09-S1-L1-View001.avi将位于~/openvx_tutorial/tutorial_videos文件夹中。
所有练习都使用此视频序列作为输入。
也可以选择在命令行上指定自己的视频序列作为练习的参数。
完成所有练习后,请尝试使用Release Build查看更好的性能。
2.使用VirtualBox软件和预构建的VM在任何PC上构建
已经用这个新的材料准备了一个VirtualBox虚拟机。确保在开始之前设置好计算机。
选择一台使用最新64位操作系统的笔记本电脑。
从下载并安装最新的VirtualBoxhttps://www.virtualbox.org/wiki/Downloads.
从下载虚拟机“Ubuntu-64-OpenVX.zip”(2 GB)https://goo.gl/YfcTLh并将文件提取到本地文件夹中(提取了~6 GB)。
此虚拟机映像包括运行所需的所有必要工具和包,包括以下两个OpenVX实现选项:
AMD在GitHub上的开源OpenVX(默认)
Khronos.org/registry/vx中的Khronos OpenVX示例实现
运行VirtualBox并从本地文件夹添加“Ubuntu-64-OpenVX”虚拟机[machine->add]。
如果无法安装64位虚拟机,即使有64位Windows,也需要在BIOS中启用虚拟化。
在“安全”部分中,启用虚拟化技术和VT-d功能。
在Windows 8.1上,还需要关闭Hyper-V(搜索“打开或关闭Windows功能”)。
启动“Ubuntu-64-OpenVX”虚拟机([用户名:OpenVX][密码:OpenVX])。
运行“Qt Creator”(点击左侧的Qt图标)并打开练习项目。
打开项目:/home/openvx/openvx_tutorial/tutorial_exercements中的CMakeLists.txt
单击“配置项目”打开CMake向导
单击“运行CMake”和“完成”
选择练习1作为活动子项目。
单击“Build”菜单下的“Open Build and Run Kit Selector”
在构建“默认”下选择“运行”“练习1”,然后按ESCAPE
展开“练习1”文件夹,然后单击“练习1.cpp”
将在第一次练习中修改这个文件
构建项目并运行。
单击“构建”菜单下的“运行”(或使用键盘快捷键Ctrl+R)
应该在一个窗口中看到视频(可以移动窗口以获得更好的视图)
按ESCAPE或'q'退出应用程序
注意,VirtualBox虚拟机可能没有最新版本的练习。当有新的更新可用时,可以将此GitHub项目中的文件复制到/home/openvx/openvx_tutorial目录中。
3.在Mac或Linux PC上构建
为了构建这些练习,需要以下内容:
最近使用64位操作系统(OS X或Linux)的笔记本电脑
下载并安装OpenVINO或OpenCV
下载并安装Qt Creator(可选)
下载并安装OpenVX实现:
AMD在GitHub上的开源OpenVX
源代码将位于~/openvx_tutorial/tutorial_exers/amdovx模块目录中。
将使用仅限CPU的构建。
Khronos.org/registry/vx中的Khronos OpenVX示例实现。
按照openvx_sample/README中的说明创建预先构建的openvx库
有关可用的商业实现,请参阅Khronos OpenVX参考资料。
下载PETS09-S1-L1-View001.avi并将其保存在~/openvx_tutorial/tutorial_videos文件夹中。
3.1使用开源OpenVX构建
创建一个空文件夹~/openvx_tutorial/build open source。目录结构应如下所示:
~/openvx_tutorial/
├── LICENSE
├── README.md
├── build-open-source/
├── scripts/
├── tutorial_exercises/
│ ├── amdovx-modules/
│ ├── CMakeLists.txt
│ ├── exercise1/
│ ├── exercise2/
│ ├── exercise3/
│ ├── exercise4/
│ ├── include/
│ ├── solution_exercise1/
│ ├── solution_exercise2/
│ ├── solution_exercise3/
│ ├── solution_exercise4/
└── tutorial_videos/
└── PETS09-S1-L1-View001.avi
准备构建:%cd~/openvx_tutorial/build open source;cmake/练习;制作
要构建并运行一个示例:%cd~/openvx_tutorial/build-open-source/exerce1;制作练习1
应该在窗口中看到视频。按ESCAPE或'q'退出应用程序。
3.2在Qt Creator中使用开源OpenVX构建
打开项目~/openvx_tutorial/tutorial_exers/CMakeLists.txt。
单击“配置项目”打开CMake向导
除非选择了CMake构建标志ENABLE_OPENCL=TRUE,否则本将使用仅CPU构建。
单击“Run CMake”(运行CMake)和“Done”(完成)
通过单击左下角绿色三角形中较高的一个,或使用CTRL-R编译并运行项目。
应该在窗口中看到视频。按ESCAPE或'q'退出应用程序。
3.3使用Qt Creator中预先构建的OpenVX库进行构建
打开项目~/openvx_tutorial/tutorial_exers/CMakeLists.txt。
单击“配置项目”打开CMake向导
指定参数:-DOpenVX_LIBRS_DIR=<openvx库的路径>-DOpenVX-LIBRS=<openvx库的列表>
单击“Run CMake”(运行CMake)和“Done”(完成)
通过单击左下角绿色三角形中较高的一个,或使用CTRL-R编译并运行项目。
应该在窗口中看到视频。按ESCAPE或'q'退出应用程序。
4.使用Visual Studio在Windows PC上构建
为了构建这些练习,需要以下内容:
使用最新Windows 64位操作系统的笔记本电脑
下载并安装OpenCV 3.1,并将OpenCV_DIR环境变量设置为<installed folder>\OpenCV\build folder。
下载并安装最新的CMake
下载并安装Visual Studio 2015社区(免费)或Visual Studio 2013
下载并安装OpenVX实现:
AMD在GitHub上的开源OpenVX
源代码将位于~/openvx_tutorial/tutorial_exers/amdovx模块目录中。
除非选择了CMake构建标志ENABLE_OPENCL=TRUE(见下文),否则将使用仅CPU构建。
Khronos.org/registry/vx中的Khronos OpenVX示例实现。
按照openvx_sample/README中的说明创建预先构建的openvx库
有关可用的商业实现,参阅Khronos OpenVX参考资料。
下载PETS09-S1-L1-View001.avi并将其保存在~/openvx_tutorial/tutorial_videos文件夹中。
4.1在Visual Studio中使用开源OpenVX构建
运行CMake(CMake-gui)
单击“浏览源代码”按钮,然后选择~/openvx_tutorial/tutorial_exers
单击“浏览构建”按钮,选择~/openvx_tutorial/Build open source
要在amdovx核心中启用OpenCL代码路径,请单击“添加条目”按钮
将名称设置为ENABLE_OPENCL
将类型设置为BOOL
选择值(即TRUE)
单击“确定”
单击配置按钮;会看到一个窗口,要求编译器使用:选择“Visual Studio 14 2015 Win64”或“Visual Studio 12 2013 Win64”
单击“生成”按钮
运行Visual Studio并打开解决方案~/openvx_tutorial/build open-source/tutorial_executes.sln
将练习1设置为启动项目
构建并运行项目。
应该在窗口中看到视频。按ESCAPE或'q'退出应用程序。
4.2使用Visual Studio中预先构建的OpenVX库进行构建
运行CMake(CMake-gui)
单击“浏览源代码”按钮,然后选择~/openvx_tutorial/tutorial_exers
单击“浏览构建”按钮,然后选择~/openvx_tutorial/Build pre-builded
单击“添加条目”按钮
将名称设置为OpenVX_LBS_DIR
将“类型”设置为STRING
将值设置为<openvx库的路径>
单击“确定”
单击“添加条目”按钮
将名称设置为OpenVX_LIB
将“类型”设置为STRING
将值设置为<openvx库列表>
单击“确定”
单击配置按钮;会看到一个窗口,要求编译器使用:选择“Visual Studio 14 2015 Win64”或“Visual Studio 12 2013 Win64”
单击“生成”按钮
运行Visual Studio并打开解决方案~/openvx_tutorial/build open-source/tutorial_executes.sln
将练习1设置为启动项目
构建并运行项目。
应该在窗口中看到视频。按ESCAPE或'q'退出应用程序。
5.原理介绍
在计算机视觉领域,处理速度和效率至关重要,尤其对于嵌入式和实时应用来说。这就是Khronos OpenVX大放异彩的地方。OpenVX是一个开放且免版税的标准API,专为跨平台加速计算机视觉应用程序而设计,它使开发者能够在异构计算架构上高效运行计算机视觉算法。
一、项目介绍
Khronos OpenVX材料 是基于OpenVX 1.1的实践课程,涵盖了函数式API和图形API,两者都能帮助开发者充分利用各种硬件平台。通过实例讲解,从计算摄影到高级驾驶辅助系统的一系列计算机视觉算法将被映射到图形API中。此外,课程还会探讨OpenVX与OpenCV、OpenCL的关系,以及如何利用它们解决实际问题。资料包括了基于VirtualBox的预建虚拟机环境,适合在任何64位操作系统(Windows、Mac或Linux)上搭建和练习。
二、项目技术分析
OpenVX支持两种主要的编程模式:
函数式API:允许直接调用预先定义的内核功能,便于快速实现基本任务。
图API:以数据流图的形式表示算法,使复杂的算法可以在不同硬件之间优化分配,实现性能最大化。
这个通过一系列逐步指导的实践项目,让开发者亲自动手编写代码,理解OpenVX的工作原理。
三、应用场景
OpenVX的应用广泛,尤其是在:
嵌入式系统:智能摄像头、无人机等设备中的实时图像处理。
自动驾驶:目标检测、道路识别等关键功能。
计算摄影:如HDR、深度感知等高级特效。
物联网(IoT):边缘计算场景下的低功耗高性能视觉处理。
四、项目特点
开放且免费:OpenVX遵循开放标准,无版税,可跨平台使用。
高度优化:针对异构计算架构设计,可充分发挥硬件性能。
兼容性好:能与其他流行库如OpenCV和OpenCL协同工作。
实践导向:提供丰富的实践练习,帮助开发者快速掌握核心技能。
易于上手:提供VirtualBox预建VM,使得在任何PC上构建和运行变得简单。
如果对计算机视觉或嵌入式开发感兴趣,或者正在寻找一种强大的工具来提升项目性能,OpenVX及其无疑是理想的选择。现在就加入,开启视觉加速之旅吧!
项目地址:https://gitcode.com/rgiduthuri/openvx_tutorial
https://gitcode.com/rgiduthuri/openvx_tutorial/overview?utm_source=artical_gitcode&isLogin=1
https://blog.csdn.net/gitblog_00016/article/details/139229696
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
2023-06-09 2023年中国创业独角兽分析报告
2022-06-09 汽车产业杂谈
2021-06-09 网路摄像头技术参数介绍
2021-06-09 MLIR: 编译器基础架构重定义
2020-06-09 Velodyne VLP-16激光雷达数据分析
2020-06-09 激光雷达和毫米波雷达
2020-06-09 深度学习Dropout技术分析