Puede encontrar diferentes tipos de bloqueo no local en lib/ .
Puede visualizar el mapa de atención no_local siguiendo los pasos de ejecución que se muestran a continuación.
El código se prueba en el conjunto de datos MNIST. Puede seleccionar el tipo de bloque no local en lib/network.py .
Si hay algo mal en mi código, por favor contácteme, ¡gracias!










Seleccione el tipo de bloque no local en lib/network.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
Ejecute demo_mnist_train.py con una GPU o GPU multi para entrenar la red. Entonces los pesos se ahorrarán en pesas/ .
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
Ejecute nl_map_save.py para guardar NL_MAP de una muestra de prueba en NL_MAP_VIS .
CUDA_VISIBLE_DEVICES=0,1 python nl_map_save.py
Entra en NL_MAP_VIS/ y ejecute nl_map_vis.py para visualizar el NL_MAP. (Consejos: si el tipo no local que selecciona es non_local_concatenation o non_local_dot_product (sin operación Softmax), es posible que deba normalizar NL_MAP en el código de visualización)
python nl_map_save.py
Averigüe cómo implementar el tipo de concatenación y agregue el código a lib/ .
Corrige el error en lib/non_local.py (versión anterior) cuando use multi-GPU. Alguien comparte la razón conmigo, y puedes encontrarla aquí.
Corrige el error de la agrupación 3D en lib/non_local.py (versión anterior). Aprecie la proteína27 por señalarlo.
Por conveniencia, dividí el lib/non_local.py en cuatro archivos Python, y muevo las versiones antiguas ( lib/non_loca.py y lib/non_local_simple_version.py ) a lib/backup/ .
Modifique el código para admitir Pytorch 0.4.1 y mueva el código que admite Pytorch 0.3.1
a Non-Local_Pytorch_0.3.1/ .
Pruebe el código con Pytorch 1.1.0 y funciona.
Mueva el código que admite Pytorch 0.4.1 y 1.1.0 a Non-Local_pytorch_0.4.1_to_1.1.0/ (de hecho, creo que también puede admitir Pytorch 1.2.0).
Para visualizar NL_MAP, algún código se ha modificado ligeramente. Se agrega el código NL_MAP_SAVE.py para guardar NL_MAP (dos capa no local) de una muestra de prueba. Se agrega el código Non-Local_Pytorch/NL_MAP_VIS.py para visualizar NL_MAP. Besieds, el código es soporte Pytorch 1.2.0.
El código también funciona bien en Pytorch 1.4.0 .
El código también funciona bien en Pytorch 1.6.0 . Agregue demo_mnist_amp_train_with_single_gpu.py con entrenamiento automático de precisión mixta (FP16), compatible con Pytorch 1.6.0 . Puede reducir la memoria de GPU durante el entrenamiento. Además, si usa GPU 2080TI (núcleos de tensor), se puede aumentar la velocidad de entrenamiento. Aquí se pueden encontrar más detalles (como cómo entrenar con múltiples GPU)
Verifique que el código funcione bien en Pytorch 1.7.0 .
Verifique que el código funcione bien en Pytorch 1.8.1 .
Verifique que el código funcione bien en Pytorch 1.9.0 .
Verifique que el código funcione bien en Pytorch 1.10.1 .
Verifique que el código funcione bien en Pytorch 1.11.0 .
Verifique que el código funcione bien en Pytorch 1.12.0 .
Elimine redundante el código net.train() en los archivos de código de entrenamiento.
Verifique que el código funcione bien en Pytorch 1.13.0 y 2.0.0 .