ConvNeXt Modernized Convolutions
ConvNeXt rebuilds ResNet with transformer-era training and large depthwise kernels, proving tuned convolutions still match vision transformers on accuracy and speed.
Why Does This Exist?
Vision transformers overtook CNNs around 2021, and the field read that as convolutions being obsolete. But the comparisons were unfair: transformers trained 300 epochs with AdamW, Mixup and heavy augmentation while ResNet baselines used 90-epoch SGD recipes from 2015. Nobody knew how much of the gap was architecture and how much was maintenance.
ConvNeXt (Liu et al., 2022) modernizes the ResNet-50 backbone step by step toward Swin Transformer accuracy while staying fully convolutional. Patchify stem, depth ratios, large kernels, inverted bottlenecks and transformer training close the gap. This page covers those changes. Residual foundations live in residual networks, separable large kernels in MobileNet, and the compound-scaled CNN baseline in EfficientNet.
The one idea you need first
A depthwise convolution gives each input channel its own spatial filter instead of mixing channels: a depthwise layer at width costs weights rather than . That factor-of- saving is what makes large kernels affordable, and channel mixing is deferred to cheap layers.
Think of It Like This
Restoring a classic car with modern parts
A 1990s sports car loses to modern rivals on old tires, old fuel and a worn suspension. Refit tires, fuel mapping, suspension and gearbox one part at a time and the classic chassis matches the newcomers, because the gap was maintenance rather than shape.
ResNet is the chassis. The 300-epoch recipe, AdamW, LayerNorm and depthwise kernels are the refit. Where the analogy stops: some parts change the chassis itself, such as the patchify stem replacing the stride-2 opener, and unlike a car, every change here was ablated so its individual contribution is measured.
How It Actually Works
Changes apply in order. The stem becomes a stride-4 patchify layer. Stage compute ratio moves from to , matching Swin. Each block inverts: a depthwise convolution first (only weights, so at ), then LayerNorm, then expand with GELU, then project back. Downsampling uses stride-2 convolutions between stages.
Training carries half the gain: 300 epochs, AdamW, Mixup, CutMix, RandAugment and stochastic depth. ConvNeXt-Tiny reaches about 82.1% top-1 with 29 million parameters and 4.5 GFLOPs, against Swin-Tiny at 81.3% with 28 million and 4.5 GFLOPs. Same budget, convolution ahead.
Worked example
Cost the headline kernel directly: weights. A standard convolution at the same width would cost — the depthwise form is cheaper, which is exactly why a kernel that was prohibitive in 2015 is trivial here. The accuracy margin is points on an equal compute budget.
Code
The two numbers the diagram is built from:
depthwise_7x7_c96 = 7 * 7 * 96print(depthwise_7x7_c96)# -> 4704
swin_t, convnext_t = 81.3, 82.1print(round(convnext_t - swin_t, 1))# -> 0.8A depthwise layer at width 96 costs fewer weights than a single dense matrix row — large kernels are cheap once channels are not mixed.
Watch Out For
Using large kernels without the training recipe
A depthwise kernel under a 90-epoch SGD schedule gains nothing and can lose accuracy. The symptom is a slower model scored as a failed idea, when the missing ingredient was the optimizer and schedule, not the kernel.
Adopt the 300-epoch AdamW recipe with Mixup and stochastic depth before judging the architecture. Ablate training and structure separately.
Keeping BatchNorm inside the depthwise block
BatchNorm on small per-device batches destabilizes the wide depthwise maps. The symptom is noisy validation curves that worsen as the job scales across nodes.
Use LayerNorm after the depthwise step as the paper does, especially on multi-node runs where per-device batch statistics are thinnest.
The Quick Version
- ConvNeXt modernizes ResNet with a patchify stem, stages and depthwise inverted blocks.
- A depthwise layer at 96 channels costs only 4,704 weights, so large kernels stay cheap.
- Transformer-era training supplies half the gain, so 90-epoch schedules underrate the model.
- ConvNeXt-Tiny reaches about 82.1% top-1 against Swin-Tiny at 81.3% on equal budgets.
- Use LayerNorm in the blocks and the full 300-epoch recipe before comparing.