Team Ai
Modelpublic

constructelligence/construction-site-safety-hazards

sourceHugging Faceagpl-3.0updated 4h agoView on Hugging Face
1likes97downloads
Model Card

Construction Site Safety Hazards

Ranked #1 of 10 public construction-safety detectors on Hugging Face in a head-to-head benchmark (October 2026): core PPE mAP@50 0.642 on a held-out dataset none of the models trained on, against 0.543 for the next best, and the strongest missing-PPE detection of any model tested. See the comparison ↓

Constructelligence is developing frontier construction-AI models. This detector is the lite, open tier — released for research and evaluation; the company's flagship production models are a separate, larger tier (see constructelligence.co).

PPE and heavy-equipment detection for construction-site imagery. A YOLOv8s detector that finds workers, worn and missing PPE — hard hats, hi-vis vests, gloves, goggles, safety boots — and heavy plant (excavators, wheel loaders, dump trucks) in a single pass. At 44.8 MB it runs entirely on-device, including in a web browser.

[image]

<sub>Predictions on held-out test images at confidence ≥ 0.4. Green: PPE worn · Red: PPE missing · Amber: heavy plant · Outline: worker.</sub>

Rank vs public HF safety modelsTest mAP@50ClassesInputRuns on
#1 of 100.634 <sub>(v0.1: 0.442)</sub>14640 × 640PyTorch · ONNX Runtime · Web
Intended use. Decision support for site teams: the model surfaces images and frames worth a closer look. It is not safety-rated, does not replace inspection by a competent person, and must not be used as a compliance record.

Model details

Versionv0.3
ArchitectureYOLOv8s (Ultralytics), fine-tuned from COCO
InputRGB 1×3×640×640, float32 in [0, 1], letterboxed with grey (114) padding
Output1×18×anchors: cx, cy, w, h in input pixels, then one score per class (apply NMS)
Classesperson, hardhat, no-hardhat, safety vest, no-safety vest, no-mask, gloves, safety shoes, excavator, wheel loader, dump truck, goggles, no-goggles, no-gloves
Filesbuildvision-hazards-v0.3.onnx · buildvision-hazards-v0.3.pt · predict_onnx.py · config.json · metrics.json
LicenceAGPL-3.0 (weights) · CC BY 4.0 (training data)

Performance

Evaluated on 573 held-out images from the test splits of 4 public construction-safety datasets, with near-duplicates of training and validation images removed.

mAP@50mAP@50-95PrecisionRecall
0.6340.3730.7540.604

By class

ClassBoxesPrecisionRecallmAP@50mAP@50-95v0.1 mAP@50
person7130.8740.8920.9080.5550.807
hardhat5470.8730.8610.8990.4680.795
no-hardhat1260.4520.3810.3790.1430.047
safety vest3820.8270.8090.8600.5080.708
no-safety vest2220.6350.5810.5220.2410.368
no-mask — not detected21.0000.0000.0000.0000.000
gloves2480.9170.6850.7760.3410.000
safety shoes2680.8400.6160.7090.3990.000
excavator1330.8640.8950.9280.6990.698
wheel loader461.0000.9090.9680.7850.777
dump truck780.8490.8210.8880.7120.666
goggles (new)780.8210.6920.7510.304—
no-goggles (new)670.3840.2540.2080.045—
no-gloves (new)1040.2140.0580.0740.020—

By source

SourceImagesmAP@50mAP@50-95v0.1 mAP@50
Construction Site Safety340.5310.3370.503
PPE detection 11010.8460.5050.641
PPE_Dectection v42540.5880.2780.375
excavators-czvg9 (RF100)1840.9110.6950.677

Evaluation notes. Two sources label people incompletely; in their test images, people found by a stock COCO YOLOv8s (confidence ≥ 0.5) were added as person boxes so that correct detections are not counted as false positives. Scores reported by other PPE models use their own test sets and are not directly comparable; the head-to-head below re-runs them on the same images.

Comparison with other Hugging Face models

Nine public construction-safety / PPE detectors from the Hub, run with one protocol: same images, 640 px, confidence 0.001, NMS IoU 0.7, AP@0.5 (COCO 101-point) per class. Each model's labels were mapped onto shared classes (Hard_hat, Capacete, helmet → hard hat, …) and a model is scored only on classes it has.

  • —Held-out — Ultralytics Construction-PPE validation + test splits, 284 images. Neither this model nor, as far as their cards say, any of the others trained on it. Core = mean AP of person, hard hat, no hard hat, vest (the set has no missing-vest label).
  • —Our test set — the 573 images above. Core adds no-vest; Violations = mean AP of no-hardhat and no-vest. This set follows our labelling, so it favours this model; several others trained on Construction Site Safety, one of its sources.
