--- language: - en - ko license: mit tags: - vision - object-detection - yolov8 - ultralytics - pytorch - safety - ppe - hardhat - mask - construction library_name: ultralytics pipeline_tag: object-detection --- # ๐Ÿฆบ YOLOv8 PPE Detection โ€“ End-to-End Safety Vision Model **Author:** Hansung Cho **Model:** YOLOv8n fine-tuned for PPE (Personal Protective Equipment) detection on construction-like scenes. ์ด ๋ชจ๋ธ์€ ๊ฑด์„ค ํ˜„์žฅ ๋“ฑ์˜ ์ด๋ฏธ์ง€/์˜์ƒ์—์„œ **์•ˆ์ „๋ชจ(Hardhat), ๋งˆ์Šคํฌ, ์•ˆ์ „์กฐ๋ผ(Safety Vest), ์‚ฌ๋žŒ(Person)** ๋“ฑ PPE ์ฐฉ์šฉ ์—ฌ๋ถ€๋ฅผ ํƒ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ํ•™์Šต๋œ YOLOv8 ๊ธฐ๋ฐ˜ ๊ฐ์ฒด ํƒ์ง€ ๋ชจ๋ธ์ž…๋‹ˆ๋‹ค. - Custom PPE dataset ๊ธฐ๋ฐ˜ fine-tuning - Web / FastAPI / Webcam๊นŒ์ง€ ์—ฐ๋™๋œ End-to-End ํ”„๋กœ์ ํŠธ์˜ ํ•ต์‹ฌ ๋ชจ๋ธ - Hugging Face Hub์—์„œ ๋ฐ”๋กœ ๋‹ค์šด๋กœ๋“œ ๋ฐ ์‚ฌ์šฉ ๊ฐ€๋Šฅ --- ## ๐Ÿง  Model Description - **Base model:** YOLOv8n (Ultralytics) - **Task:** Object Detection (Bounding Box) - **Domain:** Construction site & industrial safety PPE detection - **Classes (์˜ˆ์‹œ):** - `Person` - `Hardhat` - `No-Hardhat` - `Safety Vest` - `No-Safety Vest` - `Mask` - `No-Mask` - + ๊ธฐํƒ€ PPE ๊ด€๋ จ ํด๋ž˜์Šค (์ด ์•ฝ 10๊ฐœ) ๋ณธ ๋ชจ๋ธ์€ ์‚ฌ๋žŒ + PPE ์ฐฉ์šฉ ์—ฌ๋ถ€๋ฅผ ๋™์‹œ์— ํƒ์ง€ํ•˜์—ฌ Web UI / Webcam / FastAPI ์„œ๋ฒ„์—์„œ ์‹ค์‹œ๊ฐ„ ๊ฒฝ๊ณ  ์‹œ์Šคํ…œ ๊ตฌ์ถ•์— ํ™œ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. --- ## ๐Ÿ“Š Training & Evaluation ### Validation ์„ฑ๋Šฅ (YOLOv8n Fine-tuning, Validation Set ๊ธฐ์ค€) | Metric | Score | |---------------|--------| | **mAP@0.50** | 0.744 | | **mAP@0.50:0.95** | 0.436 | | **Precision** | 0.831 | | **Recall** | 0.685 | --- ## ๐Ÿ“ Training Data - Public PPE / construction-related datasets (Kaggle ๋“ฑ) - RGB ์ด๋ฏธ์ง€ - Bounding box + class label - Hardhat / No-Hardhat / Mask / No-Mask / Safety Vest / No-Safety Vest / Person ๋“ฑ > ๋ฐ์ดํ„ฐ์…‹ ์ž์ฒด๋Š” ํฌํ•จํ•˜์ง€ ์•Š์œผ๋ฉฐ, > ๋ผ์ด์„ ์Šค๋Š” ๋ฐ์ดํ„ฐ ์ œ๊ณต์ฒ˜๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค. --- ## โš™๏ธ How to Use ### Ultralytics YOLO + Hugging Face Hub ```python from huggingface_hub import hf_hub_download from ultralytics import YOLO ckpt_path = hf_hub_download( repo_id="Hansung-Cho/yolov8-ppe-detection", filename="best.pt" ) model = YOLO(ckpt_path) results = model("your_image.jpg") results[0].plot() ``` ### Command Line (CLI) ```bash yolo task=detect mode=predict \ model="https://huggingface.co/Hansung-Cho/yolov8-ppe-detection/resolve/main/best.pt" \ source="your_image_or_video.mp4" \ conf=0.25 ``` --- ## ๐ŸŽฏ Intended Uses & Use Cases ### Intended - ๊ฑด์„ค ํ˜„์žฅ CCTV / Webcam ๋ชจ๋‹ˆํ„ฐ๋ง - PPE ์ฐฉ์šฉ ์—ฌ๋ถ€ ์ž๋™ ์ ๊ฒ€ - ์•ˆ์ „ ๊ต์œก PoC / ๋ฐ๋ชจ - FastAPI + Web UI ์‹ค์‹œ๊ฐ„ ๊ฒฝ๊ณ  ์‹œ์Šคํ…œ ### Not Intended - ๋ฒ•์  ์ œ์žฌ/์ง•๊ณ„์˜ ์œ ์ผํ•œ ๊ทผ๊ฑฐ - ์˜๋ฃŒ/์ƒ๋ช… ์•ˆ์ „์˜ ๋‹จ๋… ํŒ๋‹จ ๊ธฐ์ค€ - ์™„์ „ํžˆ ๋‹ค๋ฅธ ๋„๋ฉ”์ธ(์ผ์ƒ์‚ฌ์ง„/์Šคํฌ์ธ  ๋“ฑ)์—์„œ ์‚ฌ์šฉ --- ## โš ๏ธ Limitations & Ethical Considerations - **๋„๋ฉ”์ธ ํŽธํ–ฅ:** ์‹ค๋‚ดยท์•ผ๊ฐ„ยทํŠน์ˆ˜๋ณต์žฅ ํ™˜๊ฒฝ์—์„œ ์„ฑ๋Šฅ ์ €ํ•˜ ๊ฐ€๋Šฅ - **Occlusion:** ๊ฐ€๋ ค์ง„ ๊ฒฝ์šฐ ์˜คํƒ/๋ฏธํƒ ๊ฐ€๋Šฅ - **Low Resolution:** ๋ฉ€๋ฆฌ ์žˆ๋Š” ์ธ๋ฌผ ํƒ์ง€ ์–ด๋ ค์›€ - **Ethical Use:** - ๋ณด์กฐ์  ๊ฒ€์‚ฌ ๋„๊ตฌ๋กœ๋งŒ ์‚ฌ์šฉํ•ด์•ผ ํ•จ - ์ธ๊ถŒยท๊ฐœ์ธ์ •๋ณด ๋ณดํ˜ธ๋ฅผ ๋ฐ˜๋“œ์‹œ ๊ณ ๋ คํ•ด์•ผ ํ•จ --- ## ๐Ÿงช Evaluation & Reproducibility - **Framework:** Ultralytics YOLOv8 / PyTorch - **Hardware:** Colab GPU / ๋‹จ์ผ GPU - **Notebook:** `training/YOLO_PPE.ipynb` ### Visualization Assets - Training curves (`results.png`) - Confusion matrix (`confusion_matrix.png`) - PR Curve (`BoxPR_curve.png`) - F1 Curve (`BoxF1_curve.png`) - Prediction example (`example.png`) --- ## ๐Ÿงฉ Integration Example (FastAPI + Web) ### Backend - FastAPI server (`backend/app.py`) - `/predict` โ†’ ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ ํ›„ YOLO ์ถ”๋ก  - bounding box๊ฐ€ ํฌํ•จ๋œ ๊ฒฐ๊ณผ๋ฅผ base64๋กœ ๋ฐ˜ํ™˜ ### Frontend - HTML / JavaScript (`index.html`, `webcam.html`) - ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ / ์‹ค์‹œ๊ฐ„ Webcam ์ŠคํŠธ๋ฆผ - NO-Hardhat, NO-Mask ๋“ฑ ์œ„ํ—˜ ์š”์†Œ ๊ฐ์ง€ ### Local - `local/webcam_ppe.py` โ†’ ๋กœ์ปฌ ์›น์บ  ์‹ค์‹œ๊ฐ„ ๊ฐ์ง€ > ์ „์ฒด ์‹œ์Šคํ…œ ๊ตฌํ˜„์€ GitHub ๋ ˆํฌ์ง€ํ† ๋ฆฌ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. --- ## ๐Ÿ“š Citation ``` Cho, Hansung. "YOLOv8 PPE Detection โ€“ End-to-End AI System for Safety Monitoring." Hugging Face Model Hub, 2025. ``` --- ## ๐Ÿ“ฌ Contact & References - **GitHub Project Repository:** https://github.com/Hansung-Cho/YOLO_PPE - **GitHub Profile:** https://github.com/Hansung-Cho - **Model Page:** https://huggingface.co/Hansung-Cho/yolov8-ppe-detection - **Ultralytics YOLOv8 Source:** https://github.com/ultralytics/ultralytics Feel free to open an issue or reach out for questions, collaboration, or improvements.