Closed windfallw closed 1 year ago
emm,这涉及到设计思路的细节,我还是以中文表达才能比较准确描述我的想法,你也可以使用中文来交流讨论。
关于模型转换脚本固定相关宏名称的原因,主要是两方面原因,使用角度考虑和实际场景考虑。
关于为什么不把多个测试用例合并到一个例程里,这个差别比较轻微,我描述下我略微倾向于多个例程分开的原因
auto_test这个原本是我临时手写的测试脚本,所以就是简单复制粘贴了,你的改动可以的,我稍后再完善下
综上所述,目前计划是,1.增加一个独立benchmark工程进行单纯的评测操作;2.完善自动测试脚本。
- 关于模型转换脚本固定相关宏名称的原因,主要是两方面原因,使用角度考虑和实际场景考虑。
模型和宏名称可以固定,但考虑到如果有包含多个模型的需求的话,最好以static
声明mdl_data
数组,另外两个宏定义MDLBUFLEN
和LBUFLEN
在包含多个模型的时候可能会覆盖。可以给模型转换脚本增加一个可选的是否根据模型名称生成头文件的功能。
比如 mbnet_96_v1 , mbnet_96_v1.0902 等临时的命名
关于这个版本号的问题完全可以在python转换脚本中直接把版本号给截断。
反之固定相关名称,我只需要执行一次模型转换,再执行一次编译即可查看运行结果。
如果示例模型的命名是按一个格式固定来命名的话我觉得完全可以做到只填写一次模型名。
我也更倾向于用户在转换脚本生成的文件里手工修改自己想要的相关名称
可以给模型转换脚本增加一个可选字段,用于判断是否根据模型名称生成头文件,方便有需要的用户。
关于为什么不把多个测试用例合并到一个例程里,这个差别比较轻微,我描述下我略微倾向于多个例程分开的原因
使用mdk类ide的用户并不需要给cmake的命令执行加上如
cmake -DMNIST=1 -DCIFAR10=0 -DVWW=0 -DMBNET=0 ..
来启动对应示例,只需要包含tm_examples.h
,并在其中将对应的demo的宏定义由0修改为1即可编译相对应的demo。
给cmake添加这个命令主要是为了方便auto_test.py
现在是build_test.py
进行快速测试,也就是说只有build_test.py
才需要给cmake传参,因为它是自动脚本不能像人一样手动的在tm_examples.h
中开启相应的demo。
因此例程完全可以合并到一起,并且使用难度反而比之前的更低。如果实在要分开的话,其实也可以做到共存。只需要给单独的例程中的CMakeLists.txt
给加回去,并加上一个宏定义,这个宏定义用于判断当前例程的头文件是包含外部的tm_examples.h
还是直接包含tinymaix.h
即可。
需要修改的地方可以告诉我,我可以进行修改。
另外我可以上传一个Platformio
直接 include tm_examples.h
编译例程的demo方便说明
对于tm_examples.c来说,它的位置摆放相对于example下其它目录位置是异常的,自然的设计是example下每个目录的关系是平等的, 但tm_examples.c使得某几个目录的地位不同于其它example,不是很自然。
总的来说,你的PR改动带来的效果比较微妙,两种方式都说的过去,对于不同使用习惯的用户来说可能会有不同立场 你的提交我也反复斟酌了一个多小时,但是想想为了这些细微的差别花时间去比较确实意义不大。 benchmark毕竟只是评测场景,最近我在设计maixbox(上层具体应用工具箱),我会根据实际应用场景里的使用便利性去微调下层设计。 感谢你的关注与支持!
Description:
I'm tring to make the examples more easy to port to any other platform, most of the changes focus on how to make TinyMaix as an universal library.
Changes:
add
tm_examples.h
as the entrance of all the demos (only support 4 demos currently)rename
auto_test.py
tobuild_test.py
and make it more usefulin tool directory (TODO)
mdl_data
before)convert.py
to covert all the examples needed models. (but I couldn't find the way to do this, only findmnist
andmbnet
convert method inauto_test.py
)Tested on macOS and ESP-IDF