pico-faces 是一个把 128×128 人像扩散模型跑进单片机的开源项目:用约 1 美元的 RP2350(Raspberry Pi Pico 2 芯片)实时生成人像,代码与固件都开源在 github.com/cpldcpu/pico-faces,8 月底发布后很快被收录进各类嵌入式 AI 榜单。

为什么能在单片机上跑扩散模型

关键是模型够小、量化够狠。项目提供两档模型:deep 版约 237 万参数(含 49 万参数的 VAE),fast 版约 159 万参数。模型用 int8 QAT(量化感知训练)蒸馏,配合 DiT 架构,单张生成约 5-20 秒。输出可以走 VGA 或 USB 串口,方便接显示器或直接读像素。

需要什么硬件

  • 一块基于 RP2350 的开发板(如 Raspberry Pi Pico 2)
  • 可选:VGA 输出板,或直接用 USB 串口查看结果
  • 电脑端只需 Python 环境(pyserial / matplotlib / numpy / pillow)

第一步:烧录固件

从项目 Releases 页下载对应的 .uf2 固件文件。按住开发板 BOOT 键插入电脑,把 uf2 拷贝到弹出的 RPI-RP2 磁盘,板子会自动重启并开始运行。

第二步:安装 viewer 并查看输出

pip install pyserial matplotlib numpy pillow
python viewer/view_serial.py --port com10 --seed 3 --steps 8 --class 4 --cfg 6 --show

Windows 下示例端口为 com10;Linux/macOS 通常是 /dev/ttyACM0 或 /dev/cu.usbmodem*。--seed 固定随机种子,--steps 控制扩散步数,--class 指定人像类别,--cfg 是 CFG 强度,都可以按需调整。

第三步:调整参数看效果

想更快就降低 --steps,想更贴合指定类别就提高 --cfg。改完参数重新运行 viewer 即可,固件不用重刷。更多玩法(VGA 输出、自定义类别)见仓库 README。

从几十亿参数的云端模型到两百万参数的单片机模型,pico-faces 把扩散生成压缩到了极致——限制条件苛刻,但它确实在 1 美元的芯片上跑起来了。