MIT License

技术解读

以下内容由 GitRead 中文社区 编辑团队基于项目 README 与官方资料整理, 结合中文开发者的常见使用场景补充技术选型建议。具体以项目官方文档为准。

项目背景与痛点

satinder147/DeepWay 项目旨在为视障人士提供一种有效的导航解决方案。长期以来,视障人士在街道上的导航技术进步甚微,而该项目采用深度学习技术,特别是卷积神经网络(CNN),来帮助他们识别和理解周围环境。这不仅填补了技术上的空白,也为视障人士提供了一种更先进的导航手段,帮助他们在日常生活中更加自如地移动。

技术核心揭秘

DeepWay 项目的实现了诸多技术细节,其中最大的特点是使用卷积神经网络(CNN)来识别和标注街道图像。图像数据流如下:

graph TD A[采集数据] --> B{"预处理"} B -->|"成功"| C[特征提取] B -->|"失败"| D[重新采集] C --> E[分类] E --> F[标注结果]

项目的核心在于使用卷积神经网络对街道图像数据进行处理,通过预处理后的图像数据经过 CNN 的特征提取器转化为高级特征表示,这一步骤是识别街道环境的基础。接着,分类环节对特征进行分析,将其分为不同的类别。此类别包括但不限于人行横道、车辆、行人、障碍物等。经过这些步骤后,系统能够为视障用户提供精确的导航指示,减少导航过程中可能遇到的困惑和挑战。

功能亮点与差异

相比同类竞品,DeepWay 项目有几个显著特点:

  1. 使用深度学习技术:借助卷积神经网络,该系统能更准确地理解和解析图像,以供视障人士使用。
  2. 数据流清晰:项目结构简洁明了,从数据采集到标注结果的整个流程设计都很合理。
  3. 实际场景模拟与学习:通过模拟不同场景下的图像数据,训练模型以提高算法的适应性和鲁棒性。

这种技术架构在同类产品中较为罕见,能够显著提升用户的导航体验。在视觉数据中引入深度学习的方法,使得 DeepWay 对街道环境的识别更加精确,从而提高了其在实际使用中的可用性和可靠性。

应用场景与落地建议

DeepWay 适用于诸多场景,特别是对于视障人士的日常导航需求。以下是一些落地建议:

  • 数据采集注意事项:数据采集是整个系统的基础,需要确保数据的多样性和丰富性。涵盖不同时间段、不同天气、不同环境下的场景,以提高模型的分类准确性。
  • 模型训练与验证:在训练过程中,需持续优化模型参数,确保模型的鲁棒性和泛化能力。
  • 用户反馈与迭代:获取视障用户的真实反馈,帮助改进算法和用户体验。

在实际应用中,还需考虑实时数据处理与响应延迟问题,确保视障用户在实际使用过程中能够获得及时准确的导航提示。

综合评价

DeepWay 无疑是为视障人士提供导航解决方案的重要进步,其关键优势在于:

  • 技术选择合理:使用现代卷积神经网络,确保图像识别准确度。
  • 设计清晰且实用:从数据采集、预处理到分类标注,每一步都体现了对用户体验的深入思考。

缺点在于:

  • 数据依赖性强:效果高度依赖于高质量的数据集。
  • 模型训练复杂:可能需要大量计算资源和时间。

总体而言,DeepWay 是一个深思熟虑且技术先进的项目,为视障人士带来了实实在在的帮助,值得推荐和进一步研究。

关于

GitHub 原始描述(英文)

This project is an aid to the blind. Till date there has been no technological advancement in the way the blind navigate. So I have used deep learning particularly convolutional neural networks so that they can navigate through the streets.

描述取自 GitHub 官方 API,保持仓库作者书写的原文。

简要分析

热度分
229
价值分
98
活跃状态
活跃

语言占比

Python

README

DeepWay

This project is an aid to the blind. Till date there has been no technological advancement in the way the blind navigate. So I have used deep learning particularly convolutional neural networks so that they can navigate through the streets. Watch the video

My Approach

Collecting Training Data

My project is an implementation of CNN’s, and we all know that they require a large amount of training data. So the first obstruction in my way was a correclty labeled dataset of images. So I went around my college and recorded a lot of videos(of all types of roads and also offroads).Then I wrote a basic python script to save images from the video(I saved 1 image out of every 5 frames, because the consecutive frame are almost identical). I collected almost 10000 such images almost 3300 for each class(i.e. left right and center).
Left image: 274
Right Image: 11
Center Image: 146

Training the Model

I made a collection of CNN architectures and trained the model. Then I evaluated the performance of all the models and chose the one with the best accuracy. I got a training accuracy of about 97%. I got roughly same accuracy for all the trained model but I realized that the model in which implemented regularization performed better on the test set

Interfacing with the Arduino

The next problem was how can I tell the blind people in which direction to move . So I connected my python program to an Arduino. I connected the servo motors to arduino and fixed the servo motors to the sides of an spectacle. Using Serial communication I can tell the arduino which servo motor to move which would then press to one side of the blind person’s head and would indicate him in which direction to move.
This is how the modified spectacles looked like
imag0397
screenshot 252

Other Features

Detection of stop signs.

This is done using opencv. I load in a pretrained stop sign haar cascade and then identify the location of the stop sign so that the device can steer the blind person.

screenshot 250

Face Detection

This is achieved using Dlibs face detector.(trying to implement face recognition)

screenshot 249

Requirements

  1. Python 3.x
  2. Tensorflow 1.5
  3. Keras
  4. OpenCV 3.4(for loading,resizing images)
  5. h5py(for saving trained model)
  6. pyttsx3
  7. A good grasp over convolutional neural networks. For online resources refer to standford cs231n, deeplearning.ai on coursera or cs231n by standford university
  8. A good CPU (preferably with a GPU).
  9. Time
  10. datetime
  11. Patience… A lot of it.

Installing the requirements

  1. Start your terminal of cmd depending on your os.
  2. If you have a NVidia GPU then make sure you have the prerequisites for Tensorflow GPU installation (Refer to official site). Then use this commmand
pip install -r requirements_gpu.txt
  1. In case you do not have a GPU then use this command
pip install -r requirements_cpu.txt

Train your own classifier

To train your own classifier you need to gather data for all three type(.i.e images from left side of road, right side, and center region of the road) and then run model_trainer.py(you need to change the directories of images in model_trainer.py first).I used around 10000 images. It took me about 30 minutes to train each network.

My laptop Specifiactions

  1. intel core i3
  2. 4gb ram
  3. nvidia 930m graphics card

Run the complete thing

1)Upload the arduino file on the arduino
2)Change the com number and camera number in the blind runner.py
3)run blind_runner.py
4)Enjoy

Liked it

Tell me if you liked it by giving a star. Also check out my other repositories, I always make cool stuff. I even have a youtube channel “reactor science” where I post all my work.

Read About It At

1)GEOSPATIAL MAGAZINE BLOG
2)HACKSTER.IO 3)Anyline blog

评论

暂无评论