Community研究&データ分析github.com

swaggylei/dataset-difficulty-skill

画像分類データセットのトレーニング前に、視覚品質の問題、意味的異常値、クラスの混同、拡張の不安定性、破損や重複サンプル、相対的な難易度帯、層化分割などを分析します。データセット監査やトレーニング準備チェックに使用します。検出、セグメンテーション、ビデオ、下流の精度主張には使用しないでください。

dataset-difficulty-skill とは?

このスキルは、画像分類データセットのトレーニング前に、モデルに依存しない再現可能な難易度事前確率を生成するために設計されています。CLIP埋め込みを活用しつつ、すべての生のメトリクスとコンポーネントを可視化し、スコアを予測精度や下流の検証の代替として提示しないことを重視します。ユーザーは、破損画像や重複サンプル、ラベル矛盾、統計的異常値などのデータ整合性の問題を発見し、Easy/Medium/Hardの相対的な難易度を比較し、クラスと難易度で層化されたTrain/Val/Test分割マニフェストを作成できます。分析結果は、summary.json、samples.csv、report.htmlなどの機械可読かつ人間がレビュー可能なレポートとして出力され、CLIPが利用できない場合でも統計ベースの分析を実行できます。このスキルは主にCLIツールとして提供され、フォルダ単位、CSV、JSONなどの一般的なデータセット形式をサポートし、元のデータを変更したり削除したりすることなく動作するため、安全な監査が可能です。

対応~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に質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

Dataset Difficulty Skill

画像分類データセットに対して、再現可能でモデルに依存しない難易度事前確率を生成します。可能な場合はCLIP埋め込みを使用しますが、すべての生メトリクスとコンポーネントを可視化したままにします。最終スコアを予測精度や下流の検証の代替として提示しないでください。

使用するタイミング

このスキルは、ユーザーが以下を希望する場合に使用します:

  • トレーニング前に画像分類データセットを監査する
  • 破損、重複、ラベルなし、ラベル矛盾、または統計的異常値を見つける
  • Easy/Medium/Hardの相対的な難易度を比較する
  • クラスと難易度で層化されたTrain/Val/Testマニフェストを作成する
  • 機械可読かつ人間がレビュー可能なレポートを取得する

物体検出、セグメンテーション、ビデオ分析、または分類器のファインチューニングには使用しないでください。

最初に入力を確認

  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. Easy/Medium/Hardは、異常ではないスコア付けされたサンプルのみで解釈します。
  7. マニフェストを使用する前に、分割の診断と警告を確認します。

結果を導くコンポーネントを報告してください。例:「サンプルがクラスの重心から遠く、拡張に対して不安定であるためHard;画像品質自体は正常です。」「モデルは失敗する」や「このサンプルの精度は低い」とは言わないでください。

意味フィールドがnullの場合は、CLIPが利用不可または無効であったことを明記してください。埋め込みを推測したり発明したりしないでください。低品質を意味的難易度として扱わないでください。異常ラベルをEasy/Medium/Hardにマージしないでください。

統計のみの異常値や低品質だが読み取り可能な画像はデフォルトでソフトです:異常フラグは保持しますが、スコアリングと分割では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トークンが含まれていないことを確認してください。

安全性と適用範囲

  • すべての分析書き込みは、明示的な出力ディレクトリとキャッシュディレクトリに送られます。
  • 出力とキャッシュのパスは、入力データセットツリーの外側になければなりません。
  • フィーチャキャッシュエントリは、画像コンテンツハッシュとモデル署名によってキー付けられます。
  • 欠落しているメトリクスはnullのままになり、利用可能なコンポーネントが再重み付けされ、カバレッジが報告されます。
  • 最終スコアは相対的な事前確率であり、較正された確率ではありません。
  • クラスのバランスと難易度の層化は、小さな層では近似値です;分割の警告を報告します。

関連スキル