Skill zur Datensatz-Schwierigkeit
Erzeuge einen reproduzierbaren, modellunabhängigen Schwierigkeits-Prior für einen Bildklassifikationsdatensatz. Verwende CLIP-Embeddings, wenn verfügbar, aber halte jede rohe Metrik und Komponente sichtbar. Präsentiere die endgültige Bewertung niemals als vorhergesagte Genauigkeit oder als Ersatz für eine nachgelagerte Validierung.
Wann verwenden
Verwende dieses Skill, wenn der Benutzer möchte:
- einen Bildklassifikationsdatensatz vor dem Training prüfen;
- korrupte, doppelte, nicht beschriftete, widersprüchlich beschriftete oder statistische Ausreißer finden;
- relative Einfach/Mittel/Schwer-Schwierigkeiten vergleichen;
- nach Klasse und Schwierigkeit geschichtete Trainings-/Validierungs-/Test-Manifeste erstellen;
- maschinenlesbare und menschlich überprüfbare Berichte erhalten.
Verwende es nicht für Objekterkennung, Segmentierung, Videoanalyse oder Feinabstimmung eines Klassifikators.
Zuerst Eingaben prüfen
- Stelle sicher, dass das Datensatzverzeichnis existiert.
- Bestimme das Format: Ordner-pro-Klasse, CSV oder JSON.
- Für CSV/JSON: Bestätige die Label-Datei und die relevanten Pfad-/Label-Spalten.
- Wenn eine leckage-sichere Gruppierung erforderlich ist, bestätige den Namen der optionalen
group_id-Spalte. - Wähle ein Ausgabeverzeichnis außerhalb des Datensatzbaums.
- Ändere oder lösche niemals originale Bilder oder Labels.
- Lade keine CLIP-Gewichte herunter, es sei denn, der Benutzer autorisiert dies explizit.
Unterstütztes Ordnerlayout:
dataset/
cat/
image-1.jpg
dog/
image-2.png
CSV- und JSON-Beispiele sowie Spaltenüberschreibungen findest du unter references/configuration.md.
Die Analyse ausführen
Der Quellbaum ist direkt ausführbar:
python scripts/analyze_dataset.py DATA_ROOT \
--output OUTPUT_DIR \
--config configs/default.yaml
Mit einer Label-Datei:
python scripts/analyze_dataset.py DATA_ROOT \
--labels labels.csv \
--format csv \
--output OUTPUT_DIR
Mit leckage-sicheren Gruppen:
python scripts/analyze_dataset.py DATA_ROOT \
--labels labels.csv \
--format csv \
--group-column group_id \
--output OUTPUT_DIR
Offline-Analyse ohne CLIP:
python scripts/analyze_dataset.py DATA_ROOT \
--output OUTPUT_DIR \
--no-semantic
CLIP ist standardmäßig nur lokal. Wenn der Benutzer einen Modell-Download und Netzwerknutzung explizit autorisiert:
python scripts/analyze_dataset.py DATA_ROOT \
--output OUTPUT_DIR \
--semantic-backend clip \
--allow-model-download
Führe python scripts/analyze_dataset.py --help für alle Überschreibungen aus.
In dieser Reihenfolge interpretieren
- Lies zuerst
summary.json. - Behandle
corrupt_image,empty_labelundconflicting_labelals Datenintegritätsbefunde. - Überprüfe doppelte Gruppen und nahe Duplikate.
- Überprüfe Qualitätsausreißer getrennt von der Schwierigkeit.
- Vergleiche visuelle Zugänglichkeit, beschreibende visuelle Komplexität, rohe semantische Komponenten, Gewichte und Beitragswerte.
- Interpretiere Einfach/Mittel/Schwer nur unter den nicht-anomalen bewerteten Stichproben.
- Überprüfe Aufteilungsdiagnosen und Warnungen, bevor du das Manifest verwendest.
Berichte die Komponenten, die zu einem Ergebnis führen. Zum Beispiel: „Schwer, weil die Stichprobe weit von ihrem Klassen-Zentroid entfernt und unter Augmentation instabil ist; ihre Bildqualität selbst ist normal.„ Sage nicht „das Modell wird fehlschlagen„ oder „diese Stichprobe hat eine niedrige Genauigkeit.“
Wenn semantische Felder null sind, gib an, dass CLIP nicht verfügbar oder deaktiviert war. Erfinde oder impliziere keine Embeddings. Behandle schlechte Qualität nicht als semantische Schwierigkeit. Führe Anomalie-Labels nicht in Einfach/Mittel/Schwer zusammen.
Rein statistische Anomalien und qualitativ schlechte, aber lesbare Bilder sind standardmäßig
weich: Behalte ihre Anomalie-Markierung, aber behalte sie in Bewertung und Aufteilung als
Statistically_Unusual oder Quality_Flagged. Nur harte Integritätsanomalien
wie korrupte, widersprüchlich beschriftete, doppelte oder zu kleine Daten bleiben
standardmäßig ausgeschlossen. Beschreibe nicht jeden statistischen oder Qualitätsausreißer als
ungültige Daten.
Für echte Validierungsansprüche überprüfe summary.json["provenance"],
summary.json["dataset"] und summary.json["semantic_runtime"]. Überprüfe den
aufgezeichneten Git-Commit, Dirty-Status, Befehl, Konfigurationspfad, Modellquelle, Batch,
Cache-Zähler, Fehlschläge und Gerät, bevor du Reproduzierbarkeit behauptest.
Label-Seltenheit ist eine unabhängige Datensatzstatistik mit null Gewicht und null
Beitrag. Bildentropie und Frequenzkomplexität sind beschreibende visuelle Komplexität,
kein Beleg dafür, dass eine Stichprobe schwerer ist. Wenn
difficulty_scope=visual_only ist, warne explizit, dass dem Prior CLIP-semantische
Evidenz fehlt.
Lies summary.json["semantic_runtime"] und summary.json["performance"]
für tatsächliches Gerät, Batch-Größe, Cache-Treffer/-Fehler, Fehlschläge, Phasen-Timings und
CUDA-Speicherspitze. Berichte diese Felder nicht, es sei denn, sie stammen von einem echten Durchlauf.
Lies:
- references/metrics.md für Formeln und Grenzwerte;
- references/configuration.md für jeden Konfigurationsabschnitt, Eingabeschema und CLI-Überschreibung;
- references/outputs.md für Artefakt- und Spaltenverträge.
Überprüfen
Verwende die Projektumgebung, die die erforderlichen Abhängigkeiten hat:
python -c "import cv2, numpy, pandas, sklearn, matplotlib, yaml, torch, transformers"
python -m pytest -v
Für einen echten Durchlauf bestätige, dass samples.csv, summary.json, report.html,
hard_samples.png, anomaly_samples.png, split_manifest.csv und
split_summary.json existieren. Verifiziere, dass summary.json keine NaN- oder
Infinity-Tokens enthält.
Sicherheit und Umfang
- Alle Analyseschreibvorgänge erfolgen in die expliziten Ausgabe- und Cache-Verzeichnisse.
- Ausgabe- und Cache-Pfade müssen außerhalb des Eingabe-Datensatzbaums liegen.
- Feature-Cache-Einträge werden durch Bildinhalts-Hash und Modellsignatur geschlüsselt.
- Fehlende Metriken bleiben null; verfügbare Komponenten werden neu gewichtet und die Abdeckung wird gemeldet.
- Die endgültige Bewertung ist ein relativer Prior, keine kalibrierte Wahrscheinlichkeit.
- Klassenbalance und Schwierigkeitsschichtung sind für sehr kleine Schichten näherungsweise; melde Aufteilungswarnungen.