Yolo26 for vvvv
This is a preview / test implementing the latest Yolo release by ultralytics (models exported to ONNX).
Preview
There is a local nuget inside the dist folder, install from vvvv´s nuget command line:
nuget install VL.Yolo26 -Source "C:\dist;``https://api.nuget.org/v3/index.json``" -Version 0.4.2 -PreRelease
(modify C:\dist to your actual folder you put the nuget into)
There is no nuget.org package yet but i will continue to burn as many tokens as it takes to publish it soon with all features:) (3 of 5 implemented by now)
Note: Just noticed the read back pipeline nodes wont work in vvvv 7.0. Did not investigate this further. Suggest you just run it in 7.3
Note2: Smoothest pipeline is Texture (GPU only), Most demanding is the Segment Task (Mask generation)
What has been built:
I have explored 3 different input and pipeline approaches and kept them all around. The outcome for now is 3 different node families across 3 yolo tasks (Detect, Pose, Segmentation). The difference at first was about image input (IVideoSource VS Stride Texture readback), then came a third variant that is a GPU only implementation for almost the whole processing pipeline. Skia was out of scope for now and the category naming might be worth reconsidering.
As a bonus there is extensive documentation written along by the agent including all node and pin descriptions in the editor.
Find help patches in help browser.
Video vs Texture vs Readback
| Video | Texture | Texture Readback | |
|---|---|---|---|
| Input | IVideoSource (CPU frames) |
Stride Texture (GPU) |
Stride Texture (GPU) |
| Pixels to CPU | Source already CPU | Never (zero-copy) | GPU→CPU readback, delayed |
| Preprocess | CPU ImagePreprocessor |
GPU compute | CPU ImagePreprocessor |
| ORT EP | CPU or DirectML | DirectML only, DML1 + IoBinding | CPU or DirectML |
| Threading | Background worker | Mainloop (sync GPU wait) | Mainloop readback + worker |
| Mainloop blocking | No | Yes | No |
| Patch deps | VL.Video typical |
VL.Stride required |
VL.Stride required |
All nodes
| Node | Category | Input | Inference |
|---|---|---|---|
| Detect (Video) | ML.YOLO26 |
IVideoSource |
CPU or DirectML; background thread |
| Detect (Texture) | ML.YOLO26.Stride |
Stride Texture |
Zero-copy GPU (D3D12 + DirectML IoBinding) |
| Detect (Texture Readback) | ML.YOLO26.Stride |
Stride Texture |
Non-blocking GPU→CPU readback, then CPU/DirectML worker |
| Pose (Video) | ML.YOLO26 |
IVideoSource |
CPU or DirectML; background thread |
| Pose (Texture) | ML.YOLO26.Stride |
Stride Texture |
Zero-copy GPU |
| Pose (Texture Readback) | ML.YOLO26.Stride |
Stride Texture |
Readback + CPU/DirectML worker |
| Segment (Video) | ML.YOLO26 |
IVideoSource |
CPU or DirectML; four toggled mask outputs |
| Segment (Texture) | ML.YOLO26.Stride |
Stride Texture |
Zero-copy GPU; proto on GPU, mask assembly in compute shaders |
| Segment (Texture Readback) | ML.YOLO26.Stride |
Stride Texture |
Readback + same CPU mask assembly as Segment (Video) |
Credits to @tonfilm for the vvvv skills. Agent said they helped a lot:)
Models:
The repository ships with nano models for now, for convenient testing and help patches.
From: @zwh20081 on Hugging Face (yolo26-onnx)
See docs/models.md for more info.
Aaaand fingers crossed the nodes work for you too.