# uai **Repository Path**: oneos-ability/uai ## Basic Information - **Project Name**: uai - **Description**: 基于TensorFlow Lite移植的轻量级模型引擎 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2023-08-28 - **Last Updated**: 2024-03-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # UAI组件——TensorFlow Lite ### 一、前言 ​ Tensorflow是一个由谷歌提供的深度学习开源库,用于实现机器学习和深度学习应用程序,Tensor(张量)是指N维数组,Flow(流)指基于数据流图的计算,Tensorflow即对张量上的函数自动求导; ​ Tensorflow Lite是将Tensorflow模型转换为tflite模型,lite模型比原模型要更小,并具有在移动端(mobile)、嵌入式(embeded)和物联网(IoT)设备上运行 TensorFlow 模型所需的所有工具; ​ Tensorflow Lite for Microcontrollers(TensorFlow Lite Micro)是 TensorFlow Lite 针对 AIOT 的轻量级 AI 引擎,用于在微控制器和其他资源受限的设备上运行机器学习模型; ### 二、OneOS配置UAI ​ 配置路径:OneOS——>components——>AI,使能Enable UAI: ``` (Top) → Components→ AI →Enable UAI Feature ---> Inference ---> Library ---> ``` ​ 其中Feature为音频特征提取;Inference为模型推理选项,是TensorFlow lite Micro主要的配置选项,可以选择加速的内核以及需要演示的demo;Library为TF需要的三方库,主要分为CMSIS和KISSFFT; ### 三、demo示例 ​ 进入UAI目录,选择Inference,Enable TensorFlow Lite for Microcontrollers——>Enable Hello World Example或者Enable Micro Speech Example; ​ hello world example是演示TensorFlow Lite Micro的最基础用法;训练一个能够复制正弦函数横纵坐标的模型,随机输入一个范围里的x值,模型推理次数为20,每次推理都能得到一个与之对应的y值,在串口输出得到的x值与y值; ​ micro speech example能够从开发板的microphone中读取输入的语音,从语音中识别yes/no关键字; ``` (Top) → Components→ AI →Enable UAI →Inference → Enable Tensorflow lite for Microcontrollers → Tensorflow lite for Microcontrollers [ ] Enable TFLM Optimized Kernel [*] Enable TFLM Examples [ ] Enable Hello World Example [ ] Enable Micro Speech Example ``` ### 四、注意事项 ​ 1. 开发过程选择stm32l475-cmcc-oneos开发板,为了能支持Tensorflow Lite语音检测的功能,需要设置该开发板能够支持16000的采样率,首先更改OneOS目录下drivers\hal\st\drivers\drv_sai.c文件里两个部分: ​ (1).第76行 将变量record_size初始化值改为**512**; ``` static os_uint32_t record_fifo_size = 512; ``` ​ (2).第253行 注释语句record_fifo_size = size; ``` //record_fifo_size = size; ``` ​ 然后,使用STM32_CUBE更改硬件配置,打开生成的keil项目目录,进入board\CubeMX_Config,打开.ioc文件,找到SAI1下的Audio Frequency项,将该项的值更改为16khz; ​ 再进入CubeMX_Config\Src目录下的bsp.c文件,修改第517行代码为: ``` hsai_BlockA1.Init.MonoStereoMode = SAI_MONOMODE; ``` ​ 设置更改完成后oneos开发板就能够支持语音检测的功能; 2. 一定要选择高版本的Keil编译; 3. 只支持Keil,不支持GCC; 4. 由于开发板资源问题,需要用在OneOSCube里用menconfig减少一些Drivers的使能。 5. 系统资源只能支持一个demo的运行; ### 五、项目生成及配置过程 ​ 项目生成过程可以参考OneOS官方文档,生成项目后利用menuconfig进行配置: 1. 利用Keil打开项目,选择options for Target ,点击Target选项,选择Version6; 2. 默认J-Link调试; 3. 编译、烧写。