跳到内容

KhronosGroup/OpenVX-sample-impl

许可证 生成状态 编解码器

OpenVX 1.3示例实现

Khronos OpenVX™是一个开放的、免版税的计算机视觉应用跨平台加速标准。OpenVX支持性能和功率优化的计算机视觉处理,在嵌入式和实时用例中尤其重要,例如面部、身体和手势跟踪、智能视频监控、高级驾驶员辅助系统(ADAS)、物体和场景重建、增强现实、视觉检查、机器人等。

本文档概述了此示例实现的目的,并提供了构建和执行说明。

内容:

目的

该软件包的目的是提供通过一致性测试的OpenVX 1.3规范的示例实现。它不是一个参考实现。如果与OpenVX 1.3规范有任何差异,则不是有意的,应以规范为准。在这个示例实现中所做的许多设计决策都是出于方便而非性能优化。预计供应商的实现将根据其优先级选择不同的设计选项,并且规范的编写方式允许自由选择。除了一致性测试外,还有非常有限的测试,因为这并不打算直接用作生产软件。

此示例实现包含OpenVX 1.3中未包含的其他“实验”或“内部建议”功能。由于这些不是OpenVX的一部分,因此在构建过程中使用预处理器定义默认禁用这些。这些功能可能会被修改,也可能永远不会添加到OpenVX规范中,因此不应依赖这些功能。有关这些预处理器定义的更多详细信息,请参阅同一文件夹中的BUILD_DEFINES文档。

OpenVX示例实现的未来版本可能会发布,也可能不会发布,Khronos没有积极维护公共开源示例实现项目。

以下是此示例实现是什么和不是什么的摘要:

:

  • 通过OpenVX 1.3一致性测试

不是:

  • 参考实现
  • 优化的
  • 生产就绪
  • 由Khronos公开维护

构建和执行

示例实现包含两个不同的生成系统选项:cmake和concerto(非标准的基于makefile的系统)。每种方法的构建和执行说明如下所示。

C制动器

支持的系统:

  • Linux操作系统
  • 安卓
  • Windows(Visual studio或Cygwin)

预审:

  • python 2.x(使用python 2.7进行测试)
  • CMAKE 2.8.12或更高。(应在PATH中)
窗户:
  • Visual studio 12(2013)或更高版本,以便创建VS解决方案并使用VS编译器构建OpenVX和相关项目。(路径中需要DEVENV)或Cygwin。
安卓:
  • NDK工具链。

建筑物:

窗户:--------从VS/Cygwin命令提示符:>python Build.py--帮助对于Visual Studio解决方案,默认的CMAKE_GENERATOR是“Visual Studio 12”,您可以使用--gen选项进行更改。(cmake--帮助演示支持的生成器)Linux:------来自外壳:>python Build.py--帮助上面的命令将显示可用的构建选项,请遵循这些选项。VS解决方案将创建于:---------------------------${OUTPUT_PATH}/内部版本/${OS}/${ARCH}/OpenVX.sln为了从VS中构建和安装所有示例项目,请构建“install”项目。(默认情况下,Build.py会触发它)生成文件将在以下位置创建:--------------------------${OUTPUT_PATH}/build/${OS}/${ARCH}/$}CONF}为了构建和安装所有示例项目,请调用“makeinstall”。(默认情况下,Build.py会触发它)OUTPUT_PATH-输出路径,默认为根目录。操作系统-Win/Linux/Android。(Cygwin等于Linux)拱门-32/64CONF-发布/调试。启用/禁用实验选项(可选):-------------------------------------------------窗户:--------(1) 运行python脚本,设置--build=false(2) 打开cmake GUI(2.1)将源代码目录设置为根CMakeLists.txt所在的openvx根文件夹(2.2)将构建目录设置为${OUTPUT_PATH}/build/${OS}/${ARCH}(3) 选择要启用/禁用的选项(4) 单击“配置”按钮以更新“CMakeCache.txt”文件(不要单击“生成”按钮)(5) 重新运行python脚本。(您可以设置--build=true或从Visual Studio生成)Linux:------(1) 运行python脚本,设置--build=false(2) 导航到${OUTPUT_PATH}/build/${OS}/${ARCH}/$}CONF}(3) >生成edit_cache(4) 选择要启用/禁用的选项(5) 单击“c”配置(6) 单击“g”生成make文件(7) >进行安装

