Detecção de anomalias aluno-professor
Esta é uma implementação do artigo Alunos Desinformados: Detecção de Anomalias Aluno-Professor com Embeddings Latentes Discriminativos.
Como usar
- Execute o script mvtec_dataset.sh para fazer download e preparar o conjunto de dados MVTec no formato correto. Isso requer cerca de 5 GB de espaço em disco.
A pasta de dados deve estar disponível agora. Cada subpasta de dados possui o nome de uma categoria. Vamos construir um modelo para a categoria carpete como exemplo.
(Opcional) Execute o script resnet18_training.py para treinar ainda mais o resnet18 em seu conjunto de dados
cd src
python3 resnet18_training.py --dataset carpet
- Execute teacher_training.py para destilar o conhecimento do resnet18 em uma rede neural menor. Isso irá acelerar o processamento das imagens. Essa rede neural, chamada Professor, gera um vetor de descrição de 512 dimensões para cada patch de tamanho <patch_size> da imagem. Os valores patch_size suportados são:
- size = 17, eficaz se estivermos procurando anomalias de tamanho pequeno
- tamanho = 33, eficaz se procuramos anomalias de tamanho médio
- size = 65, eficaz se estivermos procurando anomalias de tamanho grande
cd src
python3 teacher_training.py --dataset carpet --patch_size 33
- Execute Students_training.py para treinar um conjunto de M=3 alunos na rede de professores. O treinamento dos alunos é feito em um conjunto de dados livre de anomalias. Esperamos que eles generalizem mal em imagens contendo anomalias
cd src
python students_training.py --dataset carpet --patch_size 33 --n_students 3
- Execute anomaly_detection.py para obter um mapa de anomalias para cada imagem do conjunto de testes. Um mapa de anomalias é calculado usando a variância das previsões dos Alunos e o erro entre as previsões dos Alunos e do Professor.
cd src
python anomaly_detection.py --dataset carpet --patch_size 33 --n_students 3
Resultados
E mais resultados estão disponíveis na pasta /result
Desempenho
Referências
Papel original
- https://arxiv.org/pdf/1911.02357v2.pdf
Artigo do conjunto de dados MVTec
- https://openaccess.thecvf.com/content_CVPR_2019/papers/Bergmann_MVTec_AD_--_A_Comprehensive_Real-World_Dataset_for_Unsupervised_Anomaly_CVPR_2019_paper.pdf
Extração rápida de recursos densos
- https://www.dfki.de/fileadmin/user_upload/import/9245_FastCNNFeature_BMVC.pdf
- https://github.com/erezposner/Fast_Dense_Feature_Extraction