TIM-VX编译体验

TIM-VX是VIP开发维护的开源项目,作用是作为后段将开源框架和VIP的ML加速器进行整合绑定,对VIP 提高其NPU的应用领域,扩大应用生态具有巨大作用,其官方介绍如下:

下载代码:

github仓库地址:GitHub - VeriSilicon/TIM-VX: Verisilicon Tensor Interface Module

实际代码量并不多,包含仓库在内共有87M。

编译

TIM-VX支持BAZEL和CMAKE两种构建系统,先用CMAKE尝试编译一下,编译顺序命令如下:

mkdir host_build
cd host_build
cmake ..
make -j8
make install

首先遇到了编译错误,是CMAKE版本太低导致

升级CMAKE

cmake的下载在这里​​​​​​https://github.com/Kitware/CMake/releases/download/v3.23.0/cmake-3.23.0.tar.gz

首先卸载系统自带CMAKE

sudo apt purge cmake

cmake编译遵照标准的Linux下源码包编译的三部曲

编译TIM-VX

配置成功:

编译:

安装:

sudo make install

安装目录包含两种文件,分别是库和头文件

TIM-VX要基于UNIFY SDK运行,但是X86主机环境下没有NPU,所以为了支撑TIM-VX在系统层面的运行,TIM-VX提供了pre-build的RUNTIME库仿真器件。

编译测试用例:

配置后编译:

cmake -DTIM_VX_ENABLE_TEST=ON ../

导出环境变量

export LD_LIBRARY_PATH=$PWD/../../../prebuilt-sdk/x86_64_linux/lib:/home/caozilong/Workspace/TIM-VX/host_build/lib:$LD_LIBRARY_PATH
export VIVANTE_SDK_DIR=`pwd`/../../../prebuilt-sdk/x86_64_linux/lib
export VSIMULATOR_CONFIG=czl
export DISABLE_IDE_DEBUG=1

之后运行./unit_test,出现段错误:

cl_viv_vx_ext.h是一个在线编译头文件,它的位置在

需要将其拷贝到VIVANTE_SDK_DIR指定的目标地址:

mkdir prebuilt-sdk/x86_64_linux/lib/include
cp prebuilt-sdk/x86_64_linux/include/CL prebuilt-sdk/x86_64_linux/lib/include -fr

再次执行unit_test不再有段错误

编译用例

cmake -DTIM_VX_ENABLE_TEST=ON -DTIM_VX_BUILD_EXAMPLES=ON ../

 编译后生成EXAMPLE目录

 执行LENET用例,打印TOP5输出。


结束

<think>嗯,用户想了解OPEN AI LAB Tengine框架的介绍和使用指南。结合用户提供的系统级指令和引用资料,我需要整理一个清晰的技术框架说明。 用户可能是个开发者或技术决策者,正在评估AI推理框架。从引用内容看,Tengine是面向嵌入式AIoT的轻量级推理框架,核心优势在于跨平台部署和模块化设计。尤其注意到引用[3]提到的OpenCV依赖问题,这对实际部署很关键。 准备从三个维度组织回答:首先是框架定位(突出其嵌入式场景特性),然后是核心功能(重点提异构计算和模块化),最后是使用流程(包括环境依赖和API调用)。特别要强调引用[1][2]中提到的应用场景,比如人脸门禁和边缘计算服务器。 技术细节方面需要严谨:编译命令要标注$符号,模型转换流程用独立公式呈现。考虑到用户可能直接复制代码,Python示例必须验证过语法正确性。最后补充的优化技巧要结合引用[3]的编译建议。 相关问题设计成阶梯式:从基础概念(如推理引擎定义)到实践问题(性能调优),这样既能覆盖新手也能满足进阶需求。特别注意在模型压缩部分引用[1]提到的终端AI特性,这是Tengine区别于通用框架的关键点。</think>以下为关于 **OPEN AI LAB Tengine** 框架的详细介绍及使用指南,结合技术文档与开源实践整理: --- ### 一、Tengine 框架核心定位 1. **目标场景** - 专为 **嵌入式终端设备** 及 **边缘计算AIoT场景** 设计的高效推理框架,适用于人脸门禁、机器人传感融合、边缘AI服务器等领域[^2]。 2. **核心优势** - **轻量化**:针对资源受限设备优化,内存/计算开销低。 - **跨平台**:支持 Arm/CPU/GPU/NPU 等多种硬件后端。 - **模块化**:可裁剪组件,按需部署(如算子库、模型格式支持)[^1]。 --- ### 二、核心功能与技术特性 | 功能模块 | 说明 | |------------------|----------------------------------------------------------------------| | **模型支持** | ONNX、Caffe、TensorFlow、Darknet 等格式转换与加载 | | **异构计算** | 自动调度 CPU/GPU/NPU 资源,支持 TensorRT、ACL、TIM-VX 等加速引擎 | | **高性能算子** | 针对 ARM 架构优化的卷积、池化等算子库(如 ARM Compute Library 集成) | | **动态部署** | 支持模型在线更新与热切换 | --- ### 三、快速使用指南 #### 步骤1:环境准备(以 Ubuntu 为例) ```bash # 安装基础依赖 $ sudo apt install build-essential cmake libopencv-dev # OpenCV 用于图像预处理[^3] # 克隆仓库 $ git clone https://github.com/OAID/Tengine.git $ cd Tengine ``` #### 步骤2:编译与安装 ```bash $ mkdir build && cd build $ cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/x86.gcc.toolchain.cmake .. # 指定工具链 $ make -j4 && sudo make install ``` #### 步骤3:运行图像分类示例(以 MobileNet 为例) ```python from tengine import tg # 1. 加载模型 graph = tg.Graph(None, "tensorflow", "./models/mobilenet.pb") # 支持 PB/ONNX 等格式 # 2. 预处理输入 input_tensor = graph.getInputTensor(0) img_data = preprocess_image("cat.jpg") # 使用 OpenCV 处理[^3] input_tensor.set_data(img_data) # 3. 执行推理 graph.Run() # 4. 获取结果 output_tensor = graph.getOutputTensor(0) probabilities = output_tensor.get_data() print("Top5:", get_top5(probabilities)) ``` --- ### 四、关键开发技巧 1. **模型优化** - 使用 `tm_optimizer` 工具量化模型(INT8/FP16): ```bash $ ./tools/tm_optimizer -m mobilenet.tmfile -o mobilenet_int8.tmfile -p int8 ``` 2. **自定义算子** - 参考 `examples/operator` 实现自定义算子并注册: ```c REGISTER_OPERATOR("CustomOp", CustomOpCreator); // 注册到算子库 ``` 3. **性能分析** - 开启 `ENABLE_TIMER` 编译选项,输出各层耗时: ```bash $ cmake -DENABLE_TIMER=ON .. ``` --- ### 五、典型应用场景 1. **人脸门禁系统** - 在 Arm Cortex-A53 设备上实现 200ms 内人脸识别[^2]。 2. **边缘视频分析** - 基于 NPU 加速 YOLOv5,实现 30fps 实时目标检测。 3. **多模态机器人** - 融合视觉/语音模型,部署于 Jetson Nano 平台。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

papaofdoudou

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值