安装:

构建过程将OpenVX标头安装在“include”文件夹/可执行文件中,并将库安装在“lib”文件夹下的“bin”文件夹/libs中:${OUTPUT_PATH}/install/${OS}/${ARCH}/${CONF}
正在运行:
窗户:--------将${OUTPUT_PATH}/install/${OS}/${ARCH}/$}CONF}/bin添加到PATHLinux:------设置LD_LIBRARY_PATH${OUTPUT_PATH}/install/${OS}/${ARCH}/$}CONF}/bin$cd原始$${OUTPUT_PATH}/install/${OS}/${ARCH}/$}CONF}/bin/vx_test

协奏曲

协奏曲构建支持以下系统:

  • Linux(GCC或CLANG)
  • 达尔文/Mac OSX
  • Windows NT(Cygwin或本机Visual Studio 2013)

对于每个系统,请考虑以下先决条件:

1.Linux--------gcc是默认编译器。如果需要叮当声,那么可以选择通过将HOST_COMPILER环境变量设置为CLANG。如果使用gcc,则应使用4.3.0或更高版本。2.达尔文/OSX-------------Mac OSX用户需要使用MacPorts或Fink(或其他收藏夹包管理器)安装上述同一组包。3.Windows NT(Cygwin或本机)-----------------------------(赛格温)--------建议Windows用户安装Cygwin来构建OpenVX。获取并运行安装实用程序:http://cygwin.com/setup.exe除了默认值外,还必须手动选择gcc-core,make和cygwin安装实用程序中的gcc-g++包。都在里面“Devel”类别。应使用gcc 4.3.0或更高版本。(本机MS Visual Studio 2013)--------生成所需的包:-Microsoft Visual Studio 2013(至少)-为windows编译的make实用程序(示例):-mingw32-make.exe(网址:http://www.mingw.org)-来自XDCTools的gmake(http://downloads.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/rtsc/)要构建代码,请将“make.exe”的路径添加到在“vcvarsall.bat”批处理文件(配置使用VC编译的环境)从CMD窗口。

使用Concerto构建OpenVX

一旦安装了上述正确的包,就可以通过在OpenVX安装目录中键入“make”来构建示例实现(例如,“OpenVX_sample”)。

$cd打开vx_示例$制造

输出放在

输出/$(目标_ OS)/$(TARGET_CPU)/$/

这些变量在make输出中可见。这将被称为TARGET_OUT,尽管这可能在实际环境中不存在(用户可以自己定义)。

为了查看协奏曲所有make命令的列表和描述,类型:

$提供帮助

使用Concerto执行OpenVX

测试可以按如下方式手动运行。在任何环境中,可能都需要更改PATH以允许加载动态模块。根据第1节:构建中的描述,下面的$(TARGET_OUT)变量应替换为放置库和可执行文件的输出文件的实际路径。

在Linux上

TARGET_OUT通常为OUT/LINUX/x86_64/release

$cd原始$LD_LIBRARY_PATH=/$(目标输出)/$(目标输出)/vx_test
在Windows上(Cygwin)

TARGET_OUT通常是

输出/CYGWIN/X86/释放

命令:

$cd原始$LD_LIBRARY_PATH=/$(目标输出)/$(目标输出)/vx测试
在Windows上(本机)

TARGET_OUT通常是

out\Windows_NT\x86\版本

命令:

C: \>复制原始\*.*%TARGET_OUT%C: \>推送%TARGET_OUT%&&vx_test.exe
在Mac OSX上(从openvx_sample)

TARGET_OUT通常是

输出/DARWIN/x86_64/版本

命令:

$cd原始$DYLD_LIBRARY_PATH=/$(TARGET_OUT)/$(目标输出)/vx测试

构建说明示例

示例1-在Ubuntu 18.04上构建OpenVX 1.3

  • 带有递归标志的Git Clone项目,用于获取子模块
git克隆--递归https://github.com/KhronosGroup/OpenVX-sample-impl.git
  • 使用构建.py脚本
光盘OpenVX-示例-impl/python Build.py--os=Linux--arch=64--conf=Debug--conf_vision--enh_vision--conf_nn
  • 构建和运行一致性
