In English: A measurement protocol for demographic bias in computer vision — frozen evaluation pools, paired within-image designs, mandatory confidence intervals, and acceptance criteria registered before the experiment runs. The protocol is written in Brazilian Portuguese; a full English summary is at the bottom of this page, and the citation metadata in
CITATION.cffis in English.
Como medir viés em sistemas de visão computacional sem se enganar.
Não é biblioteca. É o método — o que fica de pé quando o modelo é trocado. Usado por anatomia e por rostos, publicado separado porque não pertence a nenhum dos dois.
- Congelamento de pools.
devcalibra,testereporta uma vez só,contrastemede diferencial entre grupos,guardaveta release. Limiar calibrado emdevnunca é reajustado depois de olharteste. Se for,testeestá queimado e viradev. - Por que
contrasteé separado. Um acervo de uma família só não tem grupo de contraste. Diferencial demográfico é, por definição, comparação entre grupos — não se mede onde só existe um. - Amplificação pareada. Com n pequeno, desenho pareado dentro da mesma imagem tira poder dos pares discordantes, não do n total. McNemar pareado; bootstrap pareado para o intervalo. Nunca teste não pareado sobre variantes da mesma imagem.
- Intervalos obrigatórios. Wilson para proporções. Regra de três para zero eventos.
- Critério de aceitação pré-registrado. Escrito antes de rodar. Definir "bom o bastante" depois de ver o resultado é como se escolhe o número que confirma o que se queria.
O documento deste repositório é protocolo_rostos.md, e ele cobre o eixo facial: detecção e reconhecimento, seus estratos e suas métricas.
Dois métodos que pertencem ao mesmo corpo de protocolo ainda estão escritos em outro lugar — em anatomia/EXPERIMENTO.md, onde foram usados primeiro:
- amostragem estratificada com probabilidade de inclusão conhecida e reponderação de Horvitz-Thompson;
- concordância consigo mesma — 10% rerrotulado em outro dia, às cegas. Se ela for 0,85, nenhuma diferença de 3 pontos entre abordagens significa coisa alguma, e é bom saber disso antes de escrever a conclusão.
Trazê-los para cá, generalizados para além do caso de conteúdo sensível, é o próximo trabalho deste repositório.
Quase todo relatório de viés publica um número sem intervalo, calibrado e reportado no mesmo conjunto. Este protocolo existe para não fazer isso.
O protocolo está em português porque é conhecimento situado: um acervo brasileiro, fotos escaneadas de décadas, tons de pele que os conjuntos de treino ignoram, e alguém de dentro desse contexto medindo a falha. Quem quiser medir viés com rigor hoje não encontra material denso na própria língua — está tudo em inglês, atrás de paper.
O resumo abaixo dá o alcance internacional sem que o corpo perca a voz. É como circula a literatura produzida fora do eixo anglófono.
Traduções são bem-vindas por pull request. Tradução tem que ter dono e mantenedor, e é isso que falta quando se traduz sozinha.
CC BY 4.0. Cite conforme o CITATION.cff — o botão Cite this repository no alto desta página gera APA e BibTeX prontos.
A measurement protocol for detection and recognition systems in computer vision, designed to estimate demographic differential rather than headline accuracy.
Four pools with distinct, non-interchangeable roles: dev calibrates, teste reports exactly once, contraste measures between-group differential, and guarda gates releases. A threshold calibrated on dev is never readjusted after teste has been observed — if it is, teste is burned and becomes dev.
contraste is separate for a reason that is easy to miss: a single-family archive has no contrast group at all. Demographic differential is by definition a comparison between groups, and cannot be measured where only one exists. The archive provides ecological validity — scanned paper, infants, decades; the public set provides the contrast. They never collapse into one number.
Age, face scale, pose, capture medium, decade, facial luminance, and skin tone on the Monk scale — not Fitzpatrick, which was built for sunburn risk in light skin and compresses precisely the range that matters here.
Stratifying by face scale is mandatory, not optional. Infant photographs are systematically close-ups; without controlling for scale, "the model fails on infants" and "the model fails on close-ups" are indistinguishable — and the wrong conclusion leads to retraining when changing the input resolution would have sufficed.
Small cohorts are made tractable by a within-image paired design: each annotated image generates controlled variants across scale, gamma, JPEG quality and preprocessing. Statistical power comes from discordant pairs, not from total sample size. Significance by paired McNemar; paired bootstrap for the interval. Never an unpaired test over variants of the same image — the observations are not independent.
Detection is reported as recall per stratum and as a protective failure rate — images containing a person where no face was detected, which is the number that predicts family photographs reaching a deletion queue.
Recognition is never reported as accuracy. It is reported as false match rate at fixed false non-match rate per stratum, as the threshold each group requires to reach a common target — the distance between two groups' thresholds is the bias, in the unit the system already adjusts — and as a differential ratio in the form used by NIST FRVT, not a difference of means. Abstention gets its own column, since folding it into either correct or incorrect inflates both.
No rate is published without one. Wilson intervals for proportions; the rule of three for zero-event outcomes, so 0 failures in 119 is reported as up to 2.5%, never as zero; paired bootstrap for between-stratum differences.
What counts as "good enough" is written before the experiment runs. Defining it afterwards is how one selects the number that confirms what one wanted.
The protocol documents cohort normalisation — scoring similarity as a z-score against a frozen cohort of unrelated faces — as a bias mitigation requiring no training at all, and it treats training as the last step, taken only if a differential survives everything before it.
Method, protocol and numbers are published. Weights trained on faces are not — face data is identifiable by definition, so no training corpus of faces passes the project's data policy. That is a coherence constraint, not a cost one.