基於PyTorch的實用Library
本文紀錄一些基於PyTorch的深度學習Library
pprp/SimpleCVReproduction
Reproduce simple cv project including attention module, classification, object detection, segmentation, keypoint detection, tracking etc.
pprp/awesome-attention-mechanism-in-cv
PyTorch Implementation of Attention Module and Plug&Play Module
facebookresearch/detectron2
支援Mask RCNN、Faster RCNN
jacobgil/pytorch-grad-cam
可以用來進行grad-cam視覺化的library,可參考這篇文章:如何在PyTorch上使用GradCAM進行神經網路分類依據視覺化?
xmu-xiaoma666/External-Attention-pytorch
這個library將深度學習中的各種Attention機制包成一個套件,使用上相當方便。例如Squeeze-and-Excitation Attention
from attention.SEAttention import SEAttention
import torch
input=torch.randn(50,512,7,7)
se = SEAttention(channel=512,reduction=8)
output=se(input)
print(output.shape)
thuml/Transfer-Learning-Library
這個framework將不同Domain Adaptation Task的演算法整合在一起,詳細可到Transfer-Learning-Library/examples/domain_adaptation裡面了解細節
facebookresearch/DomainBed
這個framework整合了很多個不同的Domain Generalization演算法,只要給定資料集的路徑、選擇的演算法,即可進行模型的訓練
python3 -m domainbed.scripts.train\
--data_dir=./domainbed/data/MNIST/\
--algorithm IGA\
--dataset ColoredMNIST\
--test_env 2
TorchSSL/TorchSSL
這個framework結合了多種Semi-supervised Learning的state-of-the-art演算法,使用上看起來相當易用。程式碼也包含了如何將dataset切成labeled和unlabeled的部份,可作為參考。
adobe/antialiased-cnns
這個套件為Blurpooling方法的實現,可以用來取代CNN網路中的Pool層,並且提升模型的準確度,詳情可參考作者在ImageNet上的實驗結果。
alexandrosstergiou/adaPool
應該是目前SOTA的Pooling方法,論文有比較計算量與參數量,能提升模型在ImageNet的TOP1 ACC高達2%
rentainhe/pytorch-pooling
整合了多個Pooling方法,有mixed pooling, Lp pooling, lip pooling, soft pooling
KevinMusgrave/pytorch-metric-learning
可能是目前Stars最多的Metric Learning Framework,整合了許多不同的loss function。Loss模組中,Distance計算距離、Regularizer針對Loss進行正則化、Reducer將多個Loss合併後,簡化成最終的一個loss value。Miner則是從Batch當中去找hard pairs的indices。
可以與Confusezius/Revisiting_Deep_Metric_Learning_PyTorch交互參考
KevinMusgrave/pytorch-adapt
整合許多Domain Adaptation演算法的Library
MadryLab/robustness
一個可以用來進行Adversarial Training的library
BorealisAI/advertorch
包含了FGSM和PGD的Adversarial Attack方法。一個對MNIST進行Adversarial Training的範例,但相對的也會提升不少訓練時間。以224*224大小的圖片,Batch size為512來說,每10個batch(5120張圖片所需時間約83秒)
CoinCheung/pytorch-loss
使用PyTorch寫的許多Loss function整理
jettify/pytorch-optimizer、kozistr/pytorch_optimizer
整合了多個不同的深度學習神經網路Optimizer於同一個library當中,附有許多範例程式碼,可快速使用
bonlime/pytorch-tools
- FitWrapper — Keras like model trainer
- Losses — collection of different Loss functions.
- Metrics — collection of metrics.
- Models — classification model zoo.
- Optimizers
- Segmentation Models — segmentation models zoo
- TTA wrapper — wrapper for easy test-time augmentation
zhangyongshun/BagofTricks-LT
針對Long-tailed recognition task的Trick整合,附有論文及trick_gallery.md,針對各個提升準確度的方法進行說明。
libffcv/ffcv
FFCV這個library功能驚人,能夠提升模型訓練時載入資料的速度,只需更換dataloader即可。詳細提升速度的比較表,可參考Benchmark。官方使用PyTorch 1.9.0、CUDA 11.3版本開發,在aiForge上因驅動程式關係,可能無法使用。
ShangHua-Gao/RBN
該論文提出一個取代BN(Batch normalization)的新方法,稱做RBN(Representative Batch Normalization),僅需將BN改成RBN,在多個不同的Backbone當中,可以降低相當顯著的Error rate,可參考知乎介紹文章
chou141253/FGVC-PIM
目前Fine-grained Visual Classification的SOTA方法,為一個Plug-in module,在多個不同Backbone中,可提升約1~2%不等的準確度。
navervision/proxy-synthesis
改善Metric learning中,Proxy based loss的方法,大約能提升1%的performance,論文提到能改善分類器針對Unseen classes進行分類時的決策邊界平滑度(Smoothness)
Guide to Pytorch Learning Rate Scheduling
這篇文章雖然不是Library,但是介紹了許多PyTorch LR scheduling的使用方式。
DefTruth/torchlm
針對Keypoint detection的data augmentation library。
lightly-ai/lightly
針對圖像進行self-supervised learning的python套件,目前支援Barlow Twins, BYOL, DCL & DCLW, DINO, MAE, MSN, MoCo, NNCLR, SimCLR, SimSiam, SMoG, SwaV, VICReg等方法。
lucidrains/vit-pytorch
整合各種基於PyTorch的Vision Transformer Backbone
median-research-group/LibMTL
針對Multi-Task Learning的PyTorch Library
Coloquinte/torchSR
針對Super Resolution的PyTorch Library
XPixelGroup/BasicSR
針對Super Resolution的PyTorch Library
ml-tooling/best-of-ml-python#pytorch-utilities
針對PyTorch的相關套件蒐集
cszn/KAIR
針對Image Restoration的PyTorch Library
qubvel/segmentation_models.pytorch
Segmentation models with pretrained backbones. PyTorch.