本篇文章来自极术社区与聆思科技组织的CSK6 视觉AI开发套件活动,更多开发板试用活动请关注极术社区网站。作者:冷山

1. 引言

非常感谢极术社区和聆思科技提供的这次试用机会,让我再一次被幸运击中,因为今年年初的时候,刚被赠了一本《AI嵌入式系统:算法优化与实现》AI算法书。书看完还没多久,AI开发套件又接踵而至了【你们衔接得挺好啊!】。这真可谓授人以渔还授人以鱼、专门利人毫不利己啊!
本文将分别从硬件资源、AI实际案例两方面与STM32F469I-DISCO 开发板进行对比,至于为什么是STM32F469I-DISCO 开发板呢?【吕子乔语录:跟我们赌,不是看你要什么,而是看我们有什么】

2. 硬件资源

CSK6011-NanoKit V1 开发板板载CSK6011A芯片模组,该芯片是聆思科技新一代的 AI 芯片 SoC 产品系列,采用多核异构架构,集成了 ARM Star MCU,HiFi4 DSP,以及聆思全新设计的 AI 神经网络处理内核 NPU,算力达到 128 GOPS。MCU和DSP的最高主频均达到300Mhz,内置最高支持8MB Flash,1MB SRAM,最高 8MB PSRAM。板载DAPLink调试器IC,外接一条USB 线即可实现供电、烧录、调试、串口监控。

STM32F469I-DISCO 是ST公司推出的一款针对高性能STM32F4系列设计的Cortex-M4开发板,180MHz STM32F469NIH6 Cortex-M4F 微控制器,具有 2MB Flash、384KB SRAM,板载 128MB(4M x 32 位)SDRAM 存储器,嵌入式 ST-LINK/V2-1 调试器/编程器,支持 USB 仿真功能,用于 USB 虚拟 COM 端口、大容量存储或调试。

3. 案例部署

3.1 csk6头肩&手势识别体验

功能介绍:
头肩检测:检测图像中所有人体的头肩位置,返回每个头肩的唯一id、位置坐标、检测得分等;手势识别:通过头肩检测识别用户的手势,返回当前目标的手势、得分等;支持5种手势,分别为LIKE( )、OK( )、STOP( )、YES(✌️)、SIX( );
案例体验:官网的教程非常详细,很细心,同时B站还有视频教程,在此就不画蛇添足了。

