Detection = boxes + labels, not just labels
Classification answers "what's in this image?" Detection answers "what's in it, and where?" — it returns a bounding box and a class for every object it finds, possibly dozens per frame. That's a harder problem, and historically it meant wrestling the TensorFlow Object Detection API or a third-party YOLO repo. KerasCV folds it into the same from_preset idiom you already know.
YOLOV8 is the workhorse here — a single-stage real-time detector that's become the default for production detection. One call loads it with COCO-pretrained weights, and a predict returns a dict of boxes, class IDs, and confidence scores. Non-max suppression (collapsing overlapping boxes of the same object) is handled for you.
Picking a size
YOLOV8 comes in five sizes — xs (fastest), s, m, l, xl (most accurate) — the same latency/accuracy dial as the backbones in the previous lesson. For real-time video on modest hardware, xs/s; for offline batch accuracy, l/xl. To fine-tune on your own classes, freeze the backbone and train just the detection head — that's the next lesson's pipeline.