--- license: agpl-3.0 tags: - object-detection - yolo - yolo-world - open-vocabulary - onnx pipeline_tag: object-detection --- # YOLOv8-World v2 — ONNX with dynamic text prompts ONNX exports of Ultralytics YOLOv8-World v2 (`yolov8s-worldv2.pt`, `yolov8l-worldv2.pt`) with a **dynamic `txt_feats` input** so class prompts can be re-encoded at runtime (zero-shot open-vocabulary detection), rather than being baked into the graph. ## Files | File | Size | Params | |---|---|---| | `yolov8s-worldv2.onnx` | 48.8 MB | 12.7 M | | `yolov8l-worldv2.onnx` | 178.8 MB | 46.8 M | ## Input schema Two named inputs (all axes dynamic): - `images` — `float32[batch, 3, height, width]`, normalized to `[0, 1]`, RGB, imgsz=640 recommended. - `txt_feats` — `float32[batch, num_classes, 512]`, CLIP ViT-B/32 text embeddings, L2-normalized (though the graph re-normalizes internally). ## Output - `output0` — `float32[batch, 4 + num_classes, num_anchors]` (YOLO head: 4 box regressors + per-class logits; anchors depend on input HxW). Post-processing: apply sigmoid to the class channels, then standard NMS. ## Text embedding Use CLIP ViT-B/32 (`openai/clip-vit-base-patch32`) to encode each class prompt into a 512-dim vector, stack into `(1, N, 512)`. ## Export Exported from Ultralytics 8.4.37 with a custom `torch.onnx.export` path that patches `WorldDetect.forward` to use `torch.split` sized from `text.shape[1]` (so N stays dynamic). Opset 18. Simplified with onnxslim. ## License AGPL-3.0 (inherits from Ultralytics YOLOv8-World weights).