CommunityRecherche & Datenanalysegithub.com

swaggylei/dataset-difficulty-skill

Analysiere Bildklassifikationsdatensätze vor dem Training auf Probleme der visuellen Qualität, semantische Ausreißer, Klassenverwirrung, Augmentationsinstabilität, korrupte oder doppelte Stichproben, relative Schwierigkeitsstufen und geschichtete Aufteilungen. Verwende dies für Datenprüfungen und Trainingsbereitschafts-Checks; nicht für Detektion, Segmentierung, Video oder Aussagen über die nachgelagerte Genauigkeit.

Was ist dataset-difficulty-skill?

Dieses Skill bietet einen reproduzierbaren, modellunabhängigen Schwierigkeits-Prior für Bildklassifikationsdatensätze, indem es CLIP-Embeddings (falls verfügbar) nutzt und gleichzeitig alle rohen Metriken und Komponenten sichtbar hält. Es eignet sich für Datenprüfungen vor dem Training, um korrupte, doppelte, nicht beschriftete, widersprüchlich beschriftete oder statistische Ausreißer zu finden, sowie um relative Schwierigkeitsstufen (Einfach/Mittel/Schwer) zu vergleichen und geschichtete Trainings-/Validierungs-/Test-Manifeste zu erstellen. Das Skill unterstützt Ordner-pro-Klasse-, CSV- und JSON-Formate und kann mit oder ohne CLIP-Semantik (Offline-Modus) ausgeführt werden. Die Analyse erzeugt maschinenlesbare und menschlich überprüfbare Berichte, einschließlich summary.json, samples.csv und HTML-Reports. Es darf nicht für Objekterkennung, Segmentierung, Videoanalyse oder zur Vorhersage der nachgelagerten Genauigkeit verwendet werden. Die endgültige Bewertung ist ein relativer Prior, keine kalibrierte Wahrscheinlichkeit, und die Integritätsanomalien (korrupte, widersprüchliche, doppelte Daten) werden standardmäßig ausgeschlossen, während statistische und Qualitätsanomalien weich bleiben und in Bewertung und Aufteilung erhalten bleiben.

Funktioniert mit~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/swaggylei/dataset-difficulty-skill/tree/HEAD

Installed? Explore more Recherche & Datenanalyse skills: affaan-m/uspto-database, affaan-m/scholar-evaluation, affaan-m/literature-review · View all 6 →

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

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

  1. Stelle sicher, dass das Datensatzverzeichnis existiert.
  2. Bestimme das Format: Ordner-pro-Klasse, CSV oder JSON.
  3. Für CSV/JSON: Bestätige die Label-Datei und die relevanten Pfad-/Label-Spalten.
  4. Wenn eine leckage-sichere Gruppierung erforderlich ist, bestätige den Namen der optionalen group_id-Spalte.
  5. Wähle ein Ausgabeverzeichnis außerhalb des Datensatzbaums.
  6. Ändere oder lösche niemals originale Bilder oder Labels.
  7. 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

  1. Lies zuerst summary.json.
  2. Behandle corrupt_image, empty_label und conflicting_label als Datenintegritätsbefunde.
  3. Überprüfe doppelte Gruppen und nahe Duplikate.
  4. Überprüfe Qualitätsausreißer getrennt von der Schwierigkeit.
  5. Vergleiche visuelle Zugänglichkeit, beschreibende visuelle Komplexität, rohe semantische Komponenten, Gewichte und Beitragswerte.
  6. Interpretiere Einfach/Mittel/Schwer nur unter den nicht-anomalen bewerteten Stichproben.
  7. Ü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:

Ü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.

Verwandte Skills