跳转至

人工智能

TinyAI — 边缘设备上的神经网络推理与训练

纯 C++17 端侧 AI 框架,支持 on-device learning。从张量运算到模型训练到 INT8 量化部署,一条龙覆盖。专门针对 ESP32-S3 (PSRAM) 优化。


架构速览


场景索引

  • 从零训练一个小模型

    → 用 MLP + Dataset + Trainer

  • 在 ESP32 上推理已训练的模型

    → 编译时关闭 TINY_AI_TRAINING_ENABLED,只跑 forward()

  • 模型量化压缩

    → PTQ 流程:calibrate → quantize → INT8 dense forward

  • 时序信号分类

    CNN1D + Conv1D + MaxPool1D

  • 小样本特征提取

    Attention 多头自注意力

  • 自定义网络结构

    → 继承 tiny::Layer,实现 forward() 和可选的 backward()


快速开始

#include "tiny_ai.h"

// 1. 定义模型
tiny::Sequential model;
model.add(new tiny::Dense(4, 64));     // 输入 4 维 → 隐藏 64
model.add(new tiny::ActivationLayer(tiny::ActType::ReLU));
model.add(new tiny::Dense(64, 3));     // 隐藏 64 → 输出 3 类

// 2. 训练配置
tiny::SGD optimizer(0.01f, 0.9f);      // LR=0.01, momentum=0.9
tiny::Dataset dataset(inputs, labels, 150);
tiny::Trainer trainer(&model, &optimizer);

// 3. 训练
trainer.fit(&dataset, 100, 16);        // 100 epochs, batch=16

// 4. 推理
tiny::Tensor output = model.forward(input);

依赖链

tiny_toolbox → tiny_math → tiny_dsp → tiny_ai

TinyAI 位于中间件的最顶层,复用 tinymath 的张量原语和 tinydsp 的频域/滤波能力,从传感器采数 → 信号处理 → 模型推理形成完整端侧链路。

代码结构

include/    tiny_ai.h · tiny_ai_config.h
core/       Tensor · Activation · Loss · Optimizer
layers/     Layer · Dense · Conv · Pool · Norm · Attention
models/     Sequential · MLP · CNN1D
quant/      INT8/INT16 · FP8 · Config
train/      Dataset · Trainer
example/    MLP · CNN · Attention