CommunityPesquisa e Análise de Dadosgithub.com

swaggylei/dataset-difficulty-skill

Analise conjuntos de dados de classificação de imagens antes do treinamento para problemas de qualidade visual, outliers semânticos, confusão entre classes, instabilidade de aumento de dados, amostras corrompidas ou duplicatas, faixas de dificuldade relativa e divisões estratificadas. Use para auditorias de conjuntos de dados e verificações de prontidão para treinamento; não use para detecção, segmentação, vídeo ou alegações sobre precisão downstream.

O que é dataset-difficulty-skill?

Este skill fornece uma prioridade de dificuldade reprodutível e independente de modelo para conjuntos de dados de classificação de imagens. Ele usa embeddings CLIP quando disponíveis, mas mantém cada métrica bruta e componente visível, nunca apresentando a pontuação final como precisão prevista ou substituto para validação downstream. O skill é útil para auditar conjuntos de dados antes do treinamento, encontrar amostras corrompidas, duplicadas, sem rótulo, com rótulo conflitante ou outliers estatísticos, comparar dificuldade relativa (Fácil/Médio/Difícil), criar manifestos de Treino/Validação/Teste estratificados por classe e dificuldade, e obter relatórios legíveis por máquina e revisáveis por humanos. Funciona com formatos de diretório por pasta-por-classe, CSV ou JSON, e requer a confirmação da existência do diretório do conjunto de dados, determinação do formato e seleção de um diretório de saída fora da árvore de dados. A análise é executada através de scripts Python e os resultados devem ser interpretados em uma ordem específica, começando pelo summary.json e tratando anomalias de integridade como corrupção, rótulos conflitantes e duplicatas antes de revisar outliers de qualidade e dificuldade. O skill não deve ser usado para detecção de objetos, segmentação, análise de vídeo ou ajuste fino de classificadores, e enfatiza que a pontuação final é uma prioridade relativa, não uma probabilidade calibrada.

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

Installed? Explore more Pesquisa e Análise de Dados skills: affaan-m/uspto-database, affaan-m/scholar-evaluation, affaan-m/literature-review · View all 6 →

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Skill de Dificuldade de Conjunto de Dados

Produza uma prioridade de dificuldade reprodutível e independente de modelo para um conjunto de dados de classificação de imagens. Use embeddings CLIP quando disponíveis, mas mantenha cada métrica bruta e componente visível. Nunca apresente a pontuação final como uma precisão prevista ou como substituto para validação downstream.

Quando Usar

Use este Skill quando o usuário quiser:

  • auditar um conjunto de dados de classificação de imagens antes do treinamento;
  • encontrar amostras corrompidas, duplicadas, sem rótulo, com rótulo conflitante ou outliers estatísticos;
  • comparar dificuldade relativa Fácil/Médio/Difícil;
  • criar manifestos de Treino/Val/Treino estratificados por classe e dificuldade;
  • obter relatórios legíveis por máquina e revisáveis por humanos.

Não use para detecção de objetos, segmentação, análise de vídeo ou ajuste fino de um classificador.

Verifique as Entradas Primeiro

  1. Confirme que o diretório do conjunto de dados existe.
  2. Determine o formato: pasta-por-classe, CSV ou JSON.
  3. Para CSV/JSON, confirme o arquivo de rótulos e as colunas relevantes de caminho/rótulo.
  4. Se for necessário agrupamento seguro contra vazamento, confirme o nome da coluna opcional group_id.
  5. Selecione um diretório de saída fora da árvore de dados.
  6. Nunca modifique ou exclua imagens ou rótulos originais.
  7. Não baixe pesos CLIP a menos que o usuário autorize explicitamente.

Layout de pasta suportado:

dataset/
  gato/
    imagem-1.jpg
  cachorro/
    imagem-2.png

Exemplos de CSV e JSON e substituições de colunas estão em referencias/configuracao.md.

Execute a Análise

A árvore de origem é diretamente executável:

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

Com um arquivo de rótulos:

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

Com grupos seguros contra vazamento:

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

Análise offline sem CLIP:

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

CLIP é apenas local por padrão. Se o usuário autorizar explicitamente o download do modelo e o uso de rede:

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

Execute python scripts/analyze_dataset.py --help para todas as substituições.

Interprete Nesta Ordem

  1. Leia summary.json primeiro.
  2. Trate corrupt_image, empty_label e conflicting_label como achados de integridade de dados.
  3. Revise grupos duplicados e quase duplicados.
  4. Revise outliers de qualidade separadamente da dificuldade.
  5. Compare acessibilidade visual, complexidade visual descritiva, componentes semânticos brutos, pesos e valores de contribuição.
  6. Interprete Fácil/Médio/Difícil apenas entre amostras pontuadas não anômalas.
  7. Verifique diagnósticos e avisos de divisão antes de usar o manifesto.

Relate os componentes que geram um resultado. Por exemplo: "Difícil porque a amostra está longe do seu centróide de classe e instável sob aumento de dados; sua qualidade de imagem em si é normal." Não diga "o modelo falhará" ou "esta amostra tem baixa precisão."

Se os campos semânticos forem nulos, informe que o CLIP estava indisponível ou desabilitado. Não infira ou invente embeddings. Não trate baixa qualidade como dificuldade semântica. Não mescle rótulos de anomalia em Fácil/Médio/Difícil.

Anomalias apenas estatísticas e imagens de baixa qualidade, mas legíveis, são suaves por padrão: preserve sua flag de anomalia, mas as mantenha na pontuação e divisão como Estatisticamente_Incomum ou Sinalizado_por_Qualidade. Apenas anomalias de integridade fortes, como dados corrompidos, com rótulo conflitante, duplicados ou subdimensionados, permanecem excluídos por padrão. Não descreva todo outlier estatístico ou de qualidade como dados inválidos.

Para reivindicações de validação reais, inspecione summary.json["provenance"], summary.json["dataset"] e summary.json["semantic_runtime"]. Verifique o commit Git registrado, estado sujo, comando, caminho de configuração, fonte do modelo, lote, contagens de cache, falhas e dispositivo antes de reivindicar reprodutibilidade.

Raridade de rótulo é uma estatística independente do conjunto de dados com peso zero e contribuição zero. Entropia de imagem e complexidade de frequência são complexidade visual descritiva, não evidência de que uma amostra é mais difícil. Quando difficulty_scope=visual_only, avise explicitamente que a prioridade carece de evidência semântica CLIP.

Leia summary.json["semantic_runtime"] e summary.json["performance"] para obter dispositivo real, tamanho do lote, acertos/falhas de cache, falhas, tempos de estágio e memória máxima CUDA. Não relate esses campos, a menos que venham de uma execução real.

Leia:

Verifique

Use o ambiente do projeto que possui as dependências necessárias:

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

Para uma execução real, confirme que samples.csv, summary.json, report.html, hard_samples.png, anomaly_samples.png, split_manifest.csv e split_summary.json existem. Verifique se summary.json não contém tokens NaN ou Infinity.

Segurança e Escopo

  • Todas as escritas da análise vão para os diretórios explícitos de saída e cache.
  • Os caminhos de saída e cache devem estar fora da árvore do conjunto de dados de entrada.
  • As entradas de cache de características são indexadas pelo hash de conteúdo da imagem e pela assinatura do modelo.
  • Métricas ausentes permanecem nulas; os componentes disponíveis são reponderados e a cobertura é relatada.
  • A pontuação final é uma prioridade relativa, não uma probabilidade calibrada.
  • O equilíbrio de classe e a estratificação por dificuldade são aproximados para estratos pequenos; relate avisos de divisão.

Habilidades Relacionadas