本文首发于电子发烧友论坛:【新提醒】【瑞萨AI挑战赛】家庭AI相框 - 瑞萨单片机论坛 - 电子技术论坛 - 广受欢迎的专业电子论坛!
展示视频:【瑞萨AI挑战赛】家庭AI相框_哔哩哔哩_bilibili
引言
本项目的目标是构建一个面向家庭场景的边缘智能相框系统。系统以 Titan-Board 为核心,结合 RGB LCD、触摸输入、SD 卡资源管理与 MobileNet 本地推理能力,实现照片轮播、语义识别、视觉化反馈和交互控制,形成一个具备完整应用闭环的家庭 AI 终端。

1. 项目定位与设计目标
家庭相框类产品的核心价值,不在于"能把图片显示出来",而在于它是否能理解当前展示内容、降低用户操作成本,并把静态照片展示转变成具有感知能力的家庭信息终端。因此,本项目的设计目标分为三个层次:
- 基础显示层 :稳定完成本地图片加载、LCD 刷新和轮播展示。
- 智能感知层 :对显示内容进行本地分类推理,提取更贴近用户理解的语义结果。
- 交互表达层 :将 AI 结果转化为直观的视觉反馈,而不是停留在串口日志。
本项目当前以三类内容为原型验证集:DOG、CAR、FOUNTAIN。它们并不是终局类别,而是为了验证"图片展示 + 本地识别 + 语义归并 + UI 表达"这条完整链路是否成立。后续完全可以扩展为家庭成员、宠物、旅行场景、节日照片等更贴近真实家庭场景的分类体系。
2. 整体设计思想
家庭 AI 相框不是云端依赖型设备,而应强调 本地感知、低延迟反馈、低交互负担 。因此本项目采用以下设计思想:
边缘侧优先
充分利用利用 Arm® Ethos™-U55 NPU 加速运行Mobilenet模型,推理过程全部在本地执行,避免网络依赖,使系统具备更好的实时性和隐私性。
显示链路优先打通
先保证图像数据能够稳定进入帧缓冲并完成刷新,再叠加 AI 能力,降低系统联调难度。
语义归并优于原始标签直出
将 ImageNet 的碎片化标签映射为用户可理解的业务类别,提升演示和产品化表达能力。
模块解耦
显示适配、文件加载、轮播控制、分类服务、UI 反馈分别独立,便于后续扩展为摄像头输入或更复杂的人机交互。
3. 系统总体架构图
系统架构图如下所示:

