AI Express,中文名称AI应用开发中间件,是地平线芯片“天工开物”(Horizon OpenExplorer™️ Platform)AI开发平台的一部分,旨在通过全面降低开发者门槛、提升开发速度、保证开发质量,赋能产业智慧升级。
概述部分将一步一步介绍如何搭建AI Express开发环境、AIExpress源码如何下载和编译部署、如何运行AIEXPRESS自带的人体结构化参考方案(body solution)、如何运行测试用例、以及如何生成xstream和xproto库,AIExpress用户手册和地平线开发者社区相关资源。
搭建开发环境,主要包括:硬件准备、搭建软件开发环境和搭建开发板环境。
- 1台安装64位Linux操作系统的开发机(或者虚拟机)。支持的操作系统版本Ubuntu、CentOS,主要用于编译AIExpress代码和日常开发。
- 1台安装Windows操作系统的开发机,用于烧录旭日3开发板系统镜像,串口调试。
- 1个1080p的USB摄像头
- 1块x3sdb开发板(旭日3 AI 开发板)、1根USB转串口下载线、1根Micro USB线
a. Linux开发机环境准备
- 本地安装
1).安装CMake 3.15+
以上版本。安装方式如下:
wget https://github.com/Kitware/CMake/releases/download/v3.17.2/cmake-3.17.2.tar.gz \
&& tar -zxvf cmake-3.17.2.tar.gz \
&& cd cmake-3.17.2 \
&& ./bootstrap \
&& make \
&& sudo make install \
&& cd .. \
&& rm -rf cmake-3.17*
2).安装交叉编译工具链。
下载并安装芯片交叉编译工具gcc-linaro-6.5.0-2018.12-x86_64_aarch64-linux-gnu,推荐安装路径:/opt/
,如果交叉编译工具链有更新,需同步修改工具链配置。具体文件:AIEXPRESS代码工程根目录下的CMakeLists.txt, source/common/xstream/framework/CMakeLists.txt和source/common/xproto/framework/CMakeLists.txt。
具体修改内容:
set(CMAKE_C_COMPILER /opt/${工具链目录名}/bin/aarch64-linux-gnu-gcc)
set(CMAKE_CXX_COMPILER /opt/${工具链目录名}/bin/aarch64-linux-gnu-g++)
- 使用Docker环境
获取镜像及启动容器
docker pull hub.hobot.cc/aitools/tf-toolkit:v3.10.5
docker run -i -t hub.hobot.cc/aitools/tf-toolkit:v3.10.5
b. Windows开发机环境准备
- 下载开发板系统镜像及烧录工具:开发板系统镜像及烧录工具下载地址
各文件说明如下:
注意:该文档列的工具和镜像版本未保证是最新版本,最新版本请联系地平线获取:
名称 | 说明 |
---|---|
disk_X3SDB-Linux-1023wb.img | x3sdb开发板系统镜像文件 |
hbupdate_win64_0.7.6.zip | hbupdate开发板烧录工具(Windows) |
win32diskimager-1.0.0-install.zip | win32diskimager开发板烧录工具 |
CP210x_USB2UART_Driver.zip | Windows串口驱动安装包 |
PL2302-USB-to-Serial Comm Port.zip | Windows串口驱动安装包 |
PL2303-M_LogoDriver_Setup_v202_20200527.zip | Windows串口驱动安装包 |
hbupdate_linux_0.7.6.tgz | hbupdate开发板烧录工具(Linux) |
- 将USB Camera插入板子的USB口中,将网线一端插入开发板网口,另一端插入Windows开发机,电源插入开发板电源接口。
- 目前x3sdb开发板适配了1080p的USB摄像头(具体型号参考)
-
开发板系统镜像烧录教程: X3开发板板镜像烧录教程
-
开发板使用注意事项:https://developer.horizon.ai/forum/id=5efac2d32ab6590143c16024
更多参考:x3sdb开发板资料包(最新汇总版)
AIExpress github地址:https://github.com/HorizonRobotics-Platform/AI-EXPRESS
git clone git@github.com:HorizonRobotics-Platform/AI-EXPRESS.git
代码仓库提供了编译一键脚本build.sh,git clone代码后可直接编译。 编译时需要指定平台信息即可,具体编译如下:
- 本地环境
本地环境可以直接编译:
cd AI-EXPRESS
bash build.sh x3
- Docker环境
登录docker环境,执行如下命令进行编译:
ln -s /root/env/gcc-linaro-6.5.0-2018.12-x86_64_aarch64-linux-gnu/ /opt/gcc-linaro-6.5.0-2018.12-x86_64_aarch64-linux-gnu
cd AI-EXPRESS
bash build.sh x3
编译的可执行文件和库在build/bin和build/lib目录下
代码仓库提供了一键部署脚本deploy.sh,可将模型、可执行程序、库文件、配置文件以及测试图片整理到deploy部署目录中。ssh登录到开发板,通过scp命令,将deploy目录拷贝到x3sdb开发板上就可以运行人体结构化参考方案。
bash deploy.sh
该脚本会创建deploy部署包,包括如下几个部分:
名称 | 备注 |
---|---|
lib | 动态依赖库 |
models | 模型集合 |
face_solution | 人脸解决方案 |
body_solution | 人体解决方案 |
face_body_multisource | 多路输入多workflow解决方案 |
video_box | 视频盒子解决方案 |
configs | vio 配置文件 |
run.sh | 运行脚本 |
直接在开发板的deploy目录下,运行run.sh脚本即可运行指定的测试程序。以人体结构化参考方案为例,具体运行命令:
注意:具体示例的选择,参考可执行程序的实际打印,该文档更新可能滞后
sh run.sh w # w表示日志为warning等级,也可以输入d(debug)或者i(info)的不同等级
# 然后输入3,选择body,会看到打印 You choose 3:body
# 然后输入3,选择x3_sdb,会看到打印 You choose 3:x3sdb
# 然后输入1,选择single cam,会看到打印 You choose 1:single cam
# 最后输入6,选择single camera: usb_cam, default 1080p
当开发板上run.sh程序执行后,可以在PC上打开Chrome浏览器,输入x3sdb开发板的ip,然后点击页面的[Web展示端],即可查看人体结构化解决方案(body solution)的效果。
各个测试程序的介绍及运行方法请参考场景参考解决方案或者常见问题章节。
除了上述人体结构化解决方案外,人脸结构化参考方案和视频盒子参考方案也已开源。AIExpress会陆续开源人体行为分析参考方案,体感游戏参考方案,apa自动泊车参考方案,有任何建议或问题,欢迎在github上提Issue。
对AIExpress源码编译后,在Linux开发机上执行deploy_ut.sh脚本,生成含有测试用例的部署目录,并将单元测试的可执行程序、解决方案可执行程序及模型、配置文件拷贝到deploy目录下。
bash deploy_ut.sh
ssh登录到开发板,通过scp命令,将deploy目录拷贝到x3sdb开发板上。
单元测试程序位于deploy/unit_test目录下,在开发板上执行run_ut.sh脚本,即可运行测试用例。
cd deploy/unit_test
sh run_ut.sh
单元测试脚本暂时只支持face(人脸结构化参考方案)、body(人体结构化参考方案)、video_box(视频盒子参考方案),以及aiexpress每个模块的单元测试程序。
AI-EXPRESS支持独立编译生成xstream和xproto库,目前支持aarch64(默认)/Ubuntu/CentOS,3种平台。
以生成CentOS平台下的xstream库为例:
- 首先 修改AI-EXPRESS/source/common/xstream/framework/CMakeLists.txt中的编译选项开关
X86_ARCH
和X86_CENTOS
为ON
option(X86_ARCH "x86 architecture" ON)
option(X86_CENTOS "centos release" ON)
(默认编译xstream会生成libxstream.a,如果需要生成libxstream.so,修改AI-EXPRESS/source/common/xstream/framework/CMakeLists.txt中的编译选项BUILD_SHARED_LIBS
为true
,即可。)
set(BUILD_SHARED_LIBS true)
如果需要生成Ubuntu平台下的xstream库,修改AI-EXPRESS/source/common/xstream/framework/CMakeLists.txt中的编译选项开关X86_ARCH
为ON
,然后编译即可。
如果对CMakeLists.txt不做任何修改,则默认使用linaro-aarch64交叉编译工具链进行编译。
- 单独编译xstream:
cd AI-EXPRESS/source/common/xstream/framework
mkdir build && cd build && cmake .. && make -j
make install
编译结束后,AI-EXPRESS/source/common/xstream/framework下会生成output目录,output目录包含libxstream.a及头文件
xstream库的使用教程可参考AI-EXPRESS/source/common/xstream/framework/tutorials.
编译xproto库方法,与xstream相同。
参考doc目录下导航页doc/html/index.html
。
多路盒子的solution,具体描述可以参考:https://developer.horizon.ai/forum/id=5f2be161740aaf0beb31234a
行为分析solution,提供了摔倒检测的功能,功能搭建可以参考:https://developer.horizon.ai/forum/id=5efab48f38ca27ba028078dd
此外提供了手势识别的参考方案,可以参考https://developer.horizon.ai/forum/id=5f30f806bec8bc98cb72b288
可以参考:https://developer.horizon.ai/forum/id=5ef05b412ab6590143c15d6a
将X3作为UVC设备,通过USB接口接入android系统的硬件上,x3sdb开发板通过uvc协议传输图像,通过HID协议传输智能结果。具体可以参考: https://developer.horizon.ai/forum/id=5f312a94cc8b1e59c858150c