Download Resume
Approach
Ultralytics YOLOWorld (yolov8s-world.pt) — the direct answer to Level 4's vocabulary gap.

Detects any object described in plain text at inference time — no training or fine-tuning required, unlike COCO's fixed 80-class list.

model = YOLOWorld("yolov8s-world.pt")
model.set_classes(["forklift", "cardboard box", "pallet", "helmet", "person"])
results = model.predict(image_path, conf=0.08, iou=0.5)
Getting there
Worth showing as process, not just the end result.
Original, unannotated warehouse photo with two workers in safety vests and helmets
Before — the original, unannotated photo.
YOLO-World correctly detecting person, helmet, electrical cabinet, and pallet jack in the same warehouse photo
After — person, helmet, electrical cabinet, and pallet jack all correctly detected with distinct per-class colors and confidence scores.

Terminal output

image 1/1 warehouse1.jpg: 864x1280 2 helmets, 4 persons, 2 electrical cabinets, 1 pallet jack, 1251.3ms
Speed: 20.3ms preprocess, 1251.3ms inference, 1.5ms postprocess per image at shape (1, 3, 864, 1280)
warehouse1.jpg -> Total objects detected: 9
  person: 4
  helmet: 2
  electrical cabinet: 2
  pallet jack: 1
Saved annotated image as output1.jpg
A synthetic, 3D rendered forklift warehouse image with zero detections drawn
Not every scene worked: this synthetic, 3D-rendered forklift warehouse image returned zero detections (shown as originally captured — with nothing detected, there's no annotated version to compare against) — see Level 6 for what changed on the exact same image.

Terminal output

image 1/1 warehouse3.jpg: 736x1280 (no detections), 1527.6ms
Speed: 23.0ms preprocess, 1527.6ms inference, 1.5ms postprocess per image at shape (1, 3, 736, 1280)
warehouse3.jpg -> Total objects detected: 0
  No objects detected - try lowering conf further or rephrasing classes.
Saved annotated image as output3.jpg
Open-vocabulary detection matches language patterns, not fixed definitions. Word choice directly and significantly changes what gets detected — a real UX/deployment consideration, not just a modeling detail.