Skip to content

PyTorch image classification on ImageNet/CIFAR-100. Supports ResNet, VGG, ViT, EfficientNet, ConvNeXt, & more. Includes Grad-CAM.

License

Notifications You must be signed in to change notification settings

adarsh-crafts/pytorch-classification-extended

Repository files navigation

pytorch-classification

This repository is a fork of pytorch-classification, extended with new features.

Features

  • Unified interface for different network architectures
  • Multi-GPU support
  • Training progress bar with rich info
  • Training log and training curve visualization code (see ./utils/logger.py)
  • New: Grad-CAM visualization script (gradcam.py) compatible with all supported models.
  • New: Expanded model support for EfficientNet, ViT, ConvNeXt, and more.

Install

  • Install PyTorch
  • Clone recursively
git clone --recursive https://github.com/adarsh-crafts/pytorch-classification-extended.git

Data

Organize your dataset in an ImageNet-style directory structure as follows:

data/
│
├── train/
│   ├── class 1/
│   ├── class 2/
│   ├── class 3/
│
├── val/
│   ├── class 1/
│   ├── class 2/
│   ├── class 3/

Training

Please see the Training recipes for how to train the models.

Visualization (Grad-CAM)

A universal Grad-CAM script (gradcam.py) is included for model visualization. It is compatible with all supported architectures (including ViT) and loads checkpoints saved by the training script (train.py).

Example Usage

python gradcam.py \
    --checkpoint /path/to/checkpoint/model_best.pth.tar \
    --image /path/to/your/image.jpg \
    --arch resnet50 \
    --num-classes 1000 \
    --output gradcam_output.png

Training Results

CIFAR

Top1 error rate on the CIFAR-10/100 benchmarks are reported. You may get different results when training your models with different random seed. Note that the number of parameters are computed on the CIFAR-10 dataset.

Model Params (M) CIFAR-10 (%) CIFAR-100 (%)
alexnet 2.47 22.78 56.13
vgg19_bn 20.04 6.66 28.05
ResNet-110 1.70 6.11 28.86
PreResNet-110 1.70 4.94 23.65
WRN-28-10 (drop 0.3) 36.48 3.79 18.14
ResNeXt-29, 8x64 34.43 3.69 17.38
ResNeXt-29, 16x64 68.16 3.53 17.30
DenseNet-BC (L=100, k=12) 0.77 4.54 22.88
DenseNet-BC (L=190, k=40) 25.62 3.32 17.17

cifar

ImageNet

Single-crop (224x224) validation error rate is reported.

Model Params (M) Top-1 Error (%) Top-5 Error (%)
ResNet-18 11.69 30.09 10.78
ResNeXt-50 (32x4d) 25.03 22.6 6.29

Validation curve

Pretrained models

Our trained models and training logs are downloadable at OneDrive.

Supported Architectures

CIFAR-10 / CIFAR-100

Since the size of images in CIFAR dataset is 32x32, popular network structures for ImageNet need some modifications to adapt this input size. The modified models is in the package models.cifar:

ImageNet

  • All models in torchvision.models (e.g., alexnet, vgg, resnet, densenet, inception_v3, squeezenet, mobilenet, efficientnet, vit, convnext, etc.)
  • ResNeXt (Custom implementation via models.imagenet)
  • Wide Residual Networks

Contribute

Feel free to create a pull request if you find any bugs or you want to contribute (e.g., more datasets and more network structures).

About

PyTorch image classification on ImageNet/CIFAR-100. Supports ResNet, VGG, ViT, EfficientNet, ConvNeXt, & more. Includes Grad-CAM.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages