Dataset Difficulty Skill
画像分類データセットに対して、再現可能でモデルに依存しない難易度事前確率を生成します。可能な場合はCLIP埋め込みを使用しますが、すべての生メトリクスとコンポーネントを可視化したままにします。最終スコアを予測精度や下流の検証の代替として提示しないでください。
使用するタイミング
このスキルは、ユーザーが以下を希望する場合に使用します:
- トレーニング前に画像分類データセットを監査する
- 破損、重複、ラベルなし、ラベル矛盾、または統計的異常値を見つける
- Easy/Medium/Hardの相対的な難易度を比較する
- クラスと難易度で層化されたTrain/Val/Testマニフェストを作成する
- 機械可読かつ人間がレビュー可能なレポートを取得する
物体検出、セグメンテーション、ビデオ分析、または分類器のファインチューニングには使用しないでください。
最初に入力を確認
- データセットディレクトリが存在することを確認します。
- フォーマットを特定します:フォルダ単位、CSV、またはJSON。
- CSV/JSONの場合は、ラベルファイルと関連するパス/ラベル列を確認します。
- リークセーフなグループ化が必要な場合は、オプションの
group_id列名を確認します。 - データセットツリーの外側に出力ディレクトリを選択します。
- 元の画像やラベルを変更または削除しないでください。
- ユーザーが明示的に許可しない限り、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を実行してください。
この順序で解釈
- 最初に
summary.jsonを読んでください。 corrupt_image、empty_label、conflicting_labelをデータ整合性の問題として扱います。- 重複グループと近似重複を確認します。
- 品質の異常値は難易度とは別にレビューします。
- 視覚的アクセシビリティ、記述的視覚的複雑性、生の意味コンポーネント、重み、寄与値を比較します。
- Easy/Medium/Hardは、異常ではないスコア付けされたサンプルのみで解釈します。
- マニフェストを使用する前に、分割の診断と警告を確認します。
結果を導くコンポーネントを報告してください。例:「サンプルがクラスの重心から遠く、拡張に対して不安定であるため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ピークメモリを確認してください。これらのフィールドは実際の実行からのものでない限り報告しないでください。
以下を参照してください:
- references/metrics.md:数式と制限について
- references/configuration.md:すべての設定セクション、入力スキーマ、CLI上書きについて
- references/outputs.md:アーティファクトと列の契約について
検証
必要な依存関係を持つプロジェクト環境を使用します:
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のままになり、利用可能なコンポーネントが再重み付けされ、カバレッジが報告されます。
- 最終スコアは相対的な事前確率であり、較正された確率ではありません。
- クラスのバランスと難易度の層化は、小さな層では近似値です;分割の警告を報告します。