1. 简介¶
X2/J2 是地平线机器人推出的一款针对 AI 算法及视觉应用设计开发的专用处理器, 具有低功耗高性能的特点。本手册介绍如何基于 X2/J2 开发模型、编译模型, 如何用编译后的模型库开发应用。
1.1. X2/J2 架构¶
X2/J2 芯片整体架构如图所示,包括如下模块:
2 x ARM CPU
2 x BPU
1 x IPU
SIF 模块
BIF 模块
其中,BPU 是卷积神经网络加速引擎,X2/J2 中采用的 BPU 架构称为 BPU Bernoulli V1,X2/J2 编译器中对应的 march 为 bernoulli。可以完成针对图像金字塔某层图像,或者图像指定区域进行神经网络前向推理计算。卷积神经网络的结构需满足 X2/J2 对网络模型结构的限制,可以支持任意多层、任意网络结构和输入大小的网络。SIF模块用于接收摄像头模组输出的图像数据,将图像数据(可为视频帧回灌输入或Camera输入)从外部传入X2/J2芯片内,经一系列加速计算处理后,输出数据通过BIF模块(SPI总线)传给AP(ARM CPU)。
X2/J2 IPU 模块中包含了图像金字塔。图像金字塔是基于 YUV420sp-NV12 格式,对 Y 和 UV 数据按照配置进行金字塔缩放操作。其中,每层的金字塔缩放系数、每层金字塔在内存中的位置均可灵活配置。IPU 预先将图像金字塔保存在 DDR 中,应用程序通过在金字塔中选择合适的层来获取图像数据,以降低带宽消耗。例如,如果系统需要输入图像 ROI,对 DDR 带宽占用较为友好的处理方式是 Resizer 先从 DDR 中读取图像金字塔的某一层数据,然后再做 resize。
1.2. X2/J2 视觉应用处理流程¶
X2/J2 提供对卷积神经网络的硬件加速,可以对图像金字塔、图像 ROI 区域、DDR 中的张量进行高效的 AI 推理,如全图目标检测。在 AI 视觉应用场景中, 主要采用如下的处理流程:
摄像头采集视频图像。通常是 720P、1080P 或其他分辨率的连续视频帧。
输入图像经过 CNN 检测网络的前向预测,得到若干 ROI 检测框。
ROI 检测框经过相应的 ROI 处理网络的前向预测,得到每个 ROI 的结果。
输出结果直接在 X2/J2 CPU 上做实时处理,或者将数据传给 AP 做处理。
1.3. 地平线天工开物开发工具链¶
地平线天工开物开发工具链(Horizon OpenExplorer)2019开发工具包,主要包括以下组件:
集成定点化方法的算法包,
编译器模拟器工具包,
嵌入式开发工具包。
本节概述了地平线天工开物开发工具链的主要组件,见下图:
1.3.1. 算法工具包¶
基于 Tensorflow 算法包,集成了地平线定点化训练方法;用户可使用此工具实现构建网络、定义 loss 函数等功能。
1.3.2. 编译器工具包¶
包含编译器、模拟器、模型合法性检查、模型性能评估等工具;用户可使用此工具将算法工具包训出的模型编译成能在 BPU 上运行的二进制指令序列,并评估模型在 BPU 上的帧率、带宽等性能指标。
1.3.3. 嵌入式开发工具包¶
用于提供 BPU 软件开发环境,包括:
BPU API:让用户能够在芯片上使用 BPU 各项功能。
Hobot framework:帮助用户快速开发应用。
嵌入式平台应用:包含通用的行人检测、车辆检测等感知应用 examples 和模型部署等工具;用户可依照地平线提供的 examples 开发特定场景的感知应用。
HBRT API:提供接口,用于执行在 BPU 中编译后的模型。
Platform API:用于管理 BPU 内存的接口。
除场景样例外,还提供了丰富的说明材料,帮助客户快速熟悉应用于地平线芯片的模型训练过程和应用程序开发流程。天工开物 2019 适用于 X2/J2 平台。