MIRA — Day 14: Dataset Rebuild, Failed Kaggle Runs, and JuFo Preparation
Today focused on making MIRA scientifically reliable instead of simply adding more features. I completed another full codebase revamp, checked two failed Kaggle training runs, rebuilt the waste dataset, improved the training workflow, and rewrote the Jugend forscht report.
Codebase Audit and Bug Fixing
I reviewed the complete Python codebase as about 50% is ai generated and I really didnt take the time to verfiy everything.
Important fixes included:
- Repairing dashboard crashes caused by missing runtime fields and an incorrect performance-metrics function call.
- Preventing camera shutdown from releasing the camera while another thread was still reading from it.
- Adding bounded shutdown handling so a blocked camera driver cannot freeze the application.
- Fixing the custom mAP implementation, which previously allowed predictions from one image to match ground-truth boxes from another image.
- Preventing
export:YAML sections from being passed to Ultralytics as invalid training arguments.. - Correcting generated Kaggle and Colab dataset YAML files.
Dataset Research and Reconstruction
I wanted to train new models so yolo11n and the new yolo26n so I created new datasets.
I processed TACO, TrashNet, Roboflow, dmedhi, Keremberke, WaRP, and SortWaste.
Keremberke was excluded because its class remapping would have cuased generated approximately 45,000 misleading trash annotations and pushed trash to 40% of all annotation which create an imbalance
SortWaste was removed after it showed that most pictures were from the same perspective and always plastic.
The rebuilt dataset uses only dmedhi, TACO, Roboflow, and SAM-labeled TrashNet.
- 5,108 training images
- 415 tabletop validation images
- 1,375 independent test images
- 6,898 unique images
- 12,832 bounding boxes
The training split is approximately balanced, with 1,621–1,982 boxes per class. The final zip is ca 3.6GB
Failed Kaggle Training Attempts
I ran kaggle scripts overnight and in these was the sortwaste dataset included which gave me these results. Also i did the mistake of running yolo11x and not n whihc explains the 26 epochs even though it ran for 9 hours.
YOLO26n
- 188 epochs
- 29.1% mAP50
- Plastic: 59.7%
- Trash: 5.4%
**YOLO11x **
- 26 epochs
- 20.9% mAP50
- Trash: 2.3%
These runs were not downloaded or treated as valid results. As they were so bad I didnt want to document them in any kind
I ran a new kaggle script for yolo11n with the new cleaned datasets which hopefully has better results.
Jugend forscht Report Revision
I checked the LaTeX report against the official Jugend forscht requirements.
The previous version exceeded the page limit and was quite frankly just bad and build on a lot of assumption so a big part of today was just rewriting it
Next Steps
I am currently waiting for the YOLO11n training results. The YOLO26n run is planned for next week, as the failed training attempts exhausted my available Kaggle usage. Afterwards, I will benchmark the final model on the Raspberry Pi Zero 2 W I ordered through Stardance. Once the edge-hardware evaluation is complete, I can finalize MIRA and begin planning and building the robot arm.