Computer Vision2024
Pushing Mining Detection to 86.5% mAP@50 with YOLOv8 and BGF-YOLO
My final project at ITB, and the direct answer to what YOLOv4 kept getting wrong in production: small objects, bad lighting, and confident false detections.
- Stack
- YOLOv8 · BGF-YOLO · PyTorch · OpenCV · Roboflow · Python
Context
The production system at Berau Coal ran on YOLOv4. It worked, but the failure pattern was consistent and I had two years of field evidence for it. This project turned that evidence into a research question for my undergraduate thesis: can a newer architecture with a redesigned neck close the gap on the exact cases where YOLOv4 fails in occupational health and safety monitoring?
Problem
Three recurring failure modes, ranked by how often they caused a missed or false alert:
Small objects. A worker standing 80 metres down a haul road occupies very little of the frame, and that is precisely the situation where an alert matters most.
Poor lighting. Night shift, backlight, and headlight glare all degraded detection quality.
False detections. Reflective surfaces and machinery silhouettes generated alerts that eroded trust in the system.
Approach
I benchmarked YOLOv8 against the production YOLOv4 baseline, then evaluated BGF-YOLO, which restructures the feature fusion path in the neck to hold on to fine detail that ordinary top-down fusion loses at deeper layers.
The dataset came from real mining CCTV footage rather than public datasets, annotated through Roboflow. I sampled deliberately for the hard cases: low-light frames, small and partially occluded objects, and overlapping figures. Evaluation focused on mAP@50 with per-condition breakdowns, because an average score hides exactly the scenarios that make or break a safety system.
Results
86.5% mAP@50 after optimisation
Measurable improvement on small and overlapping objects compared to the YOLOv4 baseline
Better detection stability under low-light conditions
Findings fed back into the production pipeline, which migrated from YOLOv4 to YOLOv8
Notes
The most useful part of this project was not the final number. It was building an evaluation set that reflected the conditions the system actually runs in. Reporting a single mAP figure on a balanced dataset would have looked better on paper and told me nothing about night shift.

