Você pode encontrar diferentes tipos de bloco não local em lib/ .
Você pode visualizar o mapa de atenção não -local seguindo as etapas de execução mostradas abaixo.
O código é testado no conjunto de dados MNIST. Você pode selecionar o tipo de bloco não local em lib/network.py .
Se houver algo errado no meu código, entre em contato comigo, obrigado!










Selecione o tipo de bloco não local em lib/rede.py .
from lib.non_local_concatenation import NONLocalBlock2D
from lib.non_local_gaussian import NONLocalBlock2D
from lib.non_local_embedded_gaussian import NONLocalBlock2D
from lib.non_local_dot_product import NONLocalBlock2D
Run Demo_Mnist_Train.py com uma GPU ou Multi GPU para treinar a rede. Em seguida, os pesos serão salvos em pesos/ .
CUDA_VISIBLE_DEVICES=0,1 python demo_MNIST_train.py
# Or train with Automatic Mixed Precision based on pytorch 1.6.0
CUDA_VISIBLE_DEVICES=0 python demo_MNIST_AMP_train_with_single_gpu.py
Execute nl_map_save.py para salvar nl_map de uma amostra de teste em nl_map_vis .
CUDA_VISIBLE_DEVICES=0,1 python nl_map_save.py
Entre em nl_map_vis/ e execute nl_map_vis.py para visualizar o nl_map. (Dicas: se o tipo não local que você selecionar não for_local_concatenation ou não_local_dot_product (sem operação Softmax), pode ser necessário normalizar NL_MAP no código Visualize)
python nl_map_save.py
Descubra como implementar o tipo de concatenação e adicione o código à lib/ .
Corrija o bug em lib/não_local.py (versão antiga) ao usar o Multi-GPU. Alguém compartilha o motivo comigo e você pode encontrá -lo aqui.
Corrija o erro do pool 3D em lib/não_local.py (versão antiga). Aprecie a Protein27 por apontá -lo.
Por conveniência, divido o lib/não_local.py em quatro arquivos Python e movo as versões antigas ( lib/não_loca.py e lib/non_local_simple_version.py ) em lib/backup/ .
Modifique o código para suportar Pytorch 0.4.1 e mova o código que suporta Pytorch 0.3.1
para não-local_pytorch_0.3.1/ .
Teste o código com Pytorch 1.1.0 e ele funciona.
Mova o código que suporta Pytorch 0.4.1 e 1.1.0 para não-local_pytorch_0.4.1_to_1.1.0/ (na verdade, acho que também pode suportar o Pytorch 1.2.0).
Para visualizar o NL_MAP, algum código foi ligeiramente modificado. O código nl_map_save.py é adicionado para salvar NL_MAP (duas camadas não locais) de uma amostra de teste. O código não-local_pytorch/nl_map_vis.py é adicionado para visualizar nl_map. BEDIEDS, o código é Suporte Pytorch 1.2.0.
O código também funciona bem no Pytorch 1.4.0 .
O código também funciona bem no Pytorch 1.6.0 . Adicione Demo_MNIST_AMP_TRAIN_WITH_SINGLE_GPU.PY com treinamento automático de precisão mista (FP16), suportada por Pytorch 1.6.0 . Pode reduzir a memória da GPU durante o treinamento. Além disso, se você usar a GPU 2080TI (núcleos tensoros), a velocidade de treinamento pode ser aumentada. Mais detalhes (como treinar com várias GPUs) podem ser encontrados aqui
Verifique se o código funciona bem no Pytorch 1.7.0 .
Verifique se o código funciona bem no Pytorch 1.8.1 .
Verifique se o código funciona bem no Pytorch 1.9.0 .
Verifique se o código funciona bem no Pytorch 1.10.1 .
Verifique se o código funciona bem no Pytorch 1.11.0 .
Verifique se o código funciona bem no Pytorch 1.12.0 .
Remova redundante o código net.train() nos arquivos de código de treinamento.
Verifique se o código funciona bem no Pytorch 1.13.0 e 2.0.0 .