运用FP-AI-VISION1的影像分类器

智能计算 时间:2022-05-04来源:CTIMES

意法半导体(ST)持续积极参与高速发展的嵌入式人工智能领域。为了在具成本效益和低功耗的微控制器上加快运用机器学习和深度神经网络,ST开发全方位的边缘人工智能生态系统,嵌入式开发人员可以在各种STM32微控制器产品组合中,轻松新增利用人工智能的新功能和强大的解决方案。

图一显示ST AI解决方案之于整个STM32产品组合,而且已经拥有预先训练神经网络的嵌入式开发人员,可以在任何采用Cortex M4、M33和M7的STM32上移植、优化和验证这整个产品组合。STM32Cube.AI是 STM32CubeMX的AI扩充套件,让客户能以更高效率开发其AI产品。
利用深度学习的强大功能可以增强讯号处理效能,并提升STM32 应用的工作效率。
本文概述FP-AI-VISION1,此为用于计算机视觉开发的架构,提供工程师在STM32H7上执行视觉应用的程序代码范例。

图片.png

 
图一 : 执行机器学习和深度学习算法的STM32产品组合

从FP-AI-VISION1程序代码范例开始,简易达成在边缘执行的各种计算机视觉使用案例,例如

‧ 生产在线的物体分类,藉以根据物体的类型调整输送带速度;
‧ 侦测产品的一般瑕疵;
‧ 区分不同类型的对象,例如:螺丝、意大利面、乐高零件,并分拣到不同的容器中;
‧ 对设备或机器人操作的材料类型进行分类,并随之调整行为;
‧ 对食品类型进行分类以调整烹调/烧烤/冲泡或重新订购货架上的新产品。

FP-AI-VISION1
概述
FP-AI-VISION1是STM32Cube功能套件(FP),提供采用卷积神经网络(CNN)的计算机视觉应用范例。其由STM32Cube.AI产生的软件组件和AI计算机视觉应用专用的应用软件组件组成。

功能套件中提供的应用范例,包含:

‧ 食品识别:辨识18类常见食品;
‧ 人体感测:识别影像中是否有人;
‧ 人数统计:依照物体侦测模型计算情境中的人数。

主要特色
FP-AI-VISION1在与STM32F4DIS-CAM摄影机子板,或是B-CAMS-OMV摄影机模块搭配连接的STM32H747I-DISCO板上运作,包括用于摄影机撷取、画格影像预处理、推断执行的完整应用韧体和输出后处理。这也提供浮点和 8 位量化 C 模型的整合范例,并支持多种数据存储器设定,满足各种应用需求。

此功能套件最重要的其中一项关键优势是提供范例,描述如何将不同类型的数据有效地放置在芯片上的内存和外部内存中。用户因此能够轻松了解最符合需求的内存分配,并有助建立适用于STM32系列的自定义神经网络模型,特别是在STM32H747-Disco板上。

图片.png

 
图二 : FP-AI-VISION1评估装置范例

FP-AI-VISION1 包括三个采用 CNN 的影像分类应用范例:

‧ 一种对彩色(RGB 24位)画格影像执行的食品识别应用;
‧ 一种对彩色(RGB 24位)画格影像执行的人体感测应用;
‧ 一种对灰阶(8位)画格影像执行的人体感测应用。

本文将重点介绍食品识别和人体感测之两种范例。

首先讨论食品识别应用。食品识别CNN是MobileNet模型的衍生模型。MobileNet是适用于行动和嵌入式视觉应用的高效率模型架构,此模型架构由Google[1]提出。
MobileNet模型架构包括两个简单的全局超参数,可以高效在延迟和准确度之间进行权衡。原则上,这些超参数可让模型建构者根据问题的限制条件,决定应用大小适合的模型。考虑STM32H747的目标限制条件,此软件套件中使用的食品识别模型是透过调整这些超参数建构而成,以便在准确度、运算成本和内存占用之间进行最佳权衡。

图三为食品识别模型的简单执行流程。这在STM32H747上执行,大约需要150毫秒才能完成推断。

