ssd
SSD — Single Shot MultiBox Detector (Liu et al., 2016) — is a one-stage detector whose signature idea is to make predictions from several feature maps of different resolutions, not just one. Like YOLO it detects in a single pass with no proposal stage, but it directly attacks YOLO's weakness on multi-scale objects by recognizing that different layers of a CNN naturally 'see' objects of different sizes: shallow, high-resolution maps are good for small objects; deep, low-resolution maps are good for large ones.
Concretely, SSD attaches small convolutional prediction heads to a sequence of feature maps that shrink progressively (e.g. 38×38, 19×19, 10×10, 5×5, 3×3, 1×1). At every cell of each map it tiles a set of default boxes (its name for anchors) of several aspect ratios, and a 3×3 conv predicts, per default box, the C+1 class scores and the 4 box offsets. Big feature maps with small default boxes catch small objects; small feature maps with large default boxes catch big ones. All heads fire in one forward pass; NMS cleans up at the end.
Training uses matching by IoU (each ground-truth box matches the best default box plus any with IoU > 0.5) and a combined loss of softmax classification plus smooth-L1 localization. A crucial ingredient is hard negative mining: because the vast majority of default boxes are background, SSD keeps only the hardest negatives so that the positive-to-negative ratio is about 1:3, preventing easy background from swamping the loss — the same imbalance problem that focal loss would later address more elegantly.
SSD hit a sweet spot of speed and accuracy for its time (SSD300 ~59 fps, SSD512 more accurate but slower) and popularized the multi-scale-feature idea that FPN soon generalized with top-down connections. Its main remaining weakness was small objects, because its shallowest feature map still lacks strong semantic features — exactly the gap that feature pyramid networks were built to close.
SSD's multi-scale heads are a bottom-up pyramid: each map is used as-is, so the shallow high-resolution map (where small objects must be found) has weak semantics. FPN's fix is to flow deep, semantically-rich features back down to those shallow maps — that one change is most of why FPN-based detectors crush plain SSD on small objects.