TDA4VM-SK配置与应用杂谈
硬件信息:SK-TDA4VM 用户指南
处理器SDK Linux边缘AI文档
配置文档:SK-TDA4VM处理器SDK Linux文档-getting_started,详细说明了如何配置,下面是简要步骤:
物料准备: SK板,microUSB串口线,USB camera,HDMI/DP显示器,≥16GB的内存卡,网线和局域网*,串口电源(5-20V DC ≥20w),散热风扇
1)通过USB挂载SD卡到Ubuntu(在虚拟机设置里)
2)下载SD card .wic image,使用Balena etcher tool 1.7.0 把图像闪存到SD卡上
3)然后插入SD卡到SK板,拨码开关拨到数字端,系统从SD卡启动
4)SK板连接显示器,上电,进入界面。
5)连接串口线,在虚拟机设置中挂载USB串口,使用 minicom 串口通讯:
sudo apt-get install minicom #安装minicom(在minicom中自动换行:Ctrl+A Z W)
sudo minicom -D /dev/ttyUSB2 -c on
#输入用户名:root,登录tda4vm-sk
#若连接了USB摄像头此时会显示端口信息,也可以运行 ./init_script.sh 查摄像头端口号:/dev/video2
连接显示器后(HDMI/DP),可以鼠标点击试运行开箱即用的 GUI 应用程序,也可使用 Python 和C++参考示例开发边缘 AI 应用程序:
#配置
cd /opt/edgeai-gst-apps/configs/ #app_config_template.yaml中有参数介绍
vi image_classification.yaml #flow参数配置为摄像头输入input0
#运行实例,替换为configs下其他文件能执行不同任务,如object_detection.yaml
#Classification (python)
cd /opt/edgeai-gst-apps/apps_python
./app_edgeai.py ../configs/image_classification.yaml #ctrl+c退出
#Classification (c++)
cd /opt/edgeai-gst-apps/apps_cpp
./bin/Release/app_edgeai ../configs/image_classification.yaml
#视频流车辆检测
cd /opt/edgeai-gst-apps/scripts/optiflow
`./optiflow.py ../../configs/object_detection.yaml -t` #如果没有单引号,终端会将 -t 选项解释为一个单独的参数,而不是作为 optiflow.py 命令的选项之一
#多flows
flows:
# flowname : [input,mode1,output,[mosaic_pos_x,mosaic_pos_y,width,height]]
flow0: [input0,model1,output0,[160,90,800,450]]
flow1: [input0,model2,output0,[960,90,800,450]]
flow2: [input1,model0,output0,[160,540,800,450]]
flow3: [input1,model3,output0,[960,540,800,450]]
如果运行过程中突然重启,一般是需要加个风扇增强散热。
可选操作:连接网线,ifconfig查询板子ip地址,后面即可使用ssh登陆,可以使用vscode的remote插件来直接ssh登陆到板子,然后可以很方便地修改配置文件; 安装tensorflow,onnx,python和c++依赖库 /opt/edge_ai_apps#./setup_script.sh
Dataflows
GStreamer输入管道:
v4l2src device=/dev/video18 io-mode=2 ! image/jpeg, width=1280, height=720 ! jpegdec ! tiovxdlcolorconvert ! video/x-raw, format=NV12 ! tiovxmultiscaler name=split_01
split_01. ! queue ! video/x-raw, width=320, height=320 ! tiovxdlpreproc data-type=10 channel-order=1 mean-0=128.000000 mean-1=128.000000 mean-2=128.000000 scale-0=0.007812 scale-1=0.007812 scale-2=0.007812 tensor-format=rgb out-pool-size=4 ! application/x-tensor-tiovx ! appsink name=pre_0 max-buffers=2 drop=true
split_01. ! queue ! video/x-raw, width=1280, height=720 ! tiovxdlcolorconvert out-pool-size=4 ! video/x-raw, format=RGB ! appsink name=sen_0 max-buffers=2 drop=true
GStreamer output pipeline:
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
appsrc format=GST_FORMAT_TIME block=true num-buffers=1 name=background_0 ! tiovxdlcolorconvert ! video/x-raw,format=NV12, width=1920, height=1080 ! queue ! mosaic_0.background
tiovxmosaic name=mosaic_0
sink_0::startx="<320>" sink_0::starty="<180>" sink_0::widths="<1280>" sink_0::heights="<720>"
! video/x-raw,format=NV12, width=1920, height=1080 ! kmssink sync=false driver-name=tidss
边缘AI应用程序堆栈
TIDL
TIDL_Importer
RTOS SDK中内置TIDL_Importer,可以直接使用, 实现Demo模型转换和运行
Demo教程:MobileNetV2 Tensorflow,PeleeNet Caffe,JSegNet21V2 Caffe model,下面以PeleeNet为例
Config TIDL_Importer
export TIDL_INSTALL_PATH=/home/wyj/SDK/ti-processor-sdk-rtos-j721e-evm-08_06_01_03/tidl_j721e_08_06_00_10
#配置永久环境变量更方便,sudo gedit /etc/profile,末尾加入如上代码,然后source /etc/profile加载立即生效,但是后续有变动要记得改
#optional:tidlModelGraphviz tool 模型可视化工具
sudo apt install graphviz-dev
export TIDL_GRAPHVIZ_PATH=/usr
cd ${TIDL_INSTALL_PATH}/ti_dl/utils/tidlModelGraphviz
make
导入PeleeNet模型进行目标检测(caffe)
下载并提取.caffemodel,deploy.prototxt放入ti_dl/test/testvecs/models/public/caffe/peele/pelee_voc/
deploy.prototxt中改confidence_threshold: 0.4
cd ${TIDL_INSTALL_PATH}/ti_dl/utils/tidlModelImport
./out/tidl_model_import.out ${TIDL_INSTALL_PATH}/ti_dl/test/testvecs/config/import/public/caffe/tidl_import_peeleNet.txt
#${TIDL_INSTALL_PATH}/ti_dl/test/下面的配置文件在RTOSsdk8.6中找不到,要从SDK8.5复制。
#成功分配内存
# 用于推理的已编译网络和I/O.bin文件
#在ti_dl/test/testvecs/config/tidl_models/caffe/tidl_net_peele_300.bin中已编译的网络文件
# 在ti_dl/test/testvecs/config/tidl_models/caffe/tidl_io_peele_300_1.bin中已编译的I/O文件
# 在 ti_dl/utils/perfsim/tidl_import_peeleNet.txt/tidl_import_peeleNet...csv中网络分析的性能仿真结果
#若是tensorflow例程,.pb需要先运行tensorflow的.local/lib/python3.6/site-packages/tensorflow/python/tools/optimize_for_inference.py工具进行模型推理优化,再导入。
运行PeleeNet进行目标检测
#在文件ti_dl/test/testvecs/config/config_list.txt顶部加入:
1 testvecs/config/infer/public/caffe/tidl_infer_pelee.txt
0
#运行,结果在ti_dl/test/testvecs/output/
cd ${TIDL_INSTALL_PATH}/ti_dl/test
./PC_dsp_test_dl_algo.out
#若标注框大小不匹配,需要改deploy.prototxt文件顶部:dim: 512 dim: 1024
测试使用ti_dl/test/testvecs/input/ti_lindau_I00000.bmp作为语义分割的输入图像。
测试打印PC模拟所花费的时间,并将生成的后处理输出图像存储在ti_dl/test/testvecs/output/jsegNet1024x512.bin_ti_lindau_I00000.bmp 000000_tidl_post_proc3.png中,该图像显示为检测到的对象生成的分割掩码。
picture 1
EdgeAI TIDL工具
EdgeAI TIDL工具是TI提供的深度学习开发工具,后续会多次用到。
要求:OS——Ubuntu 18.04,Python版本——3.6
图 9
1)OSRT(开源运行时:TFLite、ONNX、TVM) 作为用户应用程序的顶级推理 API
2)将子图卸载到 C7x/MMA 以使用TIDL进行加速执行
3)在 ARM 核心上运行优化代码,以支持 TIDL 不支持的层(支持情况)
Setup - TexasInstruments/edgeai-tidl-tools at 08_06_00_05
sudo apt-get install libyaml-cpp-dev
git clone https://github.com/TexasInstruments/edgeai-tidl-tools.git #failed:手动安装证书 git config --global http.sslVerify false,export GIT_SSL_NO_VERIFY=1
cd edgeai-tidl-tools
git checkout 08_06_00_05
export SOC=am68pa
source ./setup.sh
#Docker Based X86_PC Setup 跳过,不用docker装
#配置变量
export SOC=am68pa
export TIDL_TOOLS_PATH=$(pwd)/tidl_tools
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TIDL_TOOLS_PATH
export ARM64_GCC_PATH=$(pwd)/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu
#配置永久环境变量更方便,sudo gedit /etc/profile,末尾加入如上代码,然后source /etc/profile加载立即生效
source ./scripts/run_python_examples.sh #编译运行
python3 ./scripts/gen_test_report.py #评估
#Compile and Validate on X86_PC for cpp_example
mkdir build && cd build
cmake ../examples && make -j && cd ..
Edge AI Studio
TI官方提供的云端环境,集成了一系列工具,无需本地搭环境,使用需要申请,提供两个工具:
1)模型编辑器:为 TI 嵌入式处理器训练、优化和编译 AI 模型。支持数据采集,标注,模型训练,以及上板编译,一步到位。目前仅支持分类和检测任务,只能使用modelzoo中的模型进行训练,比如OD任务只有yolox模型,灵活度不高,主打方便快捷。
2)模型分析器:远程连接到真实的评估硬件,基于jupyter笔记本,在 TI 嵌入式处理器上部署和测试 AI 模型性能,进行多个模型的Benchmark。前身叫做 TI边缘AI 云。
模型解析器
选TDA4VM设备,能使用3h,文件在顶端My Workspace; 进入后分两大板块:
找到模型: 比较模型性能, 能查看不同模型在板端的表现,用来选择适合自己需求的模型;
参考文献链接
https://www.ti.com.cn/zh-cn/video/6301563648001
https://software-dl.ti.com/jacinto7/esd/processor-sdk-linux-edgeai/TDA4VM/08_06_01/exports/docs/devices/TDA4VM/linux/release_notes_08_05.html