Deep Learning Computer Vision for Workplace Monitoring
## Project Description
The project involves using deep learning and computer vision to monitor workplace stations and count people entering and leaving a specified area. A camera setup captures video streams, which are processed in real-time to detect and verify people. A Python GUI developed with PyQt5 aids in tagging data for training the model. The training process is conducted using TensorFlow, and the trained model is deployed to a Jetson Nano for real-time inference.
## Technologies Used
- **Python**: The primary programming language used for scripting and development.
- **OpenCV**: For computer vision tasks such as image processing and video stream handling.
- **TensorFlow**: For building and training the deep learning models.
- **PyQt5**: For creating a graphical user interface (GUI) to tag data and manage the training process.
- **Jetson Nano**: A compact AI computer used for deploying the trained model and running inference in real-time.
- **NumPy and Pandas**: For data manipulation and processing.
## Challenges Faced
### 1. **Accurate People Detection**
- **Issue**: Ensuring high accuracy in detecting and identifying people in various conditions.
- **Solution**: Using a robust pre-trained model and fine-tuning it with a carefully labeled dataset.
### 2. **Real-time Performance**
- **Issue**: Maintaining real-time performance for counting people and verifying their presence in workplace stations.
- **Solution**: Optimizing the model for deployment on Jetson Nano and using efficient video processing techniques.
### 3. **Data Tagging for Training**
- **Issue**: Creating a comprehensive and accurately labeled dataset for training the model.
- **Solution**: Developing a PyQt5 GUI to streamline the data tagging process, integrating tools like LabelImg for efficiency.
### 4. **Model Deployment**
- **Issue**: Deploying the trained model to Jetson Nano while ensuring it runs efficiently.
- **Solution**: Converting the model to a format suitable for Jetson Nano and optimizing the code for resource constraints.
### Key Components
#### People Detection and Verification
- **Camera Setup**: Capturing video streams from the workplace.
- **Deep Learning Model**: Using TensorFlow to train a model for detecting and verifying people.
- **Real-time Processing**: Ensuring real-time performance for monitoring workplace stations and counting people.
#### Data Tagging GUI
- **PyQt5 Interface**: A user-friendly GUI for tagging images and preparing the dataset.
- **Labeling Tool Integration**: Incorporating tools like LabelImg for efficient data tagging.
#### Model Deployment
- **Jetson Nano**: Deploying the optimized model for real-time inference.
- **Performance Optimization**: Ensuring the model runs efficiently on Jetson Nano, maintaining real-time processing capabilities.
## Domain Knowledge Requirements
The project required specialized knowledge in the following areas:
- **Real-time Video Processing**: Techniques for handling and processing video streams in real-time.
- **Model Training and Fine-tuning**: Skills in training and fine-tuning deep learning models using TensorFlow.
- **GUI Development**: Experience with PyQt5 for creating user-friendly graphical interfaces.
- **Embedded Systems**: Knowledge of deploying and optimizing models on embedded systems like Jetson Nano.