Esta é a implementação PyTorch do nosso artigo "Pyramidal Convolution: Rethinking Convolutional Neural Networks for Visual Recognition". (Observe que este é o código para reconhecimento de imagem no ImageNet. Para segmentação/análise semântica de imagens, consulte este repositório: https://github.com/iduta/pyconvsegnet)
Os modelos treinados no ImageNet podem ser encontrados aqui.
PyConv é capaz de fornecer recursos de reconhecimento aprimorados em relação à linha de base (consulte o artigo para obter detalhes).
A precisão no ImageNet (usando as configurações de treinamento padrão):
Rede | 50 camadas | 101 camadas | 152 camadas |
---|---|---|---|
ResNet | 76,12% (modelo) | 78,00% (modelo) | 78,45% (modelo) |
PyConvHGResNet | 78,48 % (modelo) | 79,22 % (modelo) | 79,36 % (modelo) |
PyConvResNet | 77,88 % (modelo) | 79,01 % (modelo) | 79,52 % (modelo) |
A precisão no ImageNet pode ser significativamente melhorada usando configurações de treinamento mais complexas (por exemplo, usando aumento de dados adicional (CutMix), aumentar o tamanho do bach para 1024, taxa de aprendizagem de 0,4, agendador de cosseno acima de 300 épocas e usar precisão mista para acelerar o treinamento ):
Rede | corte de teste: 224×224 | colheita de teste: 320×320 | |
---|---|---|---|
PyConvResNet-50 (+aumento) | 79,44 | 80,59 | (modelo) |
PyConvResNet-101 (+aumento) | 80,58 | 81,49 | (modelo) |
Instale o conjunto de dados PyTorch e ImageNet seguindo o código de treinamento oficial do PyTorch ImageNet.
Uma alternativa rápida (sem a necessidade de instalar PyTorch e outras bibliotecas de aprendizado profundo) é usar NVIDIA-Docker, usamos esta imagem de contêiner.
Para treinar um modelo (por exemplo, PyConvResNet com 50 camadas) usando DataParallel execute main.py
; você também precisa fornecer result_path
(o caminho do diretório onde salvar os resultados e logs) e --data
(o caminho para o conjunto de dados ImageNet):
result_path=/your/path/to/save/results/and/logs/
mkdir -p ${result_path}
python main.py
--data /your/path/to/ImageNet/dataset/
--result_path ${result_path}
--arch pyconvresnet
--model_depth 50
Para treinar usando treinamento paralelo de dados distribuídos de multiprocessamento, siga as instruções no código de treinamento oficial do PyTorch ImageNet.
Se você achar nosso trabalho útil, considere citar:
@article{duta2020pyramidal,
author = {Ionut Cosmin Duta and Li Liu and Fan Zhu and Ling Shao},
title = {Pyramidal Convolution: Rethinking Convolutional Neural Networks for Visual Recognition},
journal = {arXiv preprint arXiv:2006.11538},
year = {2020},
}