当前位置: 首页 > news >正文

盲人出行辅助系统原型

我做了一个很有意义的盲人出行辅助系统原型,主要是结合现有导航OSRM/高德,实时感知前方潜在危险目标,辅助视障人士出行。 持续优化中(20260519),欢迎大家尝试,有一些想法也可以提出来。

开源地址:https://github.com/Lii-sir/Eye-Guide.git

1. 项目背景

对于视障人群来说,日常出行可以通过高德等等进行路线导航,但是在到达过程中最困难的是持续感知环境风险。传统导航软件可以告诉用户“往哪里走”,但是没法告诉用户“前方是否有行人、障碍物、台阶或者车辆”。而纯视觉系统虽然能识别环境,却缺少路径导航和实时位置联动功能。

针对以上问题,我做了一个原型项目EyeGuide。这个系统通将摄像头视觉感知、地图导航、GPS定位和语音播报串成一条完整链路,让系统不仅能“规划路线”,还能“观察前方环境实时提醒用户”。

这个项目更偏向一个工程原型和技术验证系统,终点不是做成商业的最终产品,如果要商用,后面可以嵌入开发板。但是嵌入之前还有一些工作需要做,比如功能的完善、推理加速等等,这些内容我还在持续优化中。

2. 项目目标

项目核心目标:

  • 实时感知用户前方环境,识别潜在危险目标。
  • 支持步行导航,并结合当前GPS定位实时推进导航。
  • 通过语音播报,把环境信息和导航信息及时传递给用户。

3. 系统主要功能

界面目前比较简单,还请忽略我这个太草率了。后面功能完善之后会优化界面。

3.1 自由探索模式

在自由探索模式下,程序会调用摄像头实时读取画面,并进行目标识别。系统会重点关注以下几类对象:行人、汽车、摩托车、台阶/高度变化区域。

对于靠近用户、存在风险的目标,系统会进行语音提示,比如:“注意,正前方,行人,1.0米”

3.2 路线导航模式

在路线导航模式下,用户输入起点和终点后,系统会调用地图服务生成步行路线,并在导航过程中实时播报当前导航步骤以及前方的危险目标。

项目目前支持两类导航来源:

OSM:基于Nominatim + OSRM

高德:基于高德Web服务API

3.3 GPS定位接入

为了实现边走边导航,项目支持接入USB/NMEA GPS模块,读取串口中的定位信息。如果没有外接GPS,系统会尝试调用Windows自带定位服务作为补充。这样可以实现获取当前位置、自动将当前位置填入导航起点、根据实时位置动态推进路线步骤。

4. 核心技术方案

4.1 视觉感知:YOLO 与 OpenCV双路径检测

在视觉感知部分,项目优先采用 Ultralytics YOLO 进行目标检测与目标跟踪,用于识别行人、车辆、自行车、障碍物等目标;在深度模型可用时,再结合 Depth Anything V2 对目标距离进行估计。

与此同时,系统并不完全依赖 YOLO。为了保证在依赖不完整、模型不可用或部署环境受限时仍能运行,项目还实现了一套基于 OpenCV 的启发式检测方案,主要包括:

  • 行人检测
  • 地面障碍物检测
  • 台阶/高度变化风险检测

目前 YOLO 检测用的还是开源权重,后面可能会爬一些数据,针对盲人出行常会遇到的障碍再进行微调训练。

4.2 深度估计:Depth Anything V2

仅仅知道前面有什么肯定不够,所有引入了深度估计进行单目深度估计,用来辅助计算目标和用户之间的大致距离。这里的距离并不是激光雷达那种严格物理测距,而是基于深度模型对单帧图像做推理得到的近似值。这里的距离也会用于风险等级评估,比如估计距离为0.8m以内,那这个风险等级就比较高。

4.3 方位判断

方位判断目前采用的是比较直接但很实用的方法,根据目标框中心点在画面中的横向位置,把目标划分成几个区域:左侧、左前方、正前方、右前方、右侧。这样系统就可以播报更具体的提示,比如:“左前方,行人,1.2米”。

4.4 地图导航

导航采用了两种实现路线。

OSM路线

  • 使用 Nominatim 做地理编码与地点搜索
  • 使用 OSRM 的 foot 模式做步行路线规划

高德路线

  • 使用高德的 POI 搜索、地理编码和步行导航接口
  • 更适合中文地址场景,尤其是国内地点检索

此外,为了避免地址模糊匹配错误,系统对候选地点做了多结果展示,让用户自己确认终点,而不是强行只用第一条结果。

4.5 语音播报机制

语音播报使用 Windows 下的 SAPI / pyttsx3 作为输出后端。为了避免播报过于频繁和混乱,系统在语音层做了几项处理:

  • 去重
  • 冷却时间控制
  • 优先级控制
  • 队列替换策略

