Community研究與資料分析github.com

swaggylei/資料集難度分析技能

在訓練前分析圖像分類資料集,找出視覺品質問題、語意離群值、類別混淆、增強不穩定性、損壞或重複樣本、相對難度區間以及分層切分。適用於資料集稽核與訓練就緒檢查,請勿用於檢測、分割、影片或對下游準確度的宣稱。

資料集難度分析技能 是什麼?

此技能提供一種可重現且與模型無關的影像分類資料集難度先驗。它利用CLIP嵌入(當可用時)進行語意分析,同時保持所有原始指標和元件的可見性,而不會將最終分數呈現為預測準確度或下游驗證的替代品。該技能支援多種輸入格式(按類別的資料夾、CSV、JSON),並能識別資料完整性問題(如損壞、重複、衝突標籤)、品質離群值、統計異常以及語意難度。輸出包括一個完整的摘要JSON、樣本CSV、HTML報告、難度與異常圖像樣本,以及一個按類別和難度分層的訓練/驗證/測試清單,這些輸出均基於可配置的YAML設定檔。此技能設計用於在訓練前稽核資料集、準備分層切分,並取得可重複且可供人工審查的資料集健康度與難度報告。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/swaggylei/dataset-difficulty-skill/tree/HEAD

Installed? Explore more 研究與資料分析 skills: affaan-m/uspto-database, affaan-m/scholar-evaluation, affaan-m/literature-review · View all 6 →

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

資料集難度分析技能 是做什麼的?

為影像分類資料集產生一個可重現、與模型無關的難度先驗。 在可用時使用 CLIP 嵌入,但保持每個原始指標和元件的可見性。 切勿將最終分數呈現為預測準確度或作為下游驗證的替代品。

使用時機

當使用者想要以下操作時,請使用此技能:

  • 在訓練前稽核影像分類資料集;
  • 找出損壞、重複、未標記、衝突標籤或統計離群值;
  • 比較相對的簡單/中等/困難難度;
  • 建立按類別和難度分層的訓練/驗證/測試清單;
  • 取得機器可讀與人工可審查的報告。

請勿將其用於物體檢測、分割、影片分析或微調分類器。

先檢查輸入

  1. 確認資料集目錄存在。
  2. 確定格式:按類別的資料夾、CSV 或 JSON。
  3. 對於 CSV/JSON,確認標籤檔案以及相關的路徑/標籤欄位。
  4. 如果需要洩漏防護分組,請確認可選的 group_id 欄位名稱。
  5. 選擇一個位於資料集目錄樹之外的輸出目錄。
  6. 切勿修改或刪除原始影像或標籤。
  7. 除非使用者明確授權,否則不要下載 CLIP 權重。

支援的資料夾結構:

dataset/
  cat/
    image-1.jpg
  dog/
    image-2.png

CSV 和 JSON 範例及欄位覆寫請參考 references/configuration.md。

執行分析

原始碼樹可直接執行:

python scripts/analyze_dataset.py DATA_ROOT \
  --output OUTPUT_DIR \
  --config configs/default.yaml

使用標籤檔案:

python scripts/analyze_dataset.py DATA_ROOT \
  --labels labels.csv \
  --format csv \
  --output OUTPUT_DIR

使用洩漏防護分組:

python scripts/analyze_dataset.py DATA_ROOT \
  --labels labels.csv \
  --format csv \
  --group-column group_id \
  --output OUTPUT_DIR

離線分析(不使用 CLIP):

python scripts/analyze_dataset.py DATA_ROOT \
  --output OUTPUT_DIR \
  --no-semantic

CLIP 預設為僅本機使用。如果使用者明確授權模型下載和網路使用:

python scripts/analyze_dataset.py DATA_ROOT \
  --output OUTPUT_DIR \
  --semantic-backend clip \
  --allow-model-download

執行 python scripts/analyze_dataset.py --help 以查看所有覆寫選項。

依此順序解讀

  1. 首先讀取 summary.json。
  2. 將 corrupt_image、empty_label 和 conflicting_label 視為資料完整性發現。
  3. 檢查重複組與近似重複。
  4. 分別檢視品質離群值與難度。
  5. 比較視覺可及性、描述性視覺複雜度、原始語意元件、權重和貢獻值。
  6. 僅對非異常的已評分樣本解讀簡單/中等/困難。
  7. 在使用清單前,檢查切分診斷與警告。

報告驅動結果的元件。例如:「困難因為該樣本遠離其類別中心且在增強下不穩定;其影像品質本身正常。」請勿說「模型將會失敗」或「此樣本準確度低。」

如果語意欄位為空,請說明 CLIP 不可用或已停用。請勿推斷或憑空創造嵌入。請勿將品質不佳視為語意難度。請勿將異常標籤合併到簡單/中等/困難中。

純統計異常與低品質但可讀的影像預設為軟性:保留其異常標誌,但將其保留在評分和切分中,並標記為 Statistically_Unusual 或 Quality_Flagged。只有嚴重的完整性異常(如損壞、衝突標籤、重複或尺寸不足的資料)預設會被排除。請勿將每個統計或品質離群值描述為無效資料。

對於真實的驗證聲明,請檢查 summary.json["provenance"]、summary.json["dataset"] 和 summary.json["semantic_runtime"]。在聲明可重現性之前,請檢查記錄的 Git 提交、髒狀態、命令、設定檔路徑、模型來源、批次、快取計數、失敗情況和設備。

標籤稀有度是一個獨立的資料集統計量,權重和貢獻度皆為零。影像熵和頻率複雜度是描述性視覺複雜度,並非樣本更難的證據。當 difficulty_scope=visual_only 時,明確警告先驗缺乏 CLIP 語意證據。

閱讀 summary.json["semantic_runtime"] 和 summary.json["performance"] 以取得實際設備、批次大小、快取命中/未命中、失敗、階段時間和 CUDA 峰值記憶體。除非這些欄位來自真實執行,否則請勿報告。

閱讀:

驗證

使用具備必要相依性的專案環境:

python -c "import cv2, numpy, pandas, sklearn, matplotlib, yaml, torch, transformers"
python -m pytest -v

對於真實執行,請確認 samples.csv、summary.json、report.html、hard_samples.png、anomaly_samples.png、split_manifest.csv 和 split_summary.json 存在。驗證 summary.json 不包含 NaN 或 Infinity 標記。

安全性與範圍

  • 所有分析寫入操作僅會進入明確指定的輸出和快取目錄。
  • 輸出和快取路徑必須位於輸入資料集目錄樹之外。
  • 特徵快取條目以影像內容雜湊和模型簽章為鍵。
  • 缺失的指標保留為空;可用的元件會重新加權並報告覆蓋率。
  • 最終分數是相對先驗,而非校準後的機率。
  • 對於極小的分層,類別平衡和難度分層是近似值;請報告切分警告。

相關技能