超轻量模型FastViT助力GD32AI-ModelZoo在GD32H759I-Eval开发板上实现高效图像分类
1、前言
GD32 AI ModelZoo是一个用于在GD32设备上快速部署AI模型的开源项目,其在github上发布: https://github.com/HomiKetalys/gd32ai-modelzoo。本文将对GD32 AI ModelZoo中的图像分类模型FastViT部署到GD32H759I-EVAL开发板上。
2、开发板介绍
在部署AI模型方面,GD32H759I-EVAL开发板提供了一颗主频高达600Mhz的MCU,同时提供了64KB的L1 Cache,以及1M的片上RAM。本文将对其与STM32H747进行对比。
3、FastViT介绍
FastViT是一个十分轻量的图像分类模型,其已在github上发布: https://github.com/apple/ml-fastvit。该模型是Apple在2023年发布的目前业界前沿的超轻量图像分类模型。该模型使用CNN和ViT混合的架构,同时使用重参数技术解耦训练和推理。
4、GD32AI-ModelZoo的使用
本文将对模型FastViT在GD32H759I上进行部署,直接进入对应模型网址。其提供了该模型的训练,导出,以及近乎一键的部署。
本文对GD32H759I进行了适配,并将部署过程及示例合并到了GD32AI-ModelZoo中。对于本文是如何进行适配的,这涉及的技术细节较多,本文只利用GD32AI-ModelZoo对GD32H759I进行评测,不进行其技术实现的讲解。
本文将使用FastViT模型已导出的C代码和其提供的Keil工程示例,将模型部署到GD32H759I上。首先将GD32AI-ModelZoo进行下载。
图 4‑1 GD32AI-ModelZoo下载
如图 5‑1 GD32AI-ModelZoo下载。并进行解压
图 4‑2 keil工程示例
如图 4‑2 keil工程示例中所示,目前该文件夹下仅提供了GD32H759I在GCC编译器下的keil5工程。注意,你的Keil5的版本应该>=5.29。如果你不知道该如何在Keil5中配置GCC,请看上一篇文章【兆易创新GD32H759I-EVAL开发板】MCU也要玩边缘AI,GD32H759I-EVAL开发板借助GD32 AI ModelZoo快速部署目标检测模型_评测-面包板社区 (eet-china.com)中的第7.1节。
图 4‑3 keil5工程文件
随后进行编译烧录,即可得到一个内置的目标检测示例程序。
在如图 4‑4 已导出的在food-101上训练的模型中,提供了FastViT模型在food-101上训练的分类101种图像。提供了使用了使用了和未使用分离式结构的模型,sp表示使用了分离式结构。
图 4‑4 已导出的在food-101上训练的模型
将图 4‑5 Edge_AI文件夹替换中右图的Edge_AI文件夹替换为左图中的。即可完成模型的替换。
图 4‑5 Edge_AI文件夹替换
替换后重新进行编译烧录。即可完成新的目标检测模型在板子上的部署。如果你想在自己的工程中使用,请根据此keil5样例,导入Edge_AI中的.c文件和.a文件并设置头文件路径。
部署后的开发板结果如图 4‑6 分类结果示例。
图 4‑6 检测结果示例
5、与STM32H7的对比结果
STM32H747I是与GD32H759I同级的MCU,但是STM32H474I仅有最高400Mhz主频,32KB的L1 cache。STM32的数据来源于STM32AI-ModelZoo。
5.1、对比结果
以下展示本文的对比结果,更多信息可以去GD32AI-ModelZoo上查看。
5.1.1、food-101 Acc指标对比
从表中可以看到在各分辨率下,本文提供的模型在相同分辨率下AP指标均高于STM32提供的模型。同时红色方框所示使用了分离式结构的模型占用的内存显著低于其余模型。
5.1.2、推理时间对比
从表中可以看到,本文提供的模型在相近计算量的情况下,在GD32H759IMK6上运行的时间与STM32H747I的运行时间相近或更少。
6、总结
本文将通过GD32AI-ModelZoo提供的模型及示例,完成了在GD32H759I上快速部署一个图像分类模型。得益于GD32H759I的高频MCU以及大容量L1cache,与STM32H747相比,GD32H759I在相近推理时间下,可以部署准确率相近或更高的模型。
此外,大家如果想要在GD32H759I上分类想要的图像,GD32AI-ModelZoo也提供了数据集格式,以及训练,导出,部署脚本。大家可以制作自己的数据集并训练自己的模型,并部署到GD32H759I上。