这样可以尽量减少“同一目标每一帧都播报一次”的问题,让播报更接近真实辅助场景。

5. 项目整体架构

整个系统大体可以分成四层:

感知层

负责摄像头读取、YOLO 检测、深度估计、障碍物识别与方位判断。

定位与导航层

负责 GPS 接入、当前位置更新、地址解析、路线规划和自动导航推进。

播报层

负责把检测事件与导航事件统一送入语音队列,再根据优先级和冷却策略进行播报。

界面层

使用桌面 GUI 展示控制面板,同时显示视频窗口、导航信息和运行日志。

6. 当前存在的问题

这个项目目前仍然是原型系统,还存在不少问题:

  • 单目深度估计的距离误差仍然比较明显
  • 复杂场景下目标检测稳定性还有提升空间
  • 语音播报策略还需要继续优化,避免漏报或重复播报
  • 导航与视觉提示的融合逻辑还不够细腻
  • 打包部署体积较大,依赖项较重

这些问题也说明,视障辅助出行系统并不是单一模型就能解决的,而是一个需要持续工程优化和多模块协同的复杂系统。

7. 后续优化方向(持续优化中)

后续我计划继续完善:

  • 优化 YOLO 与深度估计的推理效率
  • 进一步减少语音播报重复和队列冲突
  • 增强对台阶、坑洞、盲道、路沿等关键场景的识别能力
  • 提升路线跟踪与自动重规划能力
  • 做更轻量的部署方案,降低安装包体积
  • 进一步适配新电脑开箱即用的安装流程

8. 展示

高清视频:

https://live.csdn.net/v/527244https://live.csdn.net/v/527244

http://www.jsqmd.com/news/849916/

相关文章:

  • 12000 Star 的 MonkeyCode,我们把它部署到了内网
  • 深入Linux Input子系统:从全志T113-S3的按键事件,看懂/dev/input/eventX
  • ToastFish:终极Windows通知栏摸鱼背单词神器,上班族必备的隐蔽学习工具
  • 2026年AI搜索优化服务商TOP10榜单发布:技术原生派领跑,垂直专精派各显神通
  • 告别降级:PyTorch高版本下Mask R-CNN/Faster R-CNN THC头文件与内存分配兼容性修复实战
  • 稳定币深度解析:从技术内核到生态未来
  • Claude Code Hooks 触发时机全解析:PreToolUse、PostToolUse、Stop 3 类事件的 5 个执行边界
  • GPT5.5多模态能力底层原理拆解统一引擎架构深度解析
  • .NET 11 中 Process API 升级
  • 昆明二手手机专卖店实测:这些机型性价比最高
  • 别再死记FPN公式了!用PyTorch手把手带你画一遍特征金字塔的‘数据流图’
  • 5步掌握ExtractorSharp:游戏资源编辑的终极免费指南
  • Hermes Agent 四层记忆架构中 nudge_interval 主动触发的 4 种典型场景与间隔设置策略
  • Claude Code API 接入实测:Anthropic 直连、OpenRouter 与第三方代理的 3 种路径合规性及稳定性对比
  • 从图片到声音、视频:MaxCompute MaxFrame 多模态算子模块,让海量多模态数据_跑_起来
  • 数字化时代,企业线下营销物料为何依然不可替代?
  • 5 分钟原型验证实战:Trae 在极速开发工作流中的 4 种快速试错策略
  • BYOK 模式下节省 37% API 成本:Cursor 工程配置的 4 类密钥路由策略
  • 如何配置多层 SSH 隧道代理链实现跨网段访问?
  • STC89C52RC+HX711:手把手教你做一个5KG高精度电子秤(附语音播报模块选型避坑)
  • 从零想法到可部署 MVP:v0 + Cursor + Vibe Coding 三步工作流实战
  • 别再死记硬背模型了!用Meta-Learning让AI学会‘举一反三’,5分钟看懂小样本学习核心
  • 闪灯电路板
  • C51多任务环境下数据覆盖问题的解决方案
  • 破局京城老酒变现困局 京城亚南酒业,以高效诚信守护藏家权益 - 品牌排行榜单
  • 如何快速让经典Windows游戏焕发新生:DDrawCompat终极指南
  • 鸿蒙ArkUI自定义视频播放器开发实战:从AVPlayer到手势交互全解析
  • Claude Code 的 Token 限额配置:3 种超限熔断策略与成本告警设置指南
  • 别再死记UNet结构了!用‘编码-解码’与‘特征融合’视角重新理解注意力与残差
  • 别再让死区拖慢你的电机!STM32+Simulink自动生成代码,手把手教你搞定死区补偿(附Keil在线标定技巧)