Blind Hat is a real-time smart navigation assistant that helps visually impaired individuals by guiding them safely using computer vision and GPS. It uses advanced obstacle detection and voice-based instructions to help users move confidently and independently.
🌐 Powered by a Flask server, the system runs locally or on GPU-enabled cloud platforms for real-time performance.
- Real-time Obstacle Detection with YOLOv8
- GPS-based Navigation with dynamic route updates
- Text-to-Speech Voice Alerts for instructions & warnings
- RESTful Flask API for integration with mobile or wearable clients
- GPU Acceleration Support for high-performance processing
Tech | Purpose |
---|---|
🐍 Python 3.8+ | Backend & core logic |
🔥 PyTorch | Deep learning model (YOLOv8) |
📷 OpenCV | Video frame processing |
🧠 YOLOv8 | Object detection |
🌐 Flask | Web server & APIs |
🗺️ OSMnx | Route planning & shortest path |
🗣️ pyttsx3 | Text-to-speech |
📡 Geocoder | Location via IP |
-
Clone the Repository
git clone https://github.com/iot-lab-kiit/BlindHat.git cd BlindHat-main
-
(Optional) Create a virtual environment
python -m venv venv source venv/bin/activate # Windows: venv\Scripts\activate
-
Install Dependencies
pip install -r requirements.txt
-
Download YOLOv8 Model
wget https://github.com/ultralytics/assets/releases/download/v0.0.0/yolov8s.pt
-
Start the Flask server:
python app.py
-
Access the server at:
http://0.0.0.0:5000
- Returns a real-time video stream (JPEG-encoded) with obstacle detection.
- Returns the latest voice instruction.
Response:
{
"instruction": "Continue straight for 100 meters"
}
- Updates the current location for route planning.
Request:
{
"latitude": 20.348865,
"longitude": 85.816085
}
Response:
{
"status": "success"
}
- Choose a cloud provider (AWS, GCP, Azure)
- Spin up a GPU-enabled VM (CUDA supported)
- Install dependencies & upload the project
- Run the Flask server:
python app.py
- Ensure secure access with HTTPS & authentication for production use
To use Blind Hat from a client device like a mobile app or wearable:
- Send captured video frames to the server
- Periodically update the GPS coordinates via
/update_gps
- Fetch & play audio alerts from
/audio_instructions
- Stream processed video from
/video_feed
The destination coordinates are currently hardcoded in process_frame()
:
destination = (20.348865, 85.816085) # KP 6
📍 Update this line to change the navigation destination.
Licensed under the MIT License. See LICENSE.md for full details.
- YOLOv8 by Ultralytics
- OSMnx by Geoff Boeing
- Flask team for their minimalistic web framework
- OpenCV community for making vision accessible