Computer vision & ResNet Notes

How computer vision learned to go deep

The road to ResNet: what the field tried for fifty years, the wall it hit at twenty layers, and the one-line change that removed it.

Six linked notes on how computer vision got from hand-drawn edge detectors to 152-layer networks, why depth stopped working at around twenty layers, and how one change to what a layer is asked to compute removed the ceiling. Written from the primary sources, with every figure traceable to a published number.

FigureSixty years in one column

Loading figure. It needs JavaScript; the surrounding text stands on its own without it.

The two threads ran in parallel for decades. Classical vision had the benchmarks and the credibility; the neural lineage had the right architecture and no way to train it. They met when ImageNet supplied the data and GPUs supplied the compute.

Read in order

Numbered by the order the notes were written, which is not the order to read them. Start with part 1 for the chronological path, or jump straight to part 4 if you only want the paper.

The thread in one paragraph

Classical vision hand-designed its representations and could only learn the final classifier, which capped progress no matter how good the engineering got . A neural lineage running since 1959 had the right architecture for learning representations but lacked the data, compute, and training methods until roughly 2011, at which point AlexNet ended the argument and each subsequent ILSVRC winner was deeper than the last . That made depth the field's central variable, but deeper plain networks mysteriously produced higher training error, an optimization failure rather than overfitting, and every available workaround added training machinery without solving it . ResNet resolved it by changing what each block is asked to learn: wire the identity through as a parameter-free shortcut and learn only the residual on top .

The short version

The challenge ResNet solved was not vanishing gradients. That problem was already handled by 2015 through normalized initialization and batch normalization, and the paper says so explicitly. The real blocker was degradation: deeper plain networks reached higher training error than shallower ones, which rules out overfitting, capacity and data as explanations and leaves optimization difficulty. Since a deeper network can always match a shallower one by setting its extra layers to the identity, a good solution provably exists and SGD simply could not find it. Residual blocks make that solution the default instead of something to be discovered.

What each part contributes

PartQuestion it answersInteractive figure
1. Classical eraWhat were people doing before deep learning, and why did it stall?Pipeline diagram: one learned stage out of four
2. Neural lineageWhere did convolutional networks come from, and why did they win in 2012 and not 1998?ILSVRC error and depth by year
3. The challengeWhat exactly was blocking deeper networks in 2015?Gradient flow simulation, degradation in three views, the identity construction
4. ResNetWhat did the paper actually change, and what did it buy?Plain vs residual block, accuracy against cost
5. What it costs nowWhat would it take to reproduce this today, including on a Mac?Training budget calculator
6. CodeHow do I build it and reproduce the key result myself?Working PyTorch, and the experiment worth running

Conventions and sourcing