Instructions to use killuminati1/construction-ppe-yolov8 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- ultralytics
How to use killuminati1/construction-ppe-yolov8 with ultralytics:
from ultralytics import YOLOvv8 model = YOLOvv8.from_pretrained("killuminati1/construction-ppe-yolov8") source = 'http://images.cocodataset.org/val2017/000000039769.jpg' model.predict(source=source, save=True) - Notebooks
- Google Colab
- Kaggle
SafeSight PPE β Construction Site Safety Detector (YOLOv8)
A YOLOv8 model fine-tuned to detect personal protective equipment (PPE) and safety violations on construction sites. Built as part of SafeSight, an AI-powered construction safety monitoring system.
Why this model
Most public PPE datasets only cover a handful of classes (hard hat, vest, person). They don't cover the full range of equipment and violations that real construction safety monitoring needs. No single existing dataset covered everything required for this project, so multiple datasets were combined and the model was fine-tuned on the merged set.
Classes (19 total)
| ID | Class | ID | Class |
|---|---|---|---|
| 0 | Boots | 10 | No-Helmet |
| 1 | Ear-Protection | 11 | No-Mask |
| 2 | Glass | 12 | No-Vest |
| 3 | Glove | 13 | Worker |
| 4 | Hard_hat | 14 | Vest |
| 5 | Mask | 15 | Circular_Saw |
| 6 | No-Boots | 16 | Fire_Extinguisher |
| 7 | No-Ear-Protection | 17 | Fire_prevention_Net |
| 8 | No-Glass | 18 | Welding_Equipment |
| 9 | No-Glove |
The model detects both presence of PPE (e.g. Hard_hat) and absence/violations (e.g. No-Helmet) as distinct classes, plus site equipment relevant to hazard context (fire extinguishers, welding equipment, saws).
Training
- Base model: YOLOv8
- Epochs: 60
- Dataset size: ~13,000 training images, combined from multiple sources (primarily Roboflow, plus at least one additional GitHub-sourced dataset)
- Full training config in
args.yaml
Results
| Metric | Value |
|---|---|
| mAP50 | ~0.76 |
| mAP50-95 | ~0.43 |
| Precision | ~0.81 |
| Recall | ~0.72 |
See results.png for full training curves and confusion_matrix.png / confusion_matrix_normalized.png for per-class performance.
Example Detections
Known limitations
- Ear-Protection class is underrepresented β significantly fewer correct detections than other classes, likely due to limited examples in the combined dataset. Treat predictions for this class with caution.
- Background false negatives β several classes (notably Boots, No-Ear-Protection, No-Glove) are sometimes missed entirely rather than misclassified, suggesting the model under-detects in certain conditions rather than confusing classes.
- Training was stopped at 60 epochs while loss was still decreasing. Further training on a larger/more balanced dataset would likely improve mAP50-95 further, particularly for underrepresented classes.
- Performance has not been validated on construction sites outside the source datasets' geography/conditions.
Usage
from ultralytics import YOLO
model = YOLO("best.pt")
results = model.predict("path/to/image.jpg")
for r in results:
r.show() # display detections
print(r.boxes) # class ids, confidence, bounding boxes
License
Apache 2.0. Base YOLOv8 architecture by Ultralytics (AGPL-3.0 for their own codebase β check Ultralytics licensing if using their training pipeline commercially). Training data combined from multiple public sources; individual dataset licenses may apply to the underlying data, not to these fine-tuned weights.
- Downloads last month
- 60
