OverLoCK replaces the CNN pyramid with a top-down branch
[CVPR 2025 Oral] OverLoCK: An Overview-first-Look-Closely-next ConvNet with Context-Mixing Dynamic Kernels
At a glance
- What is it?
- OverLoCK is the Apache-2.0 PyTorch implementation of a CVPR 2025 oral paper: a pure ConvNet backbone built as a Base-Net, an Overview-Net that produces top-down attention, and a Focus-Net that reads closely, tied together by a context-mixing dynamic convolution. Four ImageNet-1K checkpoints are published, and the training recipe expects eight GPUs and a specific CUDA 12.1 stack.
- Who is it for?
- OverLoCK is a good fit for a vision researcher who wants a pure convolutional backbone that still reaches the mid-80s on ImageNet-1K, and who needs the detection and segmentation heads built on it as well.
- Can I use it commercially?
- Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 174 days ago.
- What is it written in?
- Mainly Python, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 22, 2026, and from our analysis. They are not legal advice.
Editorial analysis
The argument against the pyramid
The paper's framing starts from human vision. The README describes top-down attention as a mechanism in the human vision system where the brain first obtains a rough overview of a scene to find salient cues, and then examines it more carefully, and it argues that modern ConvNets stay confined to a pyramid structure that successively downsamples the feature map to expand the receptive field, which neglects that principle. OverLoCK is presented as the first pure ConvNet backbone that explicitly includes a top-down attention mechanism. The claim is architectural rather than numerical: a branch structure that produces a global view early and uses it to guide fine-grained reading later, instead of growing the receptive field by losing resolution. For anyone who has trained CNN backbones, this is a different inductive bias rather than a different training recipe.
Three sub-networks and the kernel that connects them
The design is a branched architecture with three cooperating parts. The Base-Net encodes low and mid-level features, the same job the early stages of a pyramid does. The Overview-Net is lightweight and generates dynamic top-down attention through coarse global context modelling, which is the overview-first half. The Focus-Net performs finer-grained perception guided by that attention, the look-closely-next half. What connects them is ContMix, the context-mixing dynamic convolution, which the README says models long-range dependencies while preserving the inherent local inductive biases of convolution even when the input resolution increases. That last clause is the interesting claim. A dynamic convolution that mixes global context usually loses the locality prior that makes convolution cheap and well-behaved, so a design that keeps both would explain why the network is described as a pure ConvNet rather than a hybrid.
The environment is pinned tightly, including a custom kernel
The README asks you to use the provided dependencies for reproducibility, and the pins are specific:
# Environments:
cuda==12.1
python==3.10
# Dependencies:
pip install torch==2.3.1 torchvision==0.18.1 --index-url https://download.pytorch.org/whl/cu121
pip install natten==0.17.1+torch230cu121 -f https://shi-labs.com/natten/wheels/
pip install timm==0.6.12
pip install mmengine==0.2.0natten is the neighbour attention library, and its wheel index is keyed to a specific torch and CUDA combination, which is why the exact version string carries the torch230cu121 suffix. The README also warns that network issues during the natten install can be worked around by downloading a prebuilt wheel from the project's releases and installing it locally. Beyond that, the note about using the efficient large-kernel convolution from RepLKNet matters: the project says training and inference are accelerated by a depthwise_conv2d_implicit_gemm function that you have to install by following an external guideline, which is a custom CUDA extension in your environment and therefore a real deployment consideration.
The four published checkpoints and their numbers
Four ImageNet-1K models are released with weights linked from the table, and the table gives the cost of each. OverLoCK-XT at 224x224 input reports 2.6 GFLOPs, 16 million parameters and 82.7 percent top-1. OverLoCK-T reports 5.5 GFLOPs, 33 million parameters and 84.2 percent. OverLoCK-S reports 9.7 GFLOPs, 56 million parameters and 84.8 percent, and OverLoCK-B reports 16.7 GFLOPs, 95 million parameters and 85.1 percent. These are the authors' reported numbers for their own evaluation, so treat them as the reference point rather than as something you will reproduce. What is useful is the shape: the accuracy gain from XT to B is 2.4 points for six times the compute, which is the trade a backbones table usually shows, and the smallest model at 2.6 GFLOPs is small enough to train and debug on a single machine even if the published training recipe is not.
Training on eight GPUs, with two documented escape hatches
Training is scripted per model size, and the README states the setup is eight GPUs on a single node:
bash scripts/train_xt_model.sh # train OverLoCK-XT
bash scripts/train_t_model.sh # train OverLoCK-T
bash scripts/train_s_model.sh # train OverLoCK-S
bash scripts/train_b_model.sh # train OverLoCK-BTwo failure modes are documented with specific remedies. If you hit NaN loss, the advice is to delete the --native-amp argument to disable AMP training and resume the checkpoint from before the NaN occurred, which tells you mixed precision is a known source of instability in this codebase rather than a rare event. If GPU memory is insufficient, gradient checkpointing is enabled with the arguments --grad-checkpoint --ckpt-stg 4 0 0 0, and the README notes that increasing those values helps further at the cost of training speed. Both are the kind of note that only appears in a README that has been used on real hardware.
Validation and the reparameterized inference path
Evaluation is a single script, and the README points out that the pretrained argument and the checkpoint argument are alternatives:
MODEL=overlock_xt # overlock_{xt, t, s, b}
python3 validate.py \
/path/to/imagenet \
--model $MODEL -b 128 \
--pretrained # or --checkpoint /path/to/checkpoint The December 2025 news entry explains the inference optimisation. Reparameterized versions of the models with pre-trained weights are provided to improve inference speed and reduce memory consumption, and they are said to achieve identical performance to their originals on ImageNet-1K evaluation. The caveat is specific and matters for anyone planning to fine-tune: if you further fine-tune the reparameterized models, they may yield slightly lower accuracy than the original versions, so the variant choice depends on whether you are deploying or training. The README says to choose based on memory and accuracy requirements, and the reparameterization is described as structural, borrowing the approach from UniRepLKNet.
Where OverLoCK does not fit
Three limits. The first is the dependency on a hand-installed CUDA kernel, since depthwise_conv2d_implicit_gemm has to be brought in through an external guideline rather than pulled from a package index, and that is a hard stop for a build pipeline that must work from a clean image without extra steps. The second is the training budget: the published recipe is eight GPUs, and the memory advice involves trading speed for space, so reproducing the numbers from scratch is a research-scale commitment rather than a weekend. The third is release discipline. There is a single release tag, v1, from 2025-02-27, and the last push was on 2026-05-02, so the code base is a research artefact with a long gap between releases. Against the alternative of using an established backbone from timm, which arrives with many sizes and a training recipe that is already debugged, OverLoCK's difference in approach is the top-down branch and the context-mixing kernel, and the price of that difference is a bespoke environment and no release train.
Editorial conclusion
OverLoCK is a good fit for a vision researcher who wants a pure convolutional backbone that still reaches the mid-80s on ImageNet-1K, and who needs the detection and segmentation heads built on it as well. It is a poor fit for a production inference budget that cannot afford a custom CUDA extension, since the fast path depends on a depthwise_conv2d_implicit_gemm function installed by following an external guideline, and it is a poor fit for anyone who needs a stable, versioned release, since there is one release tag and the last push was on 2026-05-02. Check three things before you invest the GPU time: that your environment matches cuda 12.1 with python 3.10 and torch 2.3.1, that the natten wheel you install is the 0.17.1+torch230cu121 build, since a mismatch there is the most common install failure, and that you read the reparameterization note before fine-tuning, because the reparameterized variants are said to be identical on ImageNet-1K evaluation but may give slightly lower accuracy if you train them further.
Frequently asked questions
What is OverLoCK and what is new about it?
OverLoCK is the official PyTorch implementation of a CVPR 2025 oral paper, described as the first pure ConvNet backbone architecture that explicitly incorporates a top-down attention mechanism, replacing the pyramid structure with a branched design of a Base-Net, an Overview-Net and a Focus-Net.
What accuracy do the OverLoCK models reach on ImageNet-1K?
The README's table reports OverLoCK-XT at 2.6 GFLOPs, 16M parameters and 82.7 percent top-1, OverLoCK-T at 5.5 GFLOPs and 84.2 percent, OverLoCK-S at 9.7 GFLOPs and 84.8 percent, and OverLoCK-B at 16.7 GFLOPs, 95M parameters and 85.1 percent, all at 224x224 input.
What environment does OverLoCK need?
The README suggests cuda 12.1 with python 3.10, torch 2.3.1 and torchvision 0.18.1 from the cu121 index, natten 0.17.1+torch230cu121, timm 0.6.12 and mmengine 0.2.0. It also asks you to install the depthwise_conv2d_implicit_gemm function from the RepLKNet project following an external guideline.
What is the context-mixing dynamic convolution in OverLoCK?
ContMix is the convolution the README describes as modelling long-range dependencies while preserving the inherent local inductive biases of convolution even when the input resolution increases, addressing what it calls critical limitations in existing convolutions. A plug-and-play implementation of the ContMix Block is available in models/contmix.py.
What is the difference between the reparameterized OverLoCK models?
The reparameterized versions are provided to improve inference speed and reduce memory consumption, and the README says they achieve identical performance to their originals on ImageNet-1K evaluation. If you fine-tune them further they may yield slightly lower accuracy, so the choice depends on your memory and accuracy requirements.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/lmmmeng-overlock)Was this useful?