ModelParams (M)Held-out coreHeld-out no-hardhat (IoU 0.5 / 0.3)Our test coreOur test violationsCPU ms
This model (v0.3)11.10.6420.134 / 0.3520.7120.450138
killuminati1/construction-ppe-yolov811.10.5430.051 / 0.1300.5030.179142
wesleymqsss/yolov8m-construction-site-safety25.90.5150.068 / 0.1200.5030.158287
Hansung-Cho/yolov8-ppe-detection3.00.5030.058 / 0.1480.4820.16272
melihuzunoglu/ppe-detection2.60.4350.071 / 0.217——58
jashwanthpeddisetty0712/ppe-detection-yolov8m25.90.3450.043 / 0.3130.3820.233303
Hexmon/vyra-yolo-ppe-detection25.90.2860.049 / 0.3490.3610.261284
baskarmother/yolov8-ppe-construction3.00.1800.120 / 0.4110.1200.04258
keremberke/yolov8m-hard-hat-detection25.9—0.088 / 0.449——292
keremberke/yolov8m-protective-equipment-detection25.9—0.010 / 0.010——355

<sub>— = the model has no such class. CPU ms: one Apple-silicon Mac, PyTorch, 4 threads, 640 px, batch 1, median of five passes with all models timed in rotation. Hub search, October 2026; Ultralytics-format detectors with downloadable weights and construction PPE classes.</sub>

  • —Lead on held-out data: +0.10 core mAP@50 over the next best (bootstrap 95% CI +0.07 to +0.13), at the same size and speed.
  • —Missing PPE: 0.45 violation mAP@50 on our test set; no other model passes 0.27.
  • —Where it does not lead: Construction-PPE draws no_helmet boxes across the eyes rather than around the head, so every model scores low there at IoU 0.5. At IoU 0.3 (head found, box style ignored) two hard-hat specialists score higher on that class: keremberke hard-hat 0.449, baskarmother 0.411, this model 0.352.

Usage

Ultralytics

python
from ultralytics import YOLO

model = YOLO("buildvision-hazards-v0.3.pt")
for box in model("site.jpg", imgsz=640, conf=0.35)[0].boxes:
    print(model.names[int(box.cls)], float(box.conf), box.xyxy.tolist())

ONNX Runtime — no PyTorch required:

bash
pip install onnxruntime numpy pillow
python predict_onnx.py site.jpg --out boxes.jpg

Browser — load the same ONNX file with onnxruntime-web (WASM). No server is involved; images never leave the device.

Training

  • —Data: Construction Site Safety, construction-safety-gsnvb (RF100), PPE detection 1, PPE_Dectection v4, excavators-czvg9 (RF100) — 7,450 training and 567 validation images, all CC BY 4.0.
  • —Recipe: YOLOv8s from COCO weights at 640 px. Mosaic and mixup augmentation with a cosine learning-rate schedule.
  • —Label clean-up: classes with only a handful of boxes across the corpus (barricade, dumpster, mask, mini-van, truck, safety net) were removed before training.

Limitations

  • —Missing PPE is harder than worn PPE. no-hardhat (0.379), no-goggles (0.208), no-gloves (0.074) trail their worn counterparts; expect missed violations and some false alarms, especially on unfamiliar sites and cameras.
  • —Unsupported output channels. no-mask — too few training examples to learn; ignore these outputs.
  • —No fall protection. Harnesses, lanyards and edge protection are not labelled in any training source.
  • —No zones. Exclusion zones around plant and vehicles are not predicted; derive them downstream from the detected boxes.
  • —Model size. YOLOv8s is chosen to run on-device; larger models trained on the same data did not score higher.

FAQ

Which PPE does it detect? Hard hats, hi-vis vests, gloves, goggles and safety boots — and, for hard hats, vests, gloves and goggles, their absence.

Which equipment? Excavators, wheel loaders and dump trucks, plus workers (person).

Does it run offline? Yes. The ONNX export runs in ONNX Runtime on CPU or in the browser with no network access.

Can it be used for compliance decisions? No. It is a screening aid for people, not a safety system.

Licence

  • —Weights — AGPL-3.0. Trained with Ultralytics YOLOv8, whose models and derivatives are AGPL-3.0 unless covered by an Ultralytics Enterprise licence. Offering the model in a network service requires publishing that service's source.
  • —Data — CC BY 4.0. Sources below.

Attribution

  • —Construction Site Safety — Roboflow Universe Projects, CC BY 4.0 — <https://universe.roboflow.com/roboflow-universe-projects/construction-site-safety>
  • —construction-safety-gsnvb (RF100) — Roboflow 100, CC BY 4.0 — <https://universe.roboflow.com/roboflow-100/construction-safety-gsnvb>
  • —PPE detection 1 — vincentspace, CC BY 4.0 — <https://universe.roboflow.com/vincentspace/ppe-detection-1-cniwr>
  • —PPE_Dectection v4 — himanshu-bharati, CC BY 4.0 — <https://universe.roboflow.com/himanshu-bharati/ppe_dectection-dtt4q>
  • —excavators-czvg9 (RF100) — Roboflow 100, CC BY 4.0 — <https://universe.roboflow.com/roboflow-100/excavators-czvg9>

Person pseudo-labels in the test set come from Ultralytics YOLOv8s (COCO).

Comparison benchmark only (not used for training): Construction-PPE — Ultralytics, AGPL-3.0 — <https://docs.ultralytics.com/datasets/detect/construction-ppe/>.

Citation

bibtex
@misc{construction-site-safety-hazards,
  title  = {Construction Site Safety Hazards: PPE and Heavy-Equipment Detection},
  author = {Constructelligence},
  year   = {2026},
  url    = {https://huggingface.co/constructelligence/construction-site-safety-hazards}
}