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 --showWindows 下示例端口为 com10;Linux/macOS 通常是 /dev/ttyACM0 或 /dev/cu.usbmodem*。--seed 固定随机种子,--steps 控制扩散步数,--class 指定人像类别,--cfg 是 CFG 强度,都可以按需调整。
第三步:调整参数看效果
想更快就降低 --steps,想更贴合指定类别就提高 --cfg。改完参数重新运行 viewer 即可,固件不用重刷。更多玩法(VGA 输出、自定义类别)见仓库 README。
从几十亿参数的云端模型到两百万参数的单片机模型,pico-faces 把扩散生成压缩到了极致——限制条件苛刻,但它确实在 1 美元的芯片上跑起来了。