TDA4的SDK环境搭建,SK开发板配置,TIDL demo运行,TIDL Tools与Edge AI Studio工具的介绍。
相关前置知识见上一篇:TDA4①:SDK, TIDL, OpenVX
下一篇:TDA4③:YOLOX的模型转换与SK板端运行
环境搭建需要下载SDK:PROCESSOR-SDK-J721E
硬件不同,环境配置也不同:
- EVM板:见第一二节的Linux SDK 和 RTOS SDK 环境配置
- SK板:直接烧录官方提供的SD卡镜像,见第三节TDA4VM-SK 配置
Linux SDK 环境搭建
对于Linux SDK,本项目不涉及底层修改,实际模型算法开发与部署过程中没有用到,但RTOS SDK对Linux SDK有依赖,因此需要配置。
1 | 添加执行文件并执行 |
通过在根目录下make linux或u-boot等各种命令,可以快速的让SDK编译出你所需要的产物。注意需要手工修改Rules.mak文件中的DESTDIR变量为你的TF卡挂载路径。
1 | #ti-processor-sdk-linux-j7-evm*/board-support/ |
RTOS SDK 环境搭建
在RTOS SDK中,模型转换主要用到的工具是TIDL_Importer,详见TIDL_Importer。
下载:
ti-processor-sdk-rtos-j721e-evm-08_06_01_03.tar.gz
ti-processor-sdk-rtos-j721e-evm-08_06_01_03-prebuilt.tar
+两个dataset.tar.gz
1 | tar -xf ti-processor-sdk-rtos-j721e-evm-08_06_01_03.tar.gz #解压 |
Vision Apps Demo 编译
1 | #修改文件 tiovx/build_flags.mak(没修改过则是默认) |
配置SD卡(EVM)
配置SD卡(EVM),在TDA4VM的开发过程中,都是使用TF卡进行开发的。在单片机开发平台下,通常是直接用电脑使用USB方式将固件烧写到板卡的eMMC或FLASH中去。在TI平台下,首选的调试方法是使用TF卡:TF卡会被划分为两个分区,一个是 *BOOT* 分区(FAT32),用于存放bootloader如uboot等,另一个是 *rootfs* 分区(ext4),用于存放Linux需要的文件系统。每次Ubuntu编译完成的固件都需要手动拷贝到TF卡中,然后将TF卡插入EVM上电启动。df -h
, 查得SD卡设备名 /dev/sdb
使用RTOS SDK prebuilt中的脚本依次执行:
脚本 | 作用 |
---|---|
sudo ./mk-linux-card.sh /dev/sdb | 用途:将TF卡重新分区、并且格式化 |
./install_to_sd_card.sh | 将该脚本旁边的文件系统压缩包直接拷贝到/media/USER/BOOT和/media/USER/rootfs中,需要十几分钟,之后该卡就可以启动了。 |
./install_data_set_to_sd_card.sh ./psdk_rtos_ti_data_set_08_06_00.tar.gz | 以及./psdk_rtos_ti_data_set_08_06_00_j721e.tar.gz,将数据集解压到TF卡中对应的位置,这样默认SDK配套的Demo就可以正常运行。 |
添加可执行文件至SD card
1 | cd ${PSDKR_PATH}/vision_apps |
然后即可插在EVM端运行,这里没有,跳过。
以上为EVM板的相关环境配置,以下为SK板的环境配置。
TDA4VM-SK 配置
硬件信息:SK-TDA4VM 官网
Processor SDK Linux for Edge AI Documentation
配置文档:Processor SDK Linux for SK-TDA4VM Documentation - getting_started,详细说明了如何配置,下面是简要步骤:
物料准备:
SK板,microUSB串口线,USB camera,HDMI/DP显示器,≥16GB的内存卡,网线和局域网*,串口电源(5-20V DC ≥20w),散热风扇
- 通过USB挂载SD卡到Ubuntu(在虚拟机设置里)
- 下载镜像文件SD card image:tisdk-edgeai-image-j721e-evm.wic.xz,本文选用08_06_00_05版本,后续若使用EdgeAI-TIDL-Tools则也需要08_06_00_06版本
- 使用Balena etcher tool 1.7.0 把 image
flash
到SD卡上 - 然后插入SD卡到SK板,拨码开关拨到数字端,系统从SD卡启动
- SK板连接显示器,上电,进入界面。
- 连接串口线,在虚拟机设置中挂载USB串口,使用 minicom 串口通讯:
1 | sudo apt-get install minicom #安装minicom(在minicom中自动换行:Ctrl+A Z W) |
连接显示器后(HDMI/DP),会有TI提供的例程界面,可以鼠标点击试运行开箱即用的 GUI 应用程序,也可使用 Python 和C++参考示例开发边缘 AI 应用程序:
1 | #配置 |
如果开机就不断重启,一般是电源问题,电源至少需要20w(pd协议)
如果运行过程中突然重启,一般是需要加个风扇增强散热
可选操作:
- 连接网线,ifconfig查询板子ip地址,后面即可使用ssh登陆,可以使用vscode的remote插件来直接ssh登陆到板子,然后可以很方便地修改配置文件
- 安装tensorflow,onnx,python和c++依赖库
/opt/edge_ai_apps#./setup_script.sh
Dataflows
GStreamer input pipeline:
1 | v4l2src device=/dev/video18 io-mode=2 ! image/jpeg, width=1280, height=720 ! jpegdec ! tiovxdlcolorconvert ! video/x-raw, format=NV12 ! tiovxmultiscaler name=split_01 |
GStreamer output pipeline:
1 | appsrc format=GST_FORMAT_TIME is-live=true block=true do-timestamp=true name=post_0 ! tiovxdlcolorconvert ! video/x-raw,format=NV12, width=1280, height=720 ! queue ! mosaic_0.sink_0 |
TIDL
TIDL_Importer
RTOS SDK中内置TIDL_Importer,可以直接使用, 实现Demo模型转换和运行
Demo教程:MobileNetV2 Tensorflow,PeleeNet Caffe,JSegNet21V2 Caffe model,下面以PeleeNet为例
Config TIDL_Importer
1 | export TIDL_INSTALL_PATH=/home/wyj/SDK/ti-processor-sdk-rtos-j721e-evm-08_06_01_03/tidl_j721e_08_06_00_10 |
Importing PeleeNet model for object detection (caffe)
下载并提取.caffemodel,deploy.prototxt放入ti_dl/test/testvecs/models/public/caffe/peele/pelee_voc/
deploy.prototxt中改confidence_threshold: 0.4
1 | cd ${TIDL_INSTALL_PATH}/ti_dl/utils/tidlModelImport |
Running PeleeNet for object detection
1 | #在文件ti_dl/test/testvecs/config/config_list.txt顶部加入: |
EdgeAI TIDL Tools
EdgeAI TIDL Tools是TI提供的深度学习开发工具,后续基于TDA4VM-SK板进行模型转换时会多次用到。
本节使用版本为08_06_00_05,要求:OS——Ubuntu 18.04,Python Version——3.6
- OSRT(Open Source Runtimes:TFLite,ONNX,TVM) 作为用户应用程序的顶级推理 API
- 将子图卸载到 C7x/MMA 以使用TIDL进行加速执行
- 在 ARM 核心上运行优化代码,以支持 TIDL 不支持的层(支持情况)
Setup - TexasInstruments/edgeai-tidl-tools at 08_06_00_05
建议用conda单独建环境: conda create -n tidl python=3.6
1 | sudo apt-get install libyaml-cpp-dev |
Image Classification | Object detection | Semantic Segmentation |
---|---|---|
Edge AI Studio
相当于edgeai-tidl-tools的云端应用程序,由TI提供服务器,帮助用户在进行模型开发与转换工作时,无需本地搭环境。
TI官方提供的云端环境,集成了一系列工具,无需本地搭环境,使用需要申请,提供两个工具:
- Model Composer: 为 TI 嵌入式处理器训练、优化和编译 AI 模型。支持数据采集,标注,模型训练,以及上板编译,一步到位。目前仅支持分类和检测任务,只能使用modelzoo中的模型进行训练,比如OD任务只有yolox模型,灵活度不高,主打方便快捷。
- Model Analyzer:远程连接到真实的评估硬件,基于jupyter notebook,在 TI 嵌入式处理器上部署和测试 AI 模型性能,进行多个模型的Benchmark。前身叫做 TI edge AI cloud。
Model Analyzer
选TDA4VM设备,能使用3h,文件在顶端My Workspace;
进入后分两大板块:
- Find your model: Compare model performance, 能查看不同模型在板端的表现,用来选择适合自己需求的模型;
- Get model benchmarks:
- Model performance 是配置好的jupyter notebook,无需修改一步步运行即可输出结果;
- 下面重点使用Custom models:
Custom models(onnxRT)
- 编译模型(在异构模型编译期间,支持的层将被装载到
TI-DSP
,生成推理所需工件(artifacts)) - 使用生成的工件进行推理
- 执行输入预处理和输出后处理
- 启用调试日志
- 使用deny-layer编译选项来隔离可能有问题的层并创建额外的模型子图
- 使用生成的子图工件进行推理
- 执行输入预处理和输出后处理
Create Onnx runtime with tidl_model_import_onnx
library to generate artifacts that offload supported portion of the DL model to the TI DSP.
参数配置见User options for TIDL Acceleration
1 | # 'sess' model compilation options |
Then using Onnx with the libtidl_onnxrt_EP inference library we run the model and collect benchmark data.
edgeai-tidl-tools:Python Examples
适用于嵌入式应用的深度学习推理参考设计
TDA4系列文章:
TDA4①:SDK, TIDL, OpenVX
TDA4②:环境搭建、模型转换、Demo及Tools
TDA4③:YOLOX的模型转换与SK板端运行
TDA4④:部署自定义模型