{"id":26923831,"url":"https://github.com/sergio11/safedrive_drowsiness_detection","last_synced_at":"2025-10-04T21:41:42.454Z","repository":{"id":277726459,"uuid":"53408996","full_name":"sergio11/safedrive_drowsiness_detection","owner":"sergio11","description":"🚗 Driver Drowsiness Detection with Deep Learning (PoC) 🧠 A personal experiment comparing CNN + MobileNetV2 and YOLOv11 for real-time drowsiness detection. Focused on evaluating accuracy and efficiency to explore AI’s potential in preventing fatigue-related accidents. 😴⚡ A hands-on dive into safety-driven computer vision.","archived":false,"fork":false,"pushed_at":"2025-06-21T08:18:50.000Z","size":29098,"stargazers_count":10,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-07-28T00:04:29.082Z","etag":null,"topics":["autonomous-driving","computer-vision","convolutional-neural-networks","deep-learning","driver-drowsiness-detection","image-classification","mobile-ai","real-time-detection","tensorflow","tensorflow-lite","transfer-learning","yolo","yolov11"],"latest_commit_sha":null,"homepage":"","language":"Jupyter Notebook","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sergio11.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2016-03-08T12:05:22.000Z","updated_at":"2025-06-29T15:25:41.000Z","dependencies_parsed_at":null,"dependency_job_id":"51d51c23-2958-4bc3-a5c5-1fe8e11df956","html_url":"https://github.com/sergio11/safedrive_drowsiness_detection","commit_stats":null,"previous_names":["sergio11/safedrive_drowsiness_detection"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/sergio11/safedrive_drowsiness_detection","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sergio11%2Fsafedrive_drowsiness_detection","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sergio11%2Fsafedrive_drowsiness_detection/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sergio11%2Fsafedrive_drowsiness_detection/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sergio11%2Fsafedrive_drowsiness_detection/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sergio11","download_url":"https://codeload.github.com/sergio11/safedrive_drowsiness_detection/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sergio11%2Fsafedrive_drowsiness_detection/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278380479,"owners_count":25977216,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-04T02:00:05.491Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["autonomous-driving","computer-vision","convolutional-neural-networks","deep-learning","driver-drowsiness-detection","image-classification","mobile-ai","real-time-detection","tensorflow","tensorflow-lite","transfer-learning","yolo","yolov11"],"created_at":"2025-04-02T01:51:54.177Z","updated_at":"2025-10-04T21:41:42.439Z","avatar_url":"https://github.com/sergio11.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🚗 **Deep Learning for Safer Roads** 🚗  Exploring CNN-Based and YOLOv11 Driver Drowsiness Detection 💤\n\nAs part of my journey through a **Deep Learning course**, I developed this project to explore how **artificial intelligence** can contribute to making our roads safer. I focused on the challenge of **driver drowsiness detection**, a crucial issue given how many accidents are caused by fatigue every year. 💥🚘 The idea of using deep learning to potentially **save lives** made this an incredibly motivating and meaningful project to work on. ❤️‍🔥\n\nThroughout the process, I experimented with two powerful approaches: a **CNN-based model with Transfer Learning** for image classification 🧠🖼️, and **YOLOv8**, a real-time object detection model integrated through **Roboflow** ⚙️🎯. This allowed me to explore both **accuracy-focused models** and those designed for **real-time inference**, gaining a clearer understanding of their strengths, limitations, and real-world applications. ⏱️🔍\n\nWorking on this project helped me strengthen my grasp of key deep learning concepts, from **feature extraction** and **model fine-tuning** to evaluating metrics like **precision**, **recall**, and **F1-score**. 📊 I also encountered important practical lessons—like how to handle imbalanced data, optimize for performance, and think critically about what it means to deploy AI in real-life, safety-critical situations. 🧪⚠️\n\n\u003cp align=\"center\"\u003e\n   \u003cimg src=\"https://img.shields.io/badge/pypi-3775A9?style=for-the-badge\u0026logo=pypi\u0026logoColor=white\" /\u003e\n   \u003cimg src=\"https://img.shields.io/badge/Python-FFD43B?style=for-the-badge\u0026logo=python\u0026logoColor=blue\" /\u003e\n   \u003cimg src=\"https://img.shields.io/badge/Keras-FF0000?style=for-the-badge\u0026logo=keras\u0026logoColor=white\" /\u003e\n   \u003cimg src=\"https://img.shields.io/badge/TensorFlow-FF6F00?style=for-the-badge\u0026logo=tensorflow\u0026logoColor=white\" /\u003e\n   \u003cimg src=\"https://img.shields.io/badge/Jupyter-F37626.svg?\u0026style=for-the-badge\u0026logo=Jupyter\u0026logoColor=white\" /\u003e\n   \u003cimg src=\"https://img.shields.io/badge/Pandas-2C2D72?style=for-the-badge\u0026logo=pandas\u0026logoColor=white\" /\u003e\n   \u003cimg src=\"https://img.shields.io/badge/Numpy-777BB4?style=for-the-badge\u0026logo=numpy\u0026logoColor=white\" /\u003e\n\u003c/p\u003e\n\nI extend my gratitude to the creators of the **Driver Drowsiness Dataset (DDD)** for providing a high-quality dataset that has been instrumental in training and evaluating our deep learning model for driver drowsiness detection.  \n\nThe dataset, derived from the **Real-Life Drowsiness Dataset**, offers a diverse collection of over **41,790 labeled images**, carefully preprocessed to focus on the driver’s facial region. The effort in extracting, annotating, and sharing this dataset greatly contributes to research and development in road safety and accident prevention through deep learning techniques.  \n\nFor more details and citation, please refer to the original dataset:  \n[Driver Drowsiness Dataset (DDD) on Kaggle](https://www.kaggle.com/datasets/ismailnasri20/driver-drowsiness-dataset-ddd/data)  \n\nA special thank you to **Esraa Meslam Sayed** for the invaluable inspiration provided through his project, [**Driver Drowsiness Detection🚘😴(CNN ||MobileNetV2)**](https://www.kaggle.com/code/esraameslamsayed/driver-drowsiness-detection-cnn-mobilenetv2). His work laid the foundation for the development of this model and greatly influenced the approach taken in this project. The insights and techniques explored in his work served as a key resource, helping to guide the creation of an effective and robust diabetes prediction model. We truly appreciate the effort and dedication put into his research and contributions to the data science community\n\n🙏 I would like to extend my heartfelt gratitude to [Santiago Hernández, an expert in Cybersecurity and Artificial Intelligence](https://www.udemy.com/user/shramos/). His incredible course on Deep Learning, available at Udemy, was instrumental in shaping the development of this project. The insights and techniques learned from his course were crucial in crafting the neural network architecture used in this classifier.\n\n## ⚠️ Disclaimer\n\nThis project, **Deep Learning for Safer Roads**, is an **educational and experimental** exploration of deep learning models for detecting **driver drowsiness**. The primary goal of this work is to investigate the effectiveness of **CNN-based models with Transfer Learning** and **YOLOv8** for real-time driver monitoring and fatigue detection.\n\nThe models and methods explored in this notebook are intended for **learning and research purposes** only\n\nThis repository is open for educational purposes and encourages further experimentation and development.\n\n## 🌟 Explore My Other Cutting-Edge AI Projects! 🌟\n\nIf you found this project intriguing, I invite you to check out my other AI and machine learning initiatives, where I tackle real-world challenges across various domains:\n\n+ [🌍 Advanced Classification of Disaster-Related Tweets Using Deep Learning 🚨](https://github.com/sergio11/disasters_prediction)  \nUncover how social media responds to crises in real time using **deep learning** to classify tweets related to disasters.\n\n+ [📰 Fighting Misinformation: Source-Based Fake News Classification 🕵️‍♂️](https://github.com/sergio11/fake_news_classifier)  \nCombat misinformation by classifying news articles as real or fake based on their source using **machine learning** techniques.\n\n+ [🛡️ IoT Network Malware Classifier with Deep Learning Neural Network Architecture 🚀](https://github.com/sergio11/iot_network_malware_classifier)  \nDetect malware in IoT network traffic using **Deep Learning Neural Networks**, offering proactive cybersecurity solutions.\n\n+ [📧 Spam Email Classification using LSTM 🤖](https://github.com/sergio11/spam_email_classifier_lstm)  \nClassify emails as spam or legitimate using a **Bi-directional LSTM** model, implementing NLP techniques like tokenization and stopword removal.\n\n+ [💳 Fraud Detection Model with Deep Neural Networks (DNN)](https://github.com/sergio11?tab=repositories)  \nDetect fraudulent transactions in financial data with **Deep Neural Networks**, addressing imbalanced datasets and offering scalable solutions.\n\n+ [🧠🚀 AI-Powered Brain Tumor Classification](https://github.com/sergio11/brain_tumor_classification_cnn)  \nClassify brain tumors from MRI scans using **Deep Learning**, CNNs, and Transfer Learning for fast and accurate diagnostics.\n\n+ [📊💉 Predicting Diabetes Diagnosis Using Machine Learning](https://github.com/sergio11/diabetes_prediction_ml)  \nCreate a machine learning model to predict the likelihood of diabetes using medical data, helping with early diagnosis.\n\n+ [🚀🔍 LLM Fine-Tuning and Evaluation](https://github.com/sergio11/llm_finetuning_and_evaluation)  \nFine-tune large language models like **FLAN-T5**, **TinyLLAMA**, and **Aguila7B** for various NLP tasks, including summarization and question answering.\n\n+ [📰 Headline Generation Models: LSTM vs. Transformers](https://github.com/sergio11/headline_generation_lstm_transformers)  \nCompare **LSTM** and **Transformer** models for generating contextually relevant headlines, leveraging their strengths in sequence modeling.\n\n+ [🩺💻 Breast Cancer Diagnosis with MLP](https://github.com/sergio11/breast_cancer_diagnosis_mlp)  \nAutomate breast cancer diagnosis using a **Multi-Layer Perceptron (MLP)** model to classify tumors as benign or malignant based on biopsy data.\n\n+ [Deep Learning for Safer Roads 🚗 Exploring CNN-Based and YOLOv11 Driver Drowsiness Detection 💤](https://github.com/sergio11/safedrive_drowsiness_detection)\nComparing driver drowsiness detection with CNN + MobileNetV2 vs YOLOv11 for real-time accuracy and efficiency 🧠🚗. Exploring both deep learning models to prevent fatigue-related accidents 😴💡.\n\n## 🚙 **Why is This Important?** 🚙  \nDriver fatigue is a major cause of road accidents worldwide 😴. Detecting **drowsy driving** in real-time is crucial for **preventing accidents** and ensuring road safety. This project leverages the **Driver Drowsiness Dataset (DDD)**, a collection of images of drivers in **Drowsy** and **Non-Drowsy** states, to build two different models aimed at **real-time detection** of drowsiness. 🌍\n\n## 💻 **Approaches Explored** 💻  \n### **1. CNN-based Models**: The Power of Convolutional Neural Networks 🔍  \nCNNs are at the heart of modern image recognition and excel at learning **spatial hierarchies** of image data. For this task, we use **MobileNetV2**, a **lightweight** and **efficient** CNN architecture that’s ideal for **real-time applications** in vehicles. 🚗\n\n- **Why CNNs?**  \n   ✅ Efficient at detecting drowsiness through **facial state recognition**.  \n   ✅ Works great on **smaller datasets**.  \n   ✅ Uses **pre-trained models** to speed up the process. 🏎️\n\n### **2. YOLOv8 with Roboflow**: Real-Time Object Detection at Its Best 🕵️‍♂️  \nYOLOv8 is a state-of-the-art **object detection model** designed for **speed** and **accuracy**. Paired with **Roboflow**, YOLOv8 becomes even more powerful by streamlining the **dataset preparation** and **deployment** process. 🚀\n\n- **Why YOLOv8?**  \n   ✅ Super fast, making it perfect for **real-time applications**. ⏱️  \n   ✅ Capable of **localizing and detecting** multiple objects in a single frame.  \n   ✅ **Roboflow integration** simplifies dataset annotation and augmentation. 📝\n\n## 🧠 **How Does the Model Work?** 🧠  \nThe **Driver Drowsiness Dataset (DDD)** is the foundation for training both models. Here’s what you need to know about the data:\n\n- **Image Format:** RGB images with facial features of drivers.  \n- **Classes:** `Drowsy` vs. `Non-Drowsy`.  \n- **Resolution:** 227 x 227 pixels, optimized for deep learning tasks.  \n- **Size:** 41,790+ labeled images.  \n- **File Size:** ~2.32 GB of drowsiness-related data!\n\n## 🔥 **Project Goals** 🔥\n\n1. **Evaluate the two models**—CNN-based transfer learning and YOLOv8 with Roboflow—for detecting **drowsy drivers**.\n2. **Compare their performance** using metrics like **accuracy**, **precision**, **recall**, and **F1-score**.\n3. **Optimize the models** for real-time deployment in vehicles.\n\n## 🛠️ **Methodology** 🛠️  \nWe break the project into several stages:\n\n### 1. **Data Preprocessing** 🧹  \n- **Normalize** pixel values.  \n- **Augment** data to improve generalization.  \n- **Split** the dataset into **training**, **validation**, and **testing** sets.\n\n### 2. **Model Development** 💡  \n- **Train CNN** models with **MobileNetV2** for transfer learning.  \n- **Train YOLOv8** using **Roboflow** for real-time object detection.\n\n### 3. **Model Evaluation** 📊  \n- Compare performance using key metrics.  \n- **Assess real-time feasibility** for vehicle deployment.\n\n### 4. **Real-Time Testing** ⏱️  \n- Simulate **real-world conditions** and evaluate **model responsiveness**.\n\n## 🛣️ **Why Does This Matter?** 🛣️  \nThis project aims to **reduce road accidents** by **detecting driver fatigue** using AI. Through **deep learning**, we can proactively detect when a driver is drowsy, preventing potential accidents before they happen. **Safer roads** lead to **lives saved**. 🌟\n\n## 🤖 **Comparing the Two Approaches**: CNN + Transfer Learning vs YOLOv8 with Roboflow ⚖️\n\n### **1. CNN + Transfer Learning**: Fast and Effective 🌟\nThis approach uses **pre-trained CNNs** (e.g., MobileNetV2) to **classify driver states** as drowsy or non-drowsy based on facial images.\n\n- **Pros:**  \n  - **Quick setup**.  \n  - **Works well with smaller datasets**.  \n  - **Pre-trained models** speed up training.\n\n- **Cons:**  \n  - **No object localization**.  \n  - **Limited real-time suitability** due to preprocessing.  \n  - May struggle with **high-resolution data**.\n\n### **2. YOLOv8 + Roboflow**: Real-Time Detection 🚀  \nYOLOv8 excels at **detecting and localizing objects** (e.g., faces, eyes) in real-time, especially when paired with **Roboflow**.\n\n- **Pros:**  \n  - **Perfect for real-time detection**.  \n  - **Detects and localizes** multiple objects at once.  \n  - Simplified data preparation via **Roboflow**.\n\n- **Cons:**  \n  - **Resource-heavy**, requiring powerful hardware.  \n  - **Higher complexity** in setup and fine-tuning.  \n  - **Time-intensive annotations** for accurate detection.\n\n### **Side-by-Side Comparison**\n\n| **Aspect** | **CNN + Transfer Learning** | **YOLOv8 + Roboflow** |\n|------------|-----------------------------|-----------------------|\n| **Primary Goal** | Classification (Drowsy vs. Non-Drowsy) | Real-Time Detection and Localization |\n| **Real-Time Suitability** | Limited (Preprocessing adds latency) | Optimized for real-time applications |\n| **Ease of Use** | Beginner-friendly, quick setup | More complex, streamlined with Roboflow |\n| **Dataset Needs** | Small to moderate datasets | Detailed annotations, larger datasets |\n| **Performance Focus** | Classification Accuracy | Speed + Detection Accuracy |\n| **Hardware Requirements** | Moderate (CPUs or mid-tier GPUs) | High (Powerful GPUs recommended) |\n\n## 📱 **Choosing the Best Approach for Mobile Integration** 🤖  \nWhen integrating the drowsiness detection model into a **mobile application**, we need to consider specific factors such as **real-time performance**, **model size**, and **resource limitations**. Let's explore the strengths of each approach and decide which one fits best for mobile deployment with **TensorFlow Lite** or **YOLOv8**.\n\n### **1. CNN + Transfer Learning (MobileNetV2)**: Lightweight and Efficient 🚀  \nIf you're building a **mobile app** where **speed** and **efficiency** are critical, CNN-based models like **MobileNetV2** are a great option.\n\n- **Why use CNN + Transfer Learning for Mobile?**  \n  - 🏎️ **Lightweight and fast**: MobileNetV2 is designed for **resource-constrained environments**, making it perfect for **real-time mobile applications**.\n  - 📉 **Smaller model size**: Using **TensorFlow Lite**, the model can be deployed as a **compact version** to the mobile device.\n  - ⚡ **Real-time performance**: MobileNetV2 ensures **real-time drowsiness detection** even on devices with lower processing power.\n\n- **When should you use it?**  \n  - You have **limited hardware resources** (e.g., mobile devices with moderate performance).\n  - You need a **lightweight and fast** model that works efficiently with **TensorFlow Lite**.\n  - You don’t need **object localization** or detecting multiple features within the image.\n\n### **2. YOLOv8 with Roboflow**: Real-Time Detection with Robust Features 🔥  \n**YOLOv8** excels in **object detection** and is ideal if your mobile app requires **real-time detection** and **localization** of features like faces or eyes.\n\n- **Why use YOLOv8 for Mobile?**  \n  - ⚡ **High-speed detection**: YOLOv8 is **optimized for real-time processing**, making it perfect for **mobile apps** that need **fast response times**.\n  - 🛠️ **Advanced localization**: YOLOv8 can **detect and localize facial features**, offering more **detailed insights** into the driver’s state.\n  - 🏋️‍♂️ **Better for powerful devices**: If you’re targeting **high-end devices** with robust processing power, YOLOv8 will deliver optimal performance.\n\n- **When should you use it?**  \n  - Your mobile app needs to **detect multiple objects** or **localize faces/eyes**.\n  - You have access to **high-performance hardware** on the device (e.g., **high-end smartphones**).\n  - You need a **complete detection and classification system** in a single pipeline.\n\n### **Which One to Choose for TensorFlow Lite or YOLO?**\n- **Go for CNN + Transfer Learning (MobileNetV2)** if:  \n  - You need a **lightweight** model that runs **efficiently** on **mobile devices** with **limited computational power**.\n  - You're aiming for **real-time performance** with a **fast deployment** using **TensorFlow Lite**.\n\n- **Go for YOLOv11 with Roboflow** if:  \n  - You need **advanced object detection** and **localization** (e.g., detecting faces or eyes).\n  - Your app will run on **high-performance mobile devices** that can handle the increased computational load.\n  - You want an **end-to-end system** that seamlessly combines **real-time detection** and **classification**.\n\n### Final Thoughts 🧠  \nBoth models have their strengths, and the best choice will depend on the **specific needs** of your **mobile app**. If you're looking for a **lightweight** and **efficient** model for **real-time performance**, **MobileNetV2** is the way to go. However, if your focus is on **advanced detection and localization** with **high-end hardware**, **YOLOv8** will offer the performance you need for a **powerful real-time solution**. 🚀\n\n### Screenshots\n\n\u003cimg src=\"doc/screenshots/picture_1.png\" /\u003e\n\u003cimg src=\"doc/screenshots/picture_2.png\" /\u003e\n\u003cimg src=\"doc/screenshots/picture_3.png\" /\u003e\n\u003cimg src=\"doc/screenshots/picture_4.png\" /\u003e\n\u003cimg src=\"doc/screenshots/roboflow3.PNG\" /\u003e\n\n## 🚀 **Let’s Dive In!** 🚀  \nBoth models are powerful tools for **driver drowsiness detection**, and each offers unique benefits. The choice of approach depends on your specific goals, dataset, and available resources.\n\n## **📚 References**\n- [How to train a YOLOv8 classification model](https://blog.roboflow.com/how-to-train-a-yolov8-classification-model/)\n- [Real time object detection in android with yolov11](https://www.tensorflow.org/)\n- [Transfer learning](https://www.kaggle.com/code/esraameslamsayed/driver-drowsiness-detection-cnn-mobilenetv)\n- [Dataset](https://www.kaggle.com/datasets/ismailnasri20/driver-drowsiness-dataset-ddd/data)\n\n## ⚠️ Disclaimer\n\nThis project, **Deep Learning for Safer Roads**, is an **educational and experimental** exploration of deep learning models for detecting **driver drowsiness**. The primary goal of this work is to investigate the effectiveness of **CNN-based models with Transfer Learning** and **YOLOv8** for real-time driver monitoring and fatigue detection.\n\nThe models and methods explored in this notebook are intended for **learning and research purposes** only\n\nThis repository is open for educational purposes and encourages further experimentation and development.\n\n## **🙏 Acknowledgments**\n\nA huge **thank you** to **Ismail Nasri** for providing the dataset that made this project possible! 🌟 The dataset can be found on [Kaggle](https://www.kaggle.com/datasets/ismailnasri20/driver-drowsiness-dataset-ddd/data). Your contribution is greatly appreciated! 🙌\n\nA special thank you to **Esraa Meslam Sayed** for the invaluable inspiration provided through his project, [**Driver Drowsiness Detection🚘😴(CNN ||MobileNetV2)**](https://www.kaggle.com/code/esraameslamsayed/driver-drowsiness-detection-cnn-mobilenetv2). His work laid the foundation for the development of this model and greatly influenced the approach taken in this project. The insights and techniques explored in his work served as a key resource, helping to guide the creation of an effective and robust diabetes prediction model. We truly appreciate the effort and dedication put into his research and contributions to the data science community\n\n🙏 I would like to extend my heartfelt gratitude to [Santiago Hernández, an expert in Cybersecurity and Artificial Intelligence](https://www.udemy.com/user/shramos/). His incredible course on Deep Learning, available at Udemy, was instrumental in shaping the development of this project. The insights and techniques learned from his course were crucial in crafting the neural network architecture used in this classifier\n\n## Visitors Count\n\n\u003cimg width=\"auto\" src=\"https://profile-counter.glitch.me/safedrive_drowsiness_detection/count.svg\" /\u003e\n\n## License ⚖️\n\nThis project is licensed under the **Apache License 2.0**, a permissive open-source software license that allows developers to freely use, modify, and distribute the software. 🚀 This includes both personal and commercial use, with some conditions for distribution and modification. 📜\n\nKey terms of the Apache License 2.0:\n\n- You are allowed to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the software. 💻\n- If you modify and distribute the software, you must include the original copyright notice, provide a copy of the Apache 2.0 license, and indicate any modifications made. 📝\n- You are not allowed to use the name of the project or its contributors to promote derived works without permission. ✋\n- The software is provided \"as is,\" without any warranties, express or implied. 🚫🛡️\n\nPlease see the full license text below for more detailed terms.\n\n```\nApache License Version 2.0, January 2005 http://www.apache.org/licenses/\n\nCopyright (c) 2025 Dream software - Sergio Sánchez\n\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\n\nhttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsergio11%2Fsafedrive_drowsiness_detection","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsergio11%2Fsafedrive_drowsiness_detection","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsergio11%2Fsafedrive_drowsiness_detection/lists"}