
U-Net
已在原型上运行ResNet-18 backbone
分割漆好的跑道线,告诉设备跑道朝哪儿、你在其中的位置。
84.23% IoUIoU(验证集)
RunSight技术
一帧画面如何变成几何信息,几何信息如何变成判断,判断又如何变成一句短句,全都发生在你背上的设备里,不联网。
USB RGB 摄像头
Hailo-8 加速器
三模型感知

U-Net

YOLOv8n

Sc-Depth V3
跑道与障碍物几何信息
提示引擎
语音引导
与视线齐平的 USB 摄像头把画面送进 Hailo-8 加速器。每一帧被接受后,三个已编译的模型会运行:一个分割白线,一个检测前方的人,一个从同一帧估计深度。没有深度传感器,没有 LiDAR,没有第二枚摄像头。深度来自这一枚 RGB 摄像头,这让设备保持便宜。
帧按“最新优先”处理。如果推理落后了,旧帧会被丢弃,而不是排队。用过时的画面去引导,不如闭嘴。

ResNet-18 backbone
分割漆好的跑道线,告诉设备跑道朝哪儿、你在其中的位置。
84.23% IoUIoU(验证集)

Nano detector
检测前方跑道上的人;在共享跑道上,这才是真正重要的障碍。
88.24% IoUIoU(验证集)

Monocular RGB
从单张 RGB 帧估计被检测者的距离,让引导引擎知道一个障碍是否已经近到需要在意。
Self-supervised单目深度,设备端


掩膜和方框还不是引导。它们必须变成几何信息:跑道朝哪儿、你在其中的位置、弯得有多急,以及前方的人是否已经足够近。

01
从掩膜里提取轮廓,把每条跑道线拟合成二次曲线。被人或影子打断的线会被补齐,重新变成一条连续的边。

02
拟合出的线把跑道分成五个区域(最左、左、中、右、最右),并把跑者放进其中之一。引导提示就是由此算出的。

03
从拟合曲线的中心点算出曲率半径。半径大是直道,半径小是弯道;同时也知道往哪边弯。

04
被检测到的人,只有在靠近时才算障碍。深度模型从同一帧 RGB 估出这个距离,于是引擎只对靠近的人做出反应,而不是画面里的每一个人。
跑道产生的信息,远多于一个正在奔跑的人能处理的量。引擎一次最多放行一条提示,其余全部压制。冷却时间按优先级分别计算。
优先级压过优先级
每个等级有自己的冷却,所以一条刚说完的引导提示,绝不会挡住一条警告。
不唠叨
同一句话在 3 秒内会被压制,哪怕它依然成立。
危急提示一定说出口
危急提示跳过所有冷却,并打断正在播放的语音。
保持 float32,Raspberry Pi 跑不出实时帧率。于是我们把模型编译到 Hailo 加速器上:转成它的内部表示、做性能剖析、用真实跑道图像作校准集量化,最后生成开机时加载的可执行文件。
为加速器编译后,原型速度提升 6 倍,运行速度超过每秒 10 帧。
并不存在一个从跑者视角拍摄印尼跑道的公开数据集。所以我们自己做了一个:在帕特里奥特·钱德拉巴加等公共跑道上,与视线齐平地拍摄,既拍前方有人的情况,也拍空无一人的情况。
每张图像有两种标注:给人打边界框,给白线画折线。然后做增强,让它经得起现实:会歪的头、会晃的相机、刺眼或阴沉的下午。



整合原型已经可以运行,但以下项目仍需开发或验证。
单个多任务模型
这块加速器没有 DRAM,逐帧切换模型代价很高。把三个模型合成一个带多个头的模型,才是解法。
无线音频
现在靠有线耳机说话。蓝牙音频需要一路独立于手机连接的无线。
模型远程更新
现在要换一个新模型,必须动手碰到设备本身。
实地验证
到目前为止的一切,都来自桌面测量和明眼测试者在跑道上的测量。真正的关卡,是与视障跑者一起、在监督下进行的试跑,而我们还没有完成这一步。