TouchFilterNet v0.1.0-alpha

Python PyTorch CUDA Windows Ubuntu License MCU Deploy

发布日期: 2025-10-27

发布版本: v0.1.0-alpha

开发者: k1d

概述

TouchFilterNet 是一款专为 触摸屏与电容矩阵信号滤波 设计的轻量级深度学习模型。 本版本实现了从 训练 → 推理 → MCU 部署 的完整端到端流程,验证了模型在低算力平台上的实时可行性。

在尽可能提高推理速度的前提下,模型能够在 去除噪声 的同时 保留高差异细节区域,显著提升触摸检测的平滑性与响应精度。

模型核心特点

  • 全分辨率卷积结构:无下采样或插值操作,空间信息完全保留
  • 差异保留损失函数:对高差异区域赋予更高权重
  • 轻量注意力机制:对触点边缘区域聚焦处理
  • 自适应差异增强模块:自动调节平滑与保真强度
  • 可嵌入部署:支持 INT8 量化导出纯 C 前向推理
  • 无依赖运行:MCU 端无需文件系统或操作系统

性能指标

指标数值
总参数量48,677 (~48.7K)
模型大小 (FP32)190 KB
运算量 (18×36 输入)~9.3M MACs
运行内存 (FP32)≈480 KB
INT8 模型大小48 KB (参数)
INT8 激活峰值≈120 KB
MCU 推理延迟 (STM32H7, 400MHz)< 4ms / 帧

功耗说明

基于典型 3.3 V 供电的 STM32H7(Cortex-M7 @ 400 MHz)进行测算

工作模式功耗 (mW)推理时间说明
待机模式≈ 1 mWMCU 低功耗待机,仅周期唤醒
低频触发滤波≈ 5 mW≈ 4 ms / 帧触摸事件触发式运行(约 10 Hz)
普通工作模式≈ 10 mW≈ 4 ms / 帧常规触摸扫描(约 30 Hz)
高速实时滤波≈ 40 mW≈ 3.5 ms / 帧连续滑动检测(60–120 Hz)
峰值性能模式≈ 210 mW≈ 3 ms / 帧全速 400 MHz 满载运行
模式功耗 (mW)电流 (mA)电流 (µA)
待机模式1 mW0.30 mA300 µA
低频触发滤波5 mW1.52 mA1 520 µA
普通工作模式10 mW3.03 mA3 030 µA
高速实时滤波40 mW12.1 mA12 100 µA
峰值性能模式210 mW63.6 mA63 600 µA

对比实验结果

模型参数量保持分辨率注意力机制MSE ↓PSNR ↑
DnCNN (baseline)550K0.009429.1 dB
U-Net (小型)1.9M0.008130.2 dB
TouchFilterNet (ours)48.7K0.007431.8 dB

滤波效果

具体 diff/raw 值见项目内文档 ./README.md

左侧为原始触摸电容矩阵数据(RawData),右侧为经模型处理后的输出结果(ProcessedData)

在原始数据中,信号受随机噪声与行级干扰影响,表现为横向条纹与不规则亮度分布,触点区域的能量被背景波动部分掩盖。经 TouchFilterNet 处理后,背景噪声被有效抑制,信号电平更加稳定;触点区域亮度集中、边界清晰,且空间分布与原始信号保持一致,说明模型在滤波过程中实现了高差异区域的保真与低差异区域的平滑抑制

整体上,模型显著降低了背景噪声能量约 15 dB 左右,触点清晰度明显提升。该结果验证了差异保留损失与差异增强模块在信号去噪与细节保真方面的协同作用,为后续在 MCU 实时滤波中的稳定性与可解释性提供了有力支持。

训练

参照项目文档 ./README.md

部署

MCU部署

运行如下命令

$ cd TouchFilterNet/
$ cmake -S . -B build
$ cmake --build build --config Release

将路径 ./build/bin/TouchFilterNet.lib./include/C/TouchFilterNet.h 同时添加至工程之中

按照 ./include/C/TouchFilterNet.README.md 中设置并调用

引用与致谢

TouchFilterNet

作者: k1d

版本: v0.1.0-alpha

项目主页: https://k1d.tech

许可证: MIT License