基於PyTorch的實用Library

Yanwei Liu
8 min readAug 7, 2021

本文紀錄一些基於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-optimizerkozistr/pytorch_optimizer

整合了多個不同的深度學習神經網路Optimizer於同一個library當中,附有許多範例程式碼,可快速使用

bonlime/pytorch-tools

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.

davidtvs/pytorch-lr-finder

--

--