Residual Networks, or ResNets, learn residual functions with reference to the layer inputs, instead of learning unreferenced functions. In the mainstream previous works, like VGG, the neural networks are a stack of layers and every layer attempts to fit a desired underlying mapping. In ResNets, a few stacked layers are grouped as a block, and the layers in a block attempts to learn a residual mapping.
Formally, denoting the desired underlying mapping of a block as $\mathcal{H}(x)$, split the underlying mapping into the sum of the identity and the residual mapping as $\mathcal{H}(x) = x + \mathcal{F}(x)$, and let the stacked non-linear layers fit the residual mapping $\mathcal{F}(x)$.
Many works proved this method makes deep neural networks easier to optimize, and can gain accuracy from considerably increased depth. Recently, the residual structure is widely used in various models.
Predict image
from mmpretrain import inference_model
predict = inference_model('resnet18_8xb16_cifar10', 'demo/bird.JPEG')
print(predict['pred_class'])
print(predict['pred_score'])
Use the model
import torch
from mmpretrain import get_model
model = get_model('resnet18_8xb16_cifar10', pretrained=True)
inputs = torch.rand(1, 3, 224, 224)
out = model(inputs)
print(type(out))
# To extract features.
feats = model.extract_feat(inputs)
print(type(feats))
Train/Test Command
Prepare your dataset according to the docs.
Train:
python tools/train.py configs/resnet/resnet18_8xb16_cifar10.py
Test:
python tools/test.py configs/resnet/resnet18_8xb16_cifar10.py https://download.openmmlab.com/mmclassification/v0/resnet/resnet18_b16x8_cifar10_20210528-bd6371c8.pth
| Model | Pretrain | Params (M) | Flops (G) | Top-1 (%) | Top-5 (%) | Config | Download |
|---|---|---|---|---|---|---|---|
resnet18_8xb32_in1k |
From scratch | 11.69 | 1.82 | 69.90 | 89.43 | config | model | log |
resnet34_8xb32_in1k |
From scratch | 2.18 | 3.68 | 73.62 | 91.59 | config | model | log |
resnet50_8xb32_in1k |
From scratch | 25.56 | 4.12 | 76.55 | 93.06 | config | model | log |
resnet101_8xb32_in1k |
From scratch | 44.55 | 7.85 | 77.97 | 94.06 | config | model | log |
resnet152_8xb32_in1k |
From scratch | 60.19 | 11.58 | 78.48 | 94.13 | config | model | log |
resnetv1d50_8xb32_in1k |
From scratch | 25.58 | 4.36 | 77.54 | 93.57 | config | model | log |
resnetv1d101_8xb32_in1k |
From scratch | 44.57 | 8.09 | 78.93 | 94.48 | config | model | log |
resnetv1d152_8xb32_in1k |
From scratch | 60.21 | 11.82 | 79.41 | 94.70 | config | model | log |
resnet50_8xb32-fp16_in1k |
From scratch | 25.56 | 4.12 | 76.30 | 93.07 | config | model | log |
resnet50_8xb256-rsb-a1-600e_in1k |
From scratch | 25.56 | 4.12 | 80.12 | 94.78 | config | model | log |
resnet50_8xb256-rsb-a2-300e_in1k |
From scratch | 25.56 | 4.12 | 79.55 | 94.37 | config | model | log |
resnet50_8xb256-rsb-a3-100e_in1k |
From scratch | 25.56 | 4.12 | 78.30 | 93.80 | config | model | log |
resnetv1c50_8xb32_in1k |
From scratch | 25.58 | 4.36 | 77.01 | 93.58 | config | model | log |
resnetv1c101_8xb32_in1k |
From scratch | 44.57 | 8.09 | 78.30 | 94.27 | config | model | log |
resnetv1c152_8xb32_in1k |
From scratch | 60.21 | 11.82 | 78.76 | 94.41 | config | model | log |
| Model | Pretrain | Params (M) | Flops (G) | Top-1 (%) | Config | Download |
|---|---|---|---|---|---|---|
resnet18_8xb16_cifar10 |
From scratch | 11.17 | 0.56 | 94.82 | config | model | log |
resnet34_8xb16_cifar10 |
From scratch | 21.28 | 1.16 | 95.34 | config | model | log |
resnet50_8xb16_cifar10 |
From scratch | 23.52 | 1.31 | 95.55 | config | model | log |
resnet101_8xb16_cifar10 |
From scratch | 42.51 | 2.52 | 95.58 | config | model | log |
resnet152_8xb16_cifar10 |
From scratch | 58.16 | 3.74 | 95.76 | config | model | log |
| Model | Pretrain | Params (M) | Flops (G) | Top-1 (%) | Top-5 (%) | Config | Download |
|---|---|---|---|---|---|---|---|
resnet50_8xb16_cifar100 |
From scratch | 23.71 | 1.31 | 79.90 | 95.19 | config | model | log |
| Model | Pretrain | Params (M) | Flops (G) | Top-1 (%) | Config | Download |
|---|---|---|---|---|---|---|
resnet50_8xb8_cub |
From scratch | 23.92 | 16.48 | 88.45 | config | model | log |
@inproceedings{he2016deep,
title={Deep residual learning for image recognition},
author={He, Kaiming and Zhang, Xiangyu and Ren, Shaoqing and Sun, Jian},
booktitle={Proceedings of the IEEE conference on computer vision and pattern recognition},
pages={770--778},
year={2016}
}