YourEyes-API is the server-side component for processing live video streams received from clients. This repository handles video streams using advanced computer vision techniques to detect and analyze objects in real-time. It leverages gRPC for communication and integrates with the YOLO (You Only Look Once) model for efficient object detection.
- Overview
- Features
- Architecture
- Prerequisites
- Installation
- Usage
- API Documentation
- Contributing
- License
- Contact
The YourEyes-API serves as a backend for real-time video analysis. It receives video frames from various clients, processes them to detect and analyze objects using the YOLO model, and provides insights back to the client. This is particularly useful for applications requiring real-time object detection and analysis, such as surveillance systems, autonomous vehicles, and augmented reality.
- Real-time Video Processing: Efficiently handles streaming video frames for real-time analysis.
- Object Detection: Uses the YOLO model to detect and classify objects within the video frames.
- Flexible Deployment: Containerized using Docker for easy deployment and integration with CI/CD pipelines.
- gRPC Communication: Utilizes gRPC for high-performance and scalable client-server communication.
- Extensible: Designed to be easily extended with additional features or support for other models and services.
This document lists tasks and features we plan to work on in the future. Community contributions are welcome! If you're interested in any task, please comment on the relevant issue or create a new one.
- Support for multiple video formats: Extend support for additional video formats beyond YUV420.
- Implement video frame caching: Add a mechanism to cache video frames for better performance.
- Fix Docker containerization: Resolve the issues with containerizing the application using Docker.
- Integrate Word2Vec for semantic matching: Enhance the function that processes user questions to use Word2Vec for better semantic matching. This will allow the system to understand and map synonyms or related terms (e.g., mapping "television" to "tvmonitor").
- Add unit tests for gRPC services: Enhance test coverage by adding unit tests for the
StreamVideoandSetupDetectionservices. - Improve error handling: Refactor the codebase to provide more robust error handling and logging.
- Enhance documentation: Add more detailed documentation for developers and users.
- Create examples for different clients: Provide sample code for clients written in different languages (e.g., Python, JavaScript, Go).
- Web-based admin dashboard: Develop a web interface for managing and monitoring the video processing.
If you want to pick up a task, please comment on the relevant issue or create a new one. We look forward to your contributions!
The system architecture includes the following key components:
- gRPC Server: Manages the communication with clients and streams video frames to the processing pipeline.
- YOLO Model Integration: Processes frames using the YOLO model to detect and classify objects.
- Configuration Service: Allows dynamic setup of detection criteria based on user input.
- Shared Storage: Stores configuration and session data for ongoing video processing sessions.
Before setting up the YourEyes-API, ensure you have the following installed:
- Python 3.8+: The core processing is implemented in Python.
- Docker: For containerizing the application.
- gRPC: Required for communication between client and server.
- OpenCV: For image and video processing tasks.
- Ultralytics YOLO: YOLO model for object detection.
To set up the YourEyes-API locally, follow these steps:
- Clone the Repository:
git clone https://github.com/Your-Eyes-Project/YourEyes-API.git cd YourEyes-API - Set Up a Virtual Environment (optional but recommended):
python -m venv venv source venv/bin/activate # On Windows use `venv\Scripts\activate`
- Install Dependencies
pip install -r requirements.txt
- Build and Run with Docker (if using Docker)
docker build -t youreyes-api . docker run -p 5270:5270 youreyes-api
If not using Docker, start the server with (from root directory):
python -m app.main
Use a gRPC client to send video frames to the server. Refer to the API documentation for the expected request format.
Implement a client (e.g., using Python or another language that supports gRPC) to send video frames for processing.
We welcome contributions to the YourEyes-API! Here’s how you can get involved:
- Fork the Repository: Create a fork of this repository on GitHub.
- Create a Feature Branch: Develop your feature or bug fix on a new branch.
- Submit a Pull Request: Open a pull request with a detailed description of your changes.
Please read our Contributing Guidelines before making any contributions.
This project is licensed under the Apache 2.0 License - see the LICENSE file for details.
For questions, feedback, or support, please contact us at:
- Email: Link
- GitHub Issues: YourEyes-API Issues