环境安装:https://docs.listenai.com/chips/600X/application/getting_start
开发指引:https://docs.listenai.com/chips/600X/ai_usage/hsgd/user_guide
PC端查看: https://docs.listenai.com/chips/600X/ai_usage/hsgd/viewer_usage
B站视频:[https://www.bilibili.com/video/BV1SG4y1h7hL/?spm_id_from=333.999.0.0&vd_source=1eafe261c5ad38826cc0bcdc91481c1e](https://www.bilibili.com/video/BV1SG4y1h7hL/?spm_id_from=333.999.0.0&vd_source=1eafe261c5ad38826cc0bcdc91481c1e)

实验结果:

3.2 f469水果识别部署

功能介绍:识别图像中的水果种类,支持3种水果,分别苹果、香蕉、橙子。

案例部署:
水果识别模型使用经典的LeNet-5网络,使用tensorflow 2.1.0框架中的tf.keras训练网络,得到.h5模型文件,使用tf.lite.TFLiteConverter量化模型,得到量化后的.tflite模型文件。

converter = tf.lite.TFLiteConverter.from_keras_model(model)     # 用于转换 Keras 模型(tf2.0)
converter.target_ops = [tf.lite.OpsSet.TFLITE_BUILTINS]
converter.optimizations = [tf.lite.Optimize.OPTIMIZE_FOR_SIZE]
converter.inference_input_type = tf.uint8
converter.inference_output_type = tf.uint8
converter.representative_dataset = lambda: rep_data_gen(x_val)
tflite_quant_model = converter.convert()

打开STM32CubeMx新建工程,选择Sofrware Packs->Select Components->STMicroelectronics.X-CUBE-AI,进入后把AI相关的两个包点开,第一个打上勾,第二个选择 System Performance。确定后若cube.ai工具没下载会自动重新下载。(Validation工程:可以用于验证模型在MCU中的推理结果,通过usart向端侧传输用户测试数据,验证返回的结果)

在下图1处选择tflite框架(目前支持Keras、tflite、ONNX),在2处选择STM32Cube.AI推理框架(还支持TFlite Micro),然后将上面量化后的.tflite模型导入即可;点击按钮Analyze,生成分析结果。

最后选择自己的IDE,就可以一键生成代码了,其中核心代码如下。配置好摄像头,将采集到的图像数据作为网络的输入数据,调用ai_mnetwork_run() 函数api,即可得到网络的推理结果。

const ai_buffer_format fmt = AI_BUFFER_FORMAT(&ai_input[i]);
ai_i8 *in_data = (ai_i8 *)ai_input[i].data;
for (ai_size j = 0; j < AI_BUFFER_SIZE(&ai_input[i]); ++j)
{/* uniform distribution between -1.0 and 1.0 */const float v = 2.0f * (ai_float) rand() / (ai_float) RAND_MAX - 1.0f;*(ai_float *)(in_data + j * 4) = v;
}ai_mnetwork_run(net_exec_ctx[idx].handle, ai_input, ai_output);
ai_float *out_data = (ai_float *)ai_output[0].data;
LC_PRINT("\r\n Mnist random data interfer output \r\n");
for(int i = 0; i < AI_BUFFER_SIZE(&ai_output[0]); i++)LC_PRINT(" %f \t",*(out_data+i));

实验结果:

Results for "network", 16 inferences @180MHz/180MHz (complexity: 11131952 MACC)TFLite file  : 0x0802a638 (293112 bytes)duration     : 456.640 ms (average)CPU cycles   : 82195318 (average)CPU Workload : 45% (duty cycle = 1s)cycles/MACC  : 7.38 (average for all layers)

4. 对比

4.1 硬件资源对比

浅显的认为AI开发板中的芯片、SRAM和Falsh比较重要。芯片决定模型的推理速度,SRAM则限制了模型输入数据尺寸和中间层输出结果尺寸的大小,而Flash则限制了模型参数所占内存。如果只从AI应用场景来比较,csk6比f469多一张NPU芯片,最高主频高120Mhz,SRAM多640k,Flash多14M,最关键的是价格还不到它的一半,这样看来,csk6的确是小甜甜啊。

4.2 实例案例对比

其实如果能够在csk6上部署水果识别模型,是对比两套开发板AI性能最直观的方法,但官方目前还没有开源其Tinker推理框架,不过在社区里有看到用TinyMaix推理模型部署手写数字识别的(https://aijishu.com/a/1060000000367824),挖个坑,下次补上。不过在ai应用方面,f469和csk6实在不是level,所以还是能用肉眼看出差距的。在f469上,水果识别模型推理一次平均需要456ms,加上图像采集、传输、显示,1秒最多1帧,能看出明显的卡顿。而csk6上的头肩&手势识别,应用很流畅,帧率能达到10FPS,精度能满足实际应用需求,官网显示:头肩跟踪识别率达到95%,手势识别达到91%。粗略的估计,csk6上模型输入图片尺寸为480×640×3,f469为120×160×3,大致得看做csk6模型参数是f469的16倍,帧率是10倍,整体AI性能大概是f469的160倍。

5. 总结

总而言之,CSK6011-NanoKit 开发板在图像视频 AI 应用方面,性能还是非常优秀的,你值拥有。同时期待官方后续提供更加完整的支持,如果能开放模型的推理框架,以及基于DSP、NPU核实现的各种不同算子api,那就更完美了。

【聆思CSK6 视觉AI开发套件试用】CSK6011与STM32F469I 开发板对比相关推荐

  1. 【聆思CSK6 视觉AI开发套件试用】基于CSK6011a_nano的虚拟打砖块交互系统

    本篇文章来自极术社区与聆思科技组织的CSK6 视觉AI开发套件活动,更多开发板试用活动请关注极术社区网站.作者:马博 非常感谢极术社区和聆思科技提供的机会,加之前做过其他视觉模块的测试项目,于是尝试申 ...

  2. 【聆思CSK6视觉AI开发套件试用】AI手势检测识别+编译Helloworld示例

    本篇文章来自极术社区与聆思科技组织的CSK6 视觉AI开发套件活动,更多开发板试用活动请关注极术社区网站.作者:Zeee 前言: 首先,感谢极术社区联合聆思科技给予宝贵的试用机会.借助本次对CSK6视 ...

  3. 【聆思CSK6 视觉AI开发套件试用】AI控制直流电机转速接口打通

    本篇文章来自极术社区与聆思科技组织的CSK6 视觉AI开发套件活动,更多开发板试用活动请关注极术社区网站.作者:oxlm 背景 在访问极术社区时,偶然发现聆思科技的CSK6开发板的评估活动,看CSK6 ...

  4. 【聆思CSK6视觉AI开发套件试用】从部署工程师和测试工程师角度体验CSK6

    本篇文章来自极术社区与聆思科技组织的CSK6 视觉AI开发套件活动,更多开发板试用活动请关注极术社区网站.作者:cfx 1.体验(baipiao)之前 作为一个精通多种移动端AI框架(TFLite.A ...

  5. 【聆思CSK6 视觉AI开发套件试用】人脸识别和 tflite-micro 语音识别推理实验

    本篇文章来自极术社区与聆思科技组织的CSK6 视觉AI开发套件活动,更多开发板试用活动请关注极术社区网站.作者:SunnyCase 1. 前言 非常幸运得到这次测评 CSK6 视觉AI开发套件的机会, ...

  6. 【聆思CSK6视觉AI开发套件试用】基于AI手势识别的剪子包袱锤游戏

    本篇文章来自极术社区与聆思科技组织的CSK6 视觉AI开发套件活动,更多开发板试用活动请关注极术社区网站.作者:寒冰1988 感谢极术社区联合聆思组织的本次活动,很荣幸得到本次体验国产AI MCU的机 ...

  7. 【聆思CSK6 视觉AI开发套件试用】基于CSK6的头肩手势检测控制会议相机进行数字变焦

    本篇文章来自极术社区与聆思科技组织的CSK6 视觉AI开发套件活动,更多开发板试用活动请关注极术社区网站.作者:海锋 基于CSK6的头肩手势检测控制会议相机实现变倍功能 首先感谢极术社区与聆思科技的信 ...

  8. 【聆思CSK6 视觉AI开发套件试用】开发环境与烧写问题解决

    本篇文章来自极术社区与聆思科技组织的CSK6 视觉AI开发套件活动,更多开发板试用活动请关注极术社区网站.作者:ifconfig 抱歉这么晚才发文章,由于疫情被封在家了一个多星期,刚开始正常. 一.开 ...

  9. 【聆思CSK6视觉AI开发套件试用】CSK6系列头肩识别初体验

    本篇文章来自极术社区与聆思科技组织的CSK6 视觉AI开发套件活动,更多开发板试用活动请关注极术社区网站.作者:張弩拔劍 背景 前言 聆思CSK4002以先进的AI算法, 出色的性价比, 以及优越的头 ...

最新文章

  1. UE商城资源 Motion Symphony 运动匹配插件
  2. 谈一谈使用Python入门量化投资
  3. 【java】人脸识别 虹软ArcFace 2.0-抽取人脸特征并做比对
  4. 儿童手工制作日历_怎么做手工儿童卡通绵羊日程管理小日历
  5. 东京理科大学 计算机系,东京理科大学
  6. Thrift中实现Java与Python的RPC互相调用
  7. 压力测试网站_一行命令就能网站压力测试和网站故障排除
  8. 腾讯---生成格雷码
  9. mysql 临时表 heap_mysql优化: 内存表和临时表
  10. NPOI读写Excel sheet操作
  11. 2022 基于SpringBoot/SSM的脚手架租赁系统
  12. xml网站地图在线生成制作工具
  13. 数学建模——stata基础操作
  14. CNTV CBOX的服务项
  15. 《辛雷学习方法》读书笔记——第三章 身体
  16. 网络转载的小波框架总结
  17. Newton冷却定理微分数学公式推导
  18. Java8的日期-时间学习
  19. 有一副由NxN矩阵表示的图像,这里每个像素用一个int表示,请编写一个算法,在不占用额外内存空间的情况下(即不使用缓存矩阵),将图像顺时针旋转90度。 给定一个NxN的矩阵,和矩阵的阶数N,请返回旋转
  20. 求奇数立方和和偶数平方和

热门文章

  1. 用ESP8266 把 CC2530+CC2592 刷 ZIGBEE2MQTT 固件
  2. TZOJ:2592 Trick or Treat on the Farm(tarjan求最大闭合路径)
  3. magisk小米怎么找boot.img。MIUI 10boot.img
  4. 支付宝 APP支付 网页支付
  5. 【解救ROS】ROS实战之SLAM建图详细过程(含代码)
  6. Cocos Creator ScrollView 性能优化
  7. 教你清理“没用的”缩略图临时缓存文件
  8. 产品追溯遇到了NFT
  9. 产品追溯+NFT一种实现思路
  10. 一本通 1267:【例9.11】01背包问题