export OPENVX_DIR=$(pwd)/install/Linux/x64/Debug导出VX_TEST_DATA_PATH=$(pwd)/cts/TEST_DATA/mkdir构建-ctscd内置ctscmake-DOPENVX_INCLUDES=$OPENVX_DIR/include-DOPENVS_LIBRARIES=$OENVX_DIR/bin/libopenvx.so\$OPENVX_DIR/bin/libvxu.so\;pthread\;dl\;米\;rt-DOPENVX_CONFORMANCE_VISION=ON-DOPENVX_USE_ENHANCED_VISION=ON-DOSPENVX_CONFORMANCE_NEURAL_NETWORKS=ON/电流互感器/cmake—构建。LD_LIBRARY_PATH=/库/bin/vx测试一致性

示例2-在覆盆子Pi上构建OpenVX 1.3

  • 带有递归标志的Git Clone项目,用于获取子模块
git克隆--递归https://github.com/KhronosGroup/OpenVX-sample-impl.git
  • 使用构建.py脚本
光盘OpenVX-示例-impl/python Build.py--os=Linux--venum--conf=Debug--conf_vision--enh_vision--conf_nn
  • 构建和运行一致性
export OPENVX_DIR=$(pwd)/install/Linux/x32/Debug导出VX_TEST_DATA_PATH=$(pwd)/cts/TEST_DATA/mkdir构建-ctscd内置ctscmake-DOPENVX_INCLUDES=$OPENVX_DIR/include-DOPENVS_LIBRARIES=$OENVX_DIR/bin/libopenvx.so\$OPENVX_DIR/bin/libvxu.so\;pthread\;dl\;米\;rt-DOPENVX_CONFORMANCE_VISION=ON-DOPENVX_USE_ENHANCED_VISION=ON-DOSPENVX_CONFORMANCE_NEURAL_NETWORKS=ON/电流互感器/cmake——构建。LD_LIBRARY_PATH=/库/bin/vx测试一致性

包含的单元测试

示例实现附带了一些单元健全性测试规范的一些示例。可执行文件称为:

vx测试(_T):

  • 主函数位于源文件中:openvx_sample/tests/vx_test。c(c)
  • 没有参数将运行所有包含的单元测试。
  • 参数将列出要运行的测试
  • 可以通过使用-t指定测试编号来运行单个测试
  • 期望从原始目录运行(程序在执行目录中查找图像文件)。

vx查询(_Q):

  • 主要功能在源文件中:openvx_sample/tools/query/vx_query。c(c)
  • 查询实现并打印出所有内核的详细信息

vx示例(_E):

  • 主函数位于源文件中:openvx_sample/examples/vx_graph_factory。c(c)
  • 这是一个使用所谓的图形工厂创建和运行图形的示例。这个示例超出了openvx规范的范围,但它是一个如何使用图形参数向客户机抽象图形细节的示例。

vx_bug13510:vx_bug13517:vx_bug13518:-练习代码以暴露修复的错误。

调试

要在调试模式下构建(这将输出到out/…/debug文件夹中,而不是比输出//因此,如果定义了TARGET_OUT,则必须对其进行更改。

$导出NO_OPTIMIZE=1$制造

$make TARGET_BUILD=调试

要启用跟踪(printfs/logs/etc),请使用掩码(较高优先级)或要启用的区域列表。在掩码中,区域是位位置。表达掩码为十六进制数。

$export VX_ZONE_MASK=0x<十六进制数>

或将列表用作一组以逗号分隔的区号(请参阅“sample/include/vx_debug.h”)

$导出VX_ZONE_LIST=0,1,2,3,6,9,14

将区域映射到位的列表可以在openvx_sample/debug/vx_debug中找到。小时

如果希望将这些变量作为命令行的一部分:

$未设置VX_ZONE_MASK$未设置VX_ZONE_LIST$制造$cd原始$VX_ZONE_LIST=0,3,16 VX_test<选项>

注:VX_ZONE_MASK将覆盖VX_ZONE_LIST。所以,如果你两个都设置好了实现可以看到VX_ZONE_MASK。

现在再次运行测试。

包装和安装

在Linux上,OpenVX的示例实现打包在make-in之后

输出/LINUX/x86_64/openvx-*.deb

安装DEB包

$dpkg-deb-i<path>/openvx-*.deb

错误报告

尽管Khronos没有积极维护这个示例实现的公共项目,但可以向工作组报告错误报告,以确保我们不会忽视未来的相关规范和实现问题。

如果在示例实现中发现任何错误,您可以通过以下方式通知Khronos工作组