Sigmstar Comake D1 SSD2355 AI开发 IPU ToolChain 模型推理 介绍
文章摘要:本文介绍了IPU-Toolchain模型推理流程及Simulator工具的使用方法,包括浮点/定点网络模型的推理步骤、工具参数配置(如图片输入、模型路径、预处理等)以及远程开发板推理操作。详细说明了Simulator的必选/可选参数功能,并提供了板端RPC服务连接、网络测试及内存优化方案。最后指引用户访问Comake开发者社区获取更多资源。全文约150字。
3. 模型推理
05IPU-Toolchain模型推理
1. Simulator PC仿真¶
SGS浮点网络模型推理流程如下:
输入一张图片 ——> 先经过前处理进行resize以及归一化等操作
——> 送到工具已经定义好的Net里进行推理
——> 得到最终的结果
SGS定点网络模型和端侧离线模型推理流程如下:
输入一张图片 ——> 先经过前处理进行resize操作
——> 送到工具已经定义好的Net里进行推理,Simulator会先进行convert_to_input_formats操作,
——> 再送到模型里,再进行推理
——>得到最终结果
1.1 Simulator工具使用示例¶
进入到该工具目录,工具使用示例:
(1) 测试dataset:
python3 SGS_IPU_Toolchain/Scripts/calibrator/simulator.py \
-i ~/SGS_Models/resource/classify/ilsvrc2012_val_set100/ \
-m ~/SGS_Models/tensorflow/mobilenet_v2/mobilenet_v2_float.sim \
-c Classification \
-n mobilenet_v2.py \
--num_process 20
--soc_version CHIP
或者可以使用传入 指定图片路径列表文件 的形式:
python3 SGS_IPU_Toolchain/Scripts/calibrator/simulator.py \
-i ~/SGS_Models/resource/classify/ilsvrc2012_val_set100/file.list \
-m ~/SGS_Models/tensorflow/mobilenet_v2/mobilenet_v2_float.sim \
-c Classification \
-n mobilenet_v2.py \
--num_process 20
--soc_version CHIP
(2) 测试单张图片,并将检测结果绘制在图片上,保存到 ./results/ 文件夹下:
python3 SGS_IPU_Toolchain/Scripts/calibrator/simulator.py \
-i ~/SGS_Models/resource/detection/coco2017_val_set100/000000567877.jpg \
-m ~/SGS_Models/tensorflow/ssd_mobilenet_v1/ssd_mobilenet_v1_float.sim \
-c Detection \
-n ssd_mobilenet_v1.py \
--draw_result ./results
--soc_version CHIP
-c
配置为Detection需要接后处理模型,使用TFLite_Detection_NMS
作为模型输出,具体见第5章节使用sgs_chalk构建后处理模型
1.2 Simulator工具使用参数说明¶
(1) 必选参数
- ①
-i
,--image
: 图片文件 / 图片文件夹路径 / 指定图片路径列表文件 。
使用须知
-
-i/--image
参数传入 指定图片路径列表文件 的形式时:新建input_list.txt,新增内容如下:
-
网络模型为单输入时:/path/to/image_test/2007000364.jpg
-
网络模型为多输入时:/path/to/image_test/2007000364.jpg,/path/to/image_test/ILSVRC2012_test_00000002.bmp
有多组数据可以写在下一行,读取时认为每行是模型的一次输入数据。完成input_list.txt后
-i 参数为: /path/to/input_list.txt
-
-
当
-i/--image
的参数为单张图片的路径时,simulator只对该图片推演; -
当
-i/--image
的参数为图片文件夹的路径时,simulator会对文件夹内的图片全部推演,此时增加可选参数--num_process(参数 > 1),可以开启多进程推演。
-
②
-m
,--model
: 网络模型文件路径。 -
③
-n
,--preprocess
: 前处理Python的文件路径,详见第2章前处理方法。
使用须知
-
多输入模型的前处理参数需使用多个前处理方法,前处理的个数和顺序需与模型输入个数和顺序保持一致。例如:
-n preprocess1.py,preprocess2.py 或者 --preprocess preprocess1.py,preprocess2.py
-
请使用与训练相同的图片前处理方式,每个输入的前处理方式需独立编写python文件。
- ④
--soc_version
: IPU Toolchain chip
使用须知
- 执行python3 SGS_IPU_Toolchain/DumpDebug/show_sdk_info.py 可查看IPU Toolchain具体适配那些chip及版本信息
(2) 可选参数
- ①
-c
,--category
: 模型的类别,主要有Classification / Detection / Unknown。(默认为Unknown)
使用须知
Classification
: 模型有1个输出,会根据输出排序输出分数由高至低的前5个。Detection
: 模型使用TFLite_Detection_NMS
作为模型输出,具体见第5章节使用sgs_chalk构建后处理模型。其他后处理请使用Unknown。Unknown
: 模型输出不属于上述两种类型,会输出全部的Tensor数值。
-
②
--dump_rawdata
: 保存模型输入二进制数据,文件名为图片名 + .bin,保存在当前路径。 -
③
--num_process
: 进程数,同时运行的进程数。(默认为1)
使用须知
- 不加该参数默认为单进程。
- ④
--draw_result
: 绘制目标检测网络选框结果。
使用须知
-
仅支持
-c
/--category
为Detection时使用该参数。 -
参数为结果保存文件夹路径(文件夹不存在时会自动创建)和画框的阈值,使用逗号( , )分隔保存路径与阈值。
-
输入阈值画出大于阈值的检测结果,不输入阈值则画出全部检测结果。
-
⑤
--continue_run
: 接着上次数据集剩下的部分运行。 -
⑥
--skip_garbage
: Fixed和Offline模型输出结果跳过无用数据。(已弃用) -
⑦
-l
,--label
: 数据集的标签文件路径 / 图片文字描述的标签。(已弃用) -
⑧
-t
,--type
: 模型的类型。(已弃用,simulator.py可根据传入模型自动判断出模型的类型) -
⑨
--tool
: sgs_simulator文件路径。(已弃用)
2. Simulator 远程到开发板推理¶
simulator也提供了远程仿真工具,通过在板端开启RPC服务,可以在PC仿真端一键获取离线模型板端推理结果;客户使用起来简单高效,用于比较和验证offline模型在板端推理结果和PC端推理结果的一致性,提升模型移植效率。
在pc上输入图片做完前处理之后,开启rpc服务,将输入数据和模型发送到板端进行推理,并在推理完成之后将板端结果返回到pc上,推理过程如下图所示:
2.1 Simulator 远程到开发板推理使用介绍¶
Linux SDK-alkaid已提供sdk/verify/release_feature/source/dla/ipu_server的app。
使用过程如下:
(1) 首先,板端运行ipu_server开启RPC服务(PORT为设定的port号)
./prog_dla_ipu_server -p PORT
(2) 其次,PC端运行simulator.py
python3 SGS_IPU_Toolchain/Scripts/calibrator/simulator.py \
-i /path/to/input_data \
-m /path/to/offline.img \
-n /path/to/preprocess.py \
--host 板端ip地址 \
--port PORT
--soc_version CHIP
参数解释如下:
-i
: 推理图片-m
: offline离线模型-n
: 前处理文件--host
: 板端ip地址--port
: 设定端口号
--soc_version
: IPU Toolchain chip
(4) 运行结果保存在./log/output里,请和simulator.py执行offline模型的结果比较。
(5) 如果上述比较结果不一致,请提供原始模型给FAE分析。
注意
- simulator 远程到开发板推理时进程数
--num_process
只能设置为1。
- simulator 远程到开发板推理需要保证PC端和板端的网络连通,否则可能出现如下报错:
网络连通测试可以用RuntimeError: std::future_error: Broken promise
nc
网络工具,操作方法如下:
板子上输入(PORT为设定的port号)
PC上输入nc -l -p PORT
然后在PC终端输入字符,如果在板端能显示,说明可以传输,否则请检查PC端和板端的网络连接。nc 板端ip地址 PORT
- 远程到开发板推理时设定的默认timeout时间为60秒,如果出现如下报错:
可能是文件太大,可在simulator.py增加配置timeout时间(单位:秒),如:TimeoutError: Timeout for ipu_create_model
--timeout 100
- 板端内存空间有限,如遇到模型文件太大引起网络传输导致内存不足的情况,可按照如下方法操作:
拷贝模型文件到板端可以访问的路径,simulator.py增加设定模型在板端的路径
配置--model_onboard_path 模型在板端的路径
--model_onboard_path
时,网络仅传输模型在板端路径的字符串,从而减小板端内存空间的使用。
3. 自定义simulator简介¶
4. 立即开始
加入Comake开发者社区
主页地址: CoMake开发者社区
SDK下载: CoMake开发者社区
文档中心: CoMake开发者社区
马上购买 : 首页-Comake开发者社区商店
更多推荐
所有评论(0)