图片.png

 
图三 : 食品识别模型的执行流程

其次,将说明人体感测应用。FP-AI-VISION1 提供两个人体感测的范例应用:

‧ 一种采用低复杂度CNN 模型(所谓的Google_Model),用于处理分辨率为96×96像素的灰阶影像(每像素 8 位)。这个模型可从:storage.googleapis.com下载。
‧ 一种采用更高复杂度的CNN模型(所谓的 MobileNetv2_Model),用于处理分辨率为 128×128像素的彩色影像(每像素 24 位)。

在此观察前一个模型,人体感测应用程序可识别影像中是否有人。在与STM32F4DIS-CAM连接的STM32L4R上执行这个应用程序时,大约需要270毫秒来推断。而闪存和 RAM 的大小足以在微控制器上执行神经网络 (NN),如图四所示。


图片.png
 
图四 : 人体感测概览

人体感测可利用从低功率唤醒,使用案例包括开灯、开门或其他任何自定义方法。一般用途通常采用被动红外线传感器,藉以在侦测到移动的时间和地点触发事件。不过,这种PIR 系统的问题是可能发生误报。如果有猫经过或在风中飞舞的树叶,可能会触发这个系统。人体感测应用只会侦测人类,并且有助于轻松开发更智能的侦测系统。

系统架构
FP-AI-VISION1的顶层架构,如图五所示。

图片.png
 
图五 : FP-AI-VISION1架构

应用建构流程
从浮点 CNN 模型(使用 Keras 等架构设计和训练)开始,使用者产生优化的C程序代码(使用STM32Cube.AI 工具)并整合到计算机视觉架构中(FP-AI-VISION1 提供),以便在 STM32H7上建构计算机视觉应用。

产生C程序代码时,使用者可从下列两个选项中择一:
‧ 直接从CNN模型以浮点方式产生浮点C程序代码;
‧ 或者对浮点CNN模型进行量化,得到8位模型,随后产生对应之量化后的C程序代码;
对于大多数 CNN 模型,第二个选项可以减少内存占用(闪存和RAM)以及推断时间。对最终输出准确度的影响则取决于CNN模型以及量化过程(主要是测试数据集和量化算法)。


图片.png
 
图六 : FP-AI-VISION1架构

应用执行流程
对于计算机视觉应用,整合需要一些数据缓冲区,如图七所示。

图片.png

 
图七 : 执行流程中的数据缓冲区

应用过程依序执行下列操作:

1. 在 camera_capture buffer中撷取摄影机画格(透过DCMI数据缓存器中的DMA引擎)。
2. 此时,根据选择的内存分配配置,将camera_capture buffer内容复制到 camera_frame buffer,并启动后续画格的撷取。
3. camera_frame buffer中包含的影像将重新缩放到Resize_Dst_Img buffer中,藉以配合预期的CNN输入张量尺寸。例如,食品识别NN模型需要输入张量,例如 Height × Width = 224 × 224像素。
4. 执行Resize_Dst_Img buffer到Pfc_Dst_Img buffer的像素色彩格式转换。
5. 将Pfc_Dst_Img buffer内容中包含的各像素格式调整到nn_input缓冲区中。
6. 执行NN模型的推断:这个nn_input buffer以及activation buffer提供给NN作为输入。分类结果将储存在 nn_output buffer中。
7. 对nn_output buffer内容进行后处理,并显示结果于屏幕上。

图表八详细说明了食品识别应用在整合量化C模型或浮点C模型时所需的RAM。


图片.png
 
图八 : 用于食品识别应用的SRAM内存缓冲器

参考数据
[1] 食品识别 CNN 是 MobileNet 模型的衍生模型。MobileNet:用于行动视觉应用的高效率卷积神经网络
[2]UM2611:FP-AI-VISION1手册
[3]UM2526:STM32Cube.AI手册
[4]FP-AI-VISION1 视讯应用影片

关键词: FP-AI-VISION1 影像分类器 ST 计算机视觉

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章


用户评论

请文明上网,做现代文明人
验证码:
查看电脑版