-
Notifications
You must be signed in to change notification settings - Fork 33
vsov
The vs-openvino plugin provides optimized pure CPU runtime for some popular AI filters.
To build, you will need OpenVINO and its dependencies.
Only Model Optimizer and Inference Engine are required.
You can download official Intel releases:
Or, you can use our prebuilt Windows binary releases from AmusementClub, our release has the benefit of static linking support.
Sample cmake commands to build:
cmake -S . -B build -G Ninja -D CMAKE_BUILD_TYPE=Release
-D CMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded
-D InferenceEngine_DIR=openvino/runtime/cmake
-D VAPOURSYNTH_INCLUDE_DIRECTORY="path/to/vapoursynth/include"
cmake --build build
cmake --install build --prefix installYou should find vsov.dll (or libvsov.so) under install/bin. You will also need Intel TBB (you can get
tbb.dll from OpenVINO release).
Prototype: core.ov.Model(clip[] clips, string network_path[, int pad = 0, int block_w = 0, int block_h = 0, string device = "CPU"])
Arguments:
-
clip[] clips: the input clips, only 32-bit floating point RGB or GRAY clips are supported. For model specific input requirements, please consult our wiki. -
string network_path: the path to the network in ONNX format. -
int pad: some networks (e.g. CNN) support arbitrary input shape where other networks might only support fixed input shape and the input clip must be processed in tiles. Thepadargument specifies the overlapping (both horizontal and vertical, in pixels) between adjacent tiles to minimize boundary issues. Please refer to network specific docs on the recommended padding size. -
int block_w: Even for CNN where arbitrary input sizes could be supported, sometimes the network does not work well for the entire range of input dimensions, and you have to limit the size of each tile. This parameter specify the horizontal tile size (including the padding). Please refer to network specific docs on the recommended tile size. -
int block_h: Similar toblock_w, this set the height of the tile. If unspecified, it will default toblock_w. -
string device: Specifies the device to run the inference on. Currently only"CPU"is supported, which is also the default.
When pad = 0 (which is the default), the filter will internally try to resize the network to fit the input clips. This might not always work (for example, the network might require the width to be divisible by 8), and the filter will error out in this case.
The general rule is to either:
- left out
pad,block_w,block_hat all and just process the input frame in one tile, or - set all three so that the frame is processed in
block_wxblock_htiles, and adjacent tiles will have an overlap ofpadpixels on both directions. The overlapped region will be throw out so that only internal output pixels are used..
- Runtimes
- Models
- Device-specific benchmarks
- NVIDIA GeForce RTX 4090
- NVIDIA GeForce RTX 3090
- NVIDIA GeForce RTX 2080 Ti
- NVIDIA Quadro P6000
- AMD Radeon RX 7900 XTX
- AMD Radeon Pro V620
- AMD Radeon Pro V520
- AMD Radeon VII
- AMD EPYC Zen4
- Intel Core Ultra 7 155H
- Intel Arc A380
- Intel Arc A770
- Intel Data Center GPU Flex 170
- Intel Data Center GPU Max 1100
- Intel Xeon Sapphire Rapids