1. What it does
GroupSplit is a Uliya Skill that helps object-detection researchers choose whole recordings for evaluation and saves the approved split beside their NAS dataset.
2. The problem
Randomly splitting video frames can put almost identical images in training and validation, making results look better than they are. Holding out whole recordings helps, but changes which examples remain for training.
3. How it helps
GroupSplit checks class maps, labels and summaries to compare options. In one synthetic case, the required night recording lacked a class. Adding an afternoon recording covered both classes overall, but put 25% of non-test images in validation instead of the preferred 15%. That still left the missing class untested at night. After approval, it writes dataset.yaml, any image lists and allocation.md.
4. How you use it
Tell Uliya: "Keep my test set fixed; help me choose validation recordings." Review the options, approve one and check the files in your training client. A later chat can revise the split without overwriting earlier versions.
5. What it adds
GroupSplit saves the split, the reasons behind it and the constraints it must keep. A later chat can pick up from that record. FiftyOne, scripts and generic assistants also handle grouped splits. I haven't measured whether GroupSplit takes less work.
6. Why the NAS
Images and labels stay in place. file-agent uses ug-filesystem and ug-filemgr to read and write files; document-agent uses ug-document to read supplied summaries.
7. How it's built
It reads approved paths and writes approved files to a new folder, checking interrupted writes before continuing. It preserves class IDs, recording groups and fixed test assignments. It uses Uliya's configured models; I haven't verified which ones. NAS text may reach cloud providers. OpenAI Codex and delegated agents helped with research, ideas, design, implementation, synthetic test code, local simulations, writing and review.
8. What I've tested
The six Markdown files pass the official structural checker. Local simulations of 0.1.1 cover 12- and 200-image synthetic datasets, including revisions. Separate Ultralytics 8.4.211 checks verified images, labels, class IDs and decoding across train, validation and test, including copied layouts. I still need to test it on a NAS and find its practical size limits.
9. Testing on the NAS
I'll run two NAS tests: an initial split and a fresh-chat revision, preserving the fixed test set and earlier files. I'll check all three roles in both versions with an external Ultralytics client. Edge case: a conflicting class map must block reuse. I'll compare correctness, corrections and effort against a generic assistant and FiftyOne.
10. Limits
Needs prepared Ultralytics Detection data, known recording membership and a client that can access the files. Directories stay live; lists save paths, not contents. It doesn't label or train. Recording groups don't guarantee independent evaluation.
Third-party sources and licenses
- UGREEN Uliya Skill Kit 0.7.7-en / catalog 2.2.0: UGREEN sponsor/SkillHub terms; no standalone permissive license identified in the archive. License or terms.
- Ultralytics 8.4.211: GNU AGPL v3 License or terms.
- FiftyOne 1.22.1: Apache License 2.0 License or terms.
- CVAT format reference: CVAT software: MIT. This identifies the software license, not a blanket license for hosted documentation or exported datasets. License or terms.
Built With
- markdown
- openai-codex
- ugreen
- uliya