4. 软件架构与模块职责
各软件模块如下所示。
| 模块 | 职责 | 当前实现特征 |
|---|---|---|
wallpaper_app |
系统入口与任务编排 | 负责初始化 AI、显示、文件、转场、壁纸管理、自动切换与触摸控制;同时导出 MSH 命令便于演示与调试。 |
wallpaper_manager |
壁纸资源组织与展示主流程 | 扫描目录、记录索引、加载图像、调用分类服务、在图像 buffer 上叠加可视化结果,最终提交到显示层。 |
file_loader |
图片文件类型识别与装载 | 当前优先支持.rgb565/.raw/.bin,直接读入显示缓冲区,避免 JPEG 解码开销。 |
display_adapter |
帧缓冲和 LCD 设备适配 | 通过互斥锁保护显示刷新,统一封装全屏与区域更新接口。 |
mobilenet_service |
图像预处理、模型调用与后处理 | 完成 RGB565 到模型输入的裁剪缩放、输出反量化、TopK 统计和业务语义映射。 |
auto_switcher |
轮播节奏控制 | 使用 RT-Thread 软定时器发起切图请求,保证 UI 层逻辑简单清晰。 |
transition_effect |
多媒体观感增强 | 已实现 Fade、Dissolve、Slide 等算法,为后续更完整的相框体验预留能力。 |
5. 关键模块设计细节
5.1 内容管理模块:以壁纸管理为主线组织系统数据流
wallpaper_manager 是本项目的软件中枢。它不是简单的文件列表,而是承担了"资源发现、状态管理、分类触发、结果叠加、提交显示"这一整条链路。这样设计的原因在于:相框应用的最核心对象就是"当前正在展示的内容"。只要围绕内容对象组织流程,后续切换数据源时成本最低。
当前模块内部维护壁纸列表、当前索引、互斥锁以及对显示 buffer 的操作顺序。每次切换图片时,先加载原始 RGB565 数据,再送入分类服务,最后在原图上叠加视觉反馈并刷新屏幕。
5.2 文件装载模块:优先选择 RGB565 原始图像通路
file_loader 目前优先支持 .rgb565、.raw、.bin 三类原始图像格式。这样做的工程意义很明确:
- 省去 JPEG 解码过程,降低 CPU 负担。
- 图像格式与 LCD 输出颜色格式一致,数据路径短,便于调试。
- 图片文件可以被直接读入帧缓冲,减少中间拷贝与复杂转换。
这一设计有利于提升显示效果。后续如果要产品化,再补充 JPEG 解码或缩略图缓存即可。
5.3 显示适配模块:统一帧缓冲写入与 LCD 刷新接口
display_adapter 对上层隐藏了 LCD 设备接口差异,统一提供 display_get_buffer()、display_update_fullscreen()、display_update_region() 等方法。其核心价值不在复杂算法,而在于建立一个稳定的显示抽象层。
在家庭 AI 相框场景中,显示刷新是整个用户体验的出口。将其独立封装以后,后续无论更换 UI 表现方式、增加局部区域渲染,还是加入动画特效,都不需要重新改写上层业务逻辑。
5.4 AI 感知模块:从模型输出到家庭场景语义
mobilenet_service 完成了从显示图像到语义标签的闭环,主要包含四个步骤:
- 对 RGB565 图像做中心裁剪,并缩放到
224x224输入尺寸。 - 按模型要求完成量化输入构造,调用
RunModel(true)触发推理。 - 对输出张量进行反量化,提取 TopK 结果。
- 将原始标签归并到更适合演示的业务类别。
当前归并策略并不是简单取 Top1,而是对 TopK 结果做二次统计,把标签映射成 DOG、CAR、FOUNTAIN 三类,并累计类别得分。这种设计比"看到一个标签就立即判定"更稳健,因为 MobileNet 的标签常常较细碎,例如车类会出现 minivan、car wheel、sports car 等多个不同标签。
这一步是本项目从"AI 例程"走向"应用原型"的关键,我更关注系统如何把模型能力服务于真实产品,而不是单纯展示模型能跑起来。
5.5 视觉反馈模块:把识别结果转化为用户可感知界面
我原本希望用板载蜂鸣器针对不同的检测结果播放不同的声音音效,比如汽车引擎声、泉水叮咚声和狗叫声。但是调试完蜂鸣器发现开发板的蜂鸣器必须连接GPT7定时器,而该定时器已经被用作LCD的背光控制,所以就无法使用蜂鸣器了。本项目没有选择蜂鸣器等额外外设反馈,而是将 AI 结果直接转化为屏幕上的视觉信号。当前实现方式包括:
- 全屏彩色边框,用于快速区分结果类别。
- 左上角结果卡片,用大字显示
DOG、CAR、FOUNTAIN。 - 底部置信度条,用于表达识别强度。
这种设计更适合家庭相框的产品定位,因为它不打断观看体验,又能让用户快速理解 AI 的判断结果。
5.6 交互与调度模块:触摸与自动轮播并行工作
在家庭场景下,相框不应完全依赖命令行操作。因此当前工程一方面通过 auto_switcher 实现自动轮播,另一方面通过 GT9147 触摸实现直接交互。触摸区域被划分为下半屏的左、中、右三个区块,分别对应上一张、自动播放开关和下一张。这样做的好处是:
- 逻辑足够简单,容易被用户理解。
- 不需要复杂手势识别,适合嵌入式初版系统。
- 能够同时支持"被动轮播"和"主动干预"两种使用模式。
5.7 转场模块:为多媒体体验预留表现能力
transition_effect 已经实现了淡入淡出、溶解、左右滑动等多种转场算法。虽然当前主展示链路仍以稳定显示优先,但该模块非常重要,因为它体现了系统设计的扩展性:家庭 AI 相框最终不仅要"识别图片",还要"展示得像一个产品"。不过转场模块暂时没有激活,因为它需要双倍内存,目前开发板的内存不够,而要使用转场特效,要么要增加开发板的内存,要么要降低显示分辨率。
6. 关键数据流设计
系统启动
-> 初始化 MobileNet / LCD / File Loader / Wallpaper Manager / Auto Switcher / Touch
-> 扫描 /sdcard 获取壁纸列表
-> 选择当前图片并加载到 RGB565 buffer
-> 调用 MobileNet 进行图像分类
-> 对 TopK 标签进行业务语义归并
-> 在原图上叠加分类视觉结果
-> 刷新 LCD 显示
-> 等待触摸事件或自动轮播定时器触发
-> 切换到下一张并重复上述流程
这一数据流的优点在于非常直观:数据的主对象始终是同一个图像 buffer。显示、分类和视觉叠加围绕同一份图像数据进行操作,减少了多份缓冲区同步带来的复杂性。
7. 关键技术取舍
| 设计点 | 当前方案 | 取舍原因 |
|---|---|---|
| 图像格式 | RGB565 原始图优先 | 减少解码和格式转换开销,快速打通显示与 AI 数据链路。 |
| 推理输入 | 中心裁剪到 224x224 | 与 MobileNet 输入匹配,流程简单、稳定、易验证。 |
| 分类结果处理 | TopK + 规则归并 | 避免原始标签过碎,提高系统对真实场景的解释能力。 |
| 用户反馈 | 屏幕可视化 | 比蜂鸣器更适合相框场景,不打断观看体验。 |
| 轮播调度 | RT-Thread 软定时器 | 实现成本低、行为可控、利于和人机交互逻辑解耦。 |
| 系统组织方式 | 模块化服务拆分 | 便于未来切换数据源、增加模型或扩展 UI。 |
8. 当前版本的局限与下一步优化方向
由于时间所限,当前版本只是一个产品原型,后续可以重点优化以下方向:
- 丰富家庭语义类别 :从三类原型验证扩展到人物、宠物、聚会、节日、旅行等家庭场景标签。
- 加入图片质量与构图评价 :让相框自动优先展示更清晰、更有纪念意义的照片。
- 补充 JPEG 解码与缩略图管理 :降低资源准备门槛,提升产品完整度。
- 将转场模块接入主展示链路 :提升相框的动态观感和产品质感。
- 结合时间与家庭场景逻辑 :例如白天偏亮色、夜间低亮度、纪念日展示特定相册。
- 引入摄像头或联网能力 :形成更丰富的 AI 感知和家庭内容同步能力。虽然厂商提供了摄像头模块,但是该摄像头模块在测试中非常不稳定,每次可以检测到设备,但是只是偶尔能够正常工作,所以暂时放弃了摄像头拍摄并检测的功能,待后续补充。
- 增加音频播放能力 :借助开发板的I2S接口连接喇叭,根据感知的图像内容实现音效播放。
结论
这套家庭 AI 相框方案的核心意义,不在于"把 MobileNet 搬到 Titan-Board 上跑起来",而在于它围绕真实家庭使用场景,把显示、触摸、资源管理、边缘推理和结果表达串成了一个完整系统。
后续将继续沿着家庭语义扩展、动态内容管理和产品级 UI 表达推进,成长为真正具备家庭智能终端的产品。