The whole idea.
The object-detection page slides one fixed-size window over every position. R-CNN
(2014) checks far fewer places. First it proposes regions: boxes that might hold an object.
It finds them with selective search, which starts from small patches and keeps merging the two
neighbors that look most alike; every merged group gives one box. Then it takes each region, cuts it out,
squeezes it to the fixed size the CNN expects, and runs the CNN on it to get a class score. A
squeezed region always has the right size, so a big cat and a small cat look the same to the CNN.
A proposed region rarely fits the animal exactly, so R-CNN also nudges each box edge to fit
better (box regression). Last, NMS removes the duplicates.
Fast R-CNN (2015) noticed that the regions overlap, so R-CNN runs the CNN over the same
pixels again and again. It runs the CNN once on the whole picture, then cuts every region out of
the resulting feature map and pools it to a fixed grid (RoI pooling). Same regions,
one CNN run.
Faster R-CNN (2015) also replaced selective search. A small Region Proposal
Network looks at the same feature map, puts a few anchor boxes of different sizes at every
position, and scores each one: is there an object here? Only the best few dozen become regions.
Proposals and checks now share one CNN run.
What is simulated here.
There is no trained network on this page. The “CNN” is the template score from the
object-detection page: how closely the squeezed region matches a small cat or dog, from −1 to +1.
The “feature map” is the picture shrunk 4 times; a real one has hundreds of channels.
A real detector learns the box nudge and makes it in one step; this page finds it by trying small moves
of each edge and keeping the best score. What the page shows as it really is: where the regions come
from, what gets cut out, and how many times the CNN has to run.