[STM32H7] 【STM32H745I-DISCO 试用】STM32H745平台上的CIFAR数据集AI探索

[复制链接]
2792|2
 楼主| NeXToNE 发表于 2025-5-17 21:09 | 显示全部楼层 |阅读模式

一、数据集简介
CIFAR-10数据集由10个类的60000个32x32彩色图像组成,每个类有6000个图像。有50000个训练图像和10000个测试图像。数据集分为五个训练批次和一个测试批次,每个批次有10000个图像。测试批次包含来自每个类别的恰好1000个随机选择的图像。训练批次以随机顺序包含剩余图像,但一些训练批次可能包含来自一个类别的图像比另一个更多。总体来说,五个训练集之和包含来自每个类的正好5000张图像。
CIFAR1.png

二、环境设置
X-CUBE-AISTM32Cube.AI生态系统的STM32Cube扩展包部分,能够自动转换预训练人工智能算法(包括神经网络和经典机器学习模型),并将生成的优化库集成到用用户项目中,以此来扩展STM32CubeMX功能。
CUBE-AI.png
RT-Thread AI Toolkit,简称RT-AK (RT-Thread AI 套件)RT-AK 是 RT-Thread 团队为 RT-Thread 实时操作系统所开发的 AI 套件,能够一键将 AI 模型部署到 RT-Thread 项目中,让用户可以 在统一的 API 之上进行业务代码开发,又能在目标平台上获极致优化的性能,从而更简单方便地开发端侧 AI 应用程序。

利用RT-AK工具,生成集成AI模型的项目工程。


  1. #python aitools.py --project=D:\Project-master\stm32-cifar --model_name ./Models/cifar10.tflite --platform stm32 --ext_tools D:\Program Files (x86)\stm32ai-windows-7.3.0\windows --clear


具体转换信息如下:
  1. model_name         : cifar10
  2. input              : input_1 [3072 items, 3.00 KiB, ai_u8, scale=0.003921568859368563, zero_point=0, (32, 32, 3)]
  3. inputs (total)     : 3.00 KiB
  4. output             : nl_21_fmt [10 items, 12 B, ai_u8, scale=0.00390625, zero_point=0, (1, 1, 10)]
  5. outputs (total)    : 10 B
  6. params #           : 85,834 items (88.45 KiB)
  7. weights (ro)       : 90,568 B (88.45 KiB)
  8. activations (rw)   : 67,456 B (65.88 KiB)
  9. ram (total)        : 70,538 B (68.88 KiB) = 67,456 + 3,072 + 10
生成了2个文件:rt_ai_cifar10_model.c和rt_ai_cifar10_model.h。
三、业务实现
业务层面,主要包括初始化、输入图像、模型运行、结果输出几个阶段。
AIFLOW.png
具体业务代码如下:

  1. rt_ai_buffer_t *work_buffer = rt_malloc(RT_AI_CIFAR10_WORK_BUFFER_BYTES+RT_AI_CIFAR10_IN_TOTAL_SIZE_BYTES+RT_AI_CIFAR10_OUT_TOTAL_SIZE_BYTES);

  2.     model = rt_ai_find(RT_AI_CIFAR10_MODEL_NAME);
  3.     if(model == RT_AI_NULL){
  4.         return -1;
  5.     }
  6.     result = rt_ai_init(model, work_buffer);
  7.     if(result != 0){
  8.         return -1;
  9.     }

  10.     rt_memcpy(model->input[0], input_data0, RT_AI_CIFAR10_IN_1_SIZE_BYTES);
  11.     result = rt_ai_run(model, ai_run_complete, &ai_run_complete_flag);

  12.     if(ai_run_complete_flag){
  13.         uint8_t *out = (uint8_t *)rt_ai_output(model, 0);
  14.         int max_index = 0;
  15.         for(int i = 1 ; i < 10 ; i++){
  16.              if(out[i] > out[max_index]){
  17.                  max_index = i;
  18.              }
  19.         }

  20.         rt_kprintf("cifar10 prediction: %s\n", cifar10_label[max_index]);
  21.     }
  22.     rt_free(work_buffer);


四、运行测试
系统启动后,LED已经闪烁起来。
RESULT1.jpg
用来识别的图片如下:
deer.jpeg
识别结果如下:
result.png

五、视频




laocuo1142 发表于 2025-6-5 17:14 | 显示全部楼层
STM32H745实现CIFAR-10实时分类,适用于工业缺陷检测、智能摄像头等场景。
AdaMaYun 发表于 2025-6-8 21:40 | 显示全部楼层
像素还是非常可以的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

9

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部