CoolFace
Modelpublic

killuminati1/construction-ppe-yolov8

sourceHugging Faceapache-2.0updated 3mo agoView on Hugging Face
2likes357downloads
Model Card

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)

IDClassIDClass
0Boots10No-Helmet
1Ear-Protection11No-Mask
2Glass12No-Vest
3Glove13Worker
4Hard_hat14Vest
5Mask15Circular_Saw
6No-Boots16Fire_Extinguisher
7No-Ear-Protection17FirepreventionNet
8No-Glass18Welding_Equipment
9No-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

MetricValue
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

[image]

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

python
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.