从检测到理解空间:视障辅助 Demo1 的一次工程推进记录

14 阅读5分钟

在将目标检测系统应用于视障辅助场景时,问题不再只是模型精度或推理速度。

对于依赖语音获取环境信息的用户而言,系统输出的稳定性、方向判断的一致性、播报频率的可控性,都直接决定其可用性。因此,在这一阶段,我关注的重点不再是单点性能优化,而是系统结构是否足以支撑持续运行。

今天的工作目标可以概括为:

将 YOLO11n 的检测链路,从“技术验证”推进到“具备产品结构基础”的工程状态。

所谓“产品结构基础”,指的是以下能力已经形成稳定闭环:

  • 实时视频采集
  • 端侧 YOLO11n 目标检测
  • Top-N(当前 Top8)输出
  • 方位判断(左 / 中 / 右)
  • 英文短语语音播报(带冷却机制)
  • 时序滤波以抑制误检与抖动
  • LiDAR 深度流接入与同步(含无深度设备降级)

这些能力并非功能堆叠,而是构成辅助系统运行稳定性的必要条件。

本次工程推进,围绕“空间一致性、信息节流、输出稳定化、深度同步”四个方向展开,目标是为后续距离融合与优先级调度打下结构基础。


一、从“能跑”到“能用”:检测链路的稳定化

实时检测已经可以运行,但“能跑”和“能用”之间,差距其实很大。

视频采集、Vision 推理、置信度过滤、检测框渲染——
这些步骤早已打通。

核心逻辑位于:

CameraManager.swift

但如果直接用单帧检测结果触发播报,体验几乎不可接受:

  • 框抖动明显
  • 方向频繁切换
  • 误检会被瞬间读出

这对于视障辅助来说,是不可接受的。


二、坐标问题:空间一致性是前提

今天首先解决的是一个非常关键的问题——坐标链路不一致。

当时出现的现象很直观:

左右移动手机,框却上下移动。

原因在于:

  • Vision 输出是归一化坐标
  • 预览层存在旋转与镜像
  • 推理方向和显示方向未统一

解决方案是将整个链路统一到“源图像归一化空间”,
显示层只负责一次转换。

这一步的意义在于:
空间理解系统必须有统一的几何基准。

否则,后续加入深度信息时,将无法保证方向与距离的一致性。


三、排序逻辑:从置信度到“场景优先级”

视障辅助系统的排序逻辑,不能简单依赖模型置信度。

当前综合评分公式为:

score = 0.50 * danger
      + 0.25 * boxSize
      + 0.25 * confidence

其中:

  • danger:类别危险等级映射
  • boxSize:归一化面积 + sqrt 拉伸
  • confidence:模型置信度

实现位于:

ObjectGrader.swift

这样做的原因很直接:

在真实场景中,“更危险”或“更近”的物体,
比“模型更自信”的物体更重要。

系统最终只输出 Top8,
避免信息过载。


四、同类归并:减少认知负担

如果同一画面中出现多个 cup,
逐个播报显然没有意义。

当前策略是:

  • 同帧同类目标归并
  • 输出数量 + 类别
  • 方向取优先级最高的目标方向

例如:

3 cups, left

对于辅助系统而言,
减少冗余信息本身就是优化。


五、时序滤波:从瞬时判断到持续确认

单帧检测结果并不稳定。

当前采用 Track + IoU + EMA 的时序滤波机制,
参数基线来自规划文档 :

  • IoU 阈值:0.35
  • bbox EMA:0.45
  • conf EMA:0.35
  • 稳定帧:3
  • miss 删除:4

稳定输出条件为:

  • hits ≥ 3
  • misses == 0
  • confEma ≥ 0.35

加入时序滤波后:

  • 短暂误检基本不进入输出
  • 框稳定性明显提升
  • 方位边界不再频繁抖动

对于视障辅助系统而言,
稳定性优先于灵敏度。


六、语音系统:信息节流而非简单输出

语音播报采用英文短语形式:

2 cups, left; 1 laptop, front

播报规则包括:

  • 稳定帧确认 3 帧
  • 全局冷却 3.5 秒
  • 相同短语抑制 7 秒
  • 不排队播报

没有冷却机制时,系统几乎无法使用。

在辅助场景下,语音是唯一的信息通道。
如果频繁打断或重复,将直接降低可用性。

因此,语音系统本质上是一个“信息调度系统”。


七、深度流接入:从平面识别到空间理解

今天最重要的工程进展,是完成 Demo1 阶段 A1 的深度流接入与同步。

按照规划 :

  • 新增 AVCaptureDepthDataOutput
  • 使用 AVCaptureDataOutputSynchronizer 同步视频帧与深度帧
  • 自动检测深度能力
  • 无深度设备自动回退

当前已实现:

  • 深度流成功同步
  • 支持机型可获取深度帧
  • 无 LiDAR 设备自动降级为 video-only

下一步将实现:

  • 框中心点深度(单位:米)
  • 框内分位数深度(P50 / P30)
  • 深度异常值剔除

这一步的意义在于:

系统开始从“二维目标检测”
转向“具备空间距离感知能力”的辅助工具。


八、当前状态与限制

当前 Demo 已可:

  • 稳定输出 Top8
  • 同类归并
  • 英文短语播报
  • 深度流同步

在常见室内场景下可以连续运行。

但仍存在限制:

  • 距离尚未正式并入排序逻辑
  • 性能监控面板未加入
  • 深度异常场景尚未系统优化

结语:一次结构性的推进

今天主要完成了一次结构性的工程推进:

  • 统一空间坐标
  • 稳定检测输出
  • 控制信息密度
  • 接入真实深度数据

下一阶段,将把真实距离正式并入排序与播报逻辑,
完成 Demo1 的空间增强闭环。


本项目仍处于 Demo1 阶段,后续将继续记录距离融合与排序增强的工程推进过程。

That's all 💕. Byebye ~