In lib/ finden Sie verschiedene Arten von nicht-lokalem Block.
Sie können die Non_local -Aufmerksamkeitskarte visualisieren , indem Sie die unten gezeigten Laufschritte folgen.
Der Code wird auf dem MNIST -Datensatz getestet. Sie können den Typ des nicht-lokalen Blocks in lib/network.py auswählen.
Wenn in meinem Code etwas nicht stimmt, kontaktieren Sie mich bitte, danke!










Wählen Sie den Typ des nicht-lokalen Blocks in lib/network.py aus.
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
Führen Sie Demo_Mnist_Train.py mit einer GPU oder einem Multi -GPU aus, um das Netzwerk zu trainieren. Dann werden die Gewichte in Gewichten/ .
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
Führen Sie nl_map_save.py aus, um nl_map eines Testbeispiels in nl_map_vis zu speichern.
CUDA_VISIBLE_DEVICES=0,1 python nl_map_save.py
Kommen Sie in nl_map_vis/ und führen Sie nl_map_vis.py aus, um die NL_MAP zu visualisieren. (Tipps: Wenn der von Ihnen ausgewählte nicht-lokale Typ non_local_oncatenation oder non_local_dot_product (ohne Softmax-Operation) ist, müssen Sie möglicherweise NL_MAP im Code visualisieren) normalisieren)
python nl_map_save.py
Finden Sie heraus, wie Sie den Verkettungstyp implementieren, und fügen Sie den Code zu lib/ hinzu.
Beheben Sie den Fehler in lib/non_local.py (alte Version), wenn Sie Multi-GPU verwenden. Jemand teilt den Grund mit mir, und Sie können ihn hier finden.
Beheben Sie den Fehler des 3D -Poolings in lib/non_local.py (alte Version). Schätzen Sie Protein27 für den Hinweis.
Zur Bequemlichkeit habe ich die lib/non_local.py in vier Python -Dateien aufgeteilt und die alten Versionen ( lib/non_loca.py und lib/non_local_simple_version.py ) in lib/backup/ verschoben.
Ändern Sie den Code, um PyTorch 0.4.1 zu unterstützen, und verschieben Sie den Code, der Pytorch 0.3.1 unterstützt
zu nicht local_pytorch_0.3.1/ .
Testen Sie den Code mit Pytorch 1.1.0 und er funktioniert.
Bewegen Sie den Code, der Pytorch 0.4.1 und 1.1.0 unterstützt, auf non-local_pytorch_0.4.1_to_1.1.0/ (tatsächlich denke ich, dass er auch Pytorch 1.2.0 unterstützen kann).
Um NL_MAP zu visualisieren, wurde ein Code leicht geändert. Der Code nl_map_save.py wird hinzugefügt, um NL_MAP (zwei nicht lokale Schicht) eines Testbeispiels zu speichern. Der Code non-local_pytorch/nl_map_vis.py wird hinzugefügt, um nl_map zu visualisieren. Beachten, der Code ist Support Pytorch 1.2.0.
Der Code funktioniert auch gut in Pytorch 1.4.0 .
Der Code funktioniert auch gut in Pytorch 1.6.0 . Fügen Sie Demo_Mnist_AMP_TRAIN_WITH_SINGLE_GPU.PY mit automatisch gemischtem Präzisionstraining (FP16) hinzu, unterstützt von Pytorch 1.6.0 . Es kann das GPU -Speicher während des Trainings reduzieren. Wenn Sie GPU 2080TI (Tensor Cores) verwenden, kann die Trainingsgeschwindigkeit erhöht werden. Weitere Details (z. B. wie man mit mehreren GPUs trainiert) finden Sie hier
Stellen Sie sicher, dass der Code in Pytorch 1.7.0 gut funktioniert.
Stellen Sie sicher, dass der Code in Pytorch 1.8.1 gut funktioniert.
Stellen Sie sicher, dass der Code in Pytorch 1.9.0 gut funktioniert.
Stellen Sie sicher, dass der Code in Pytorch 1.10.1 gut funktioniert.
Stellen Sie sicher, dass der Code in Pytorch 1.11.0 gut funktioniert.
Stellen Sie sicher, dass der Code in Pytorch 1.12.0 gut funktioniert.
Entfernen Sie redundant den Code net.train() in Trainingscode -Dateien.
Stellen Sie sicher, dass der Code in Pytorch 1.13.0 und 2.0.0 gut funktioniert.