Installs into .claude/skills of the current project.
Are you the author of Model Api?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/vectorspacelab-model-api-3f9ce3fa)
---
name: model-api
description: "Use when working with RobustVideoMatting MattingNetwork APIs,
recurrent states, model variants, refiners, tensor shapes, and safe synthetic
forward checks."
disable-model-invocation: true
metadata:
disco-role: operating
license: GPL 3.0
---
# RobustVideoMatting Model API
Use this sub-skill when the task is about constructing or calling the RVM PyTorch
model itself rather than converting videos, preparing training data, or running
evaluation metrics.
## Read this when
- The user asks how to instantiate `MattingNetwork` with `mobilenetv3` or
`resnet50`.
- The task mentions recurrent states, ConvGRU memory, `downsample_ratio`,
`segmentation_pass`, foreground/alpha tensor shapes, or channel/rank errors.
- You need a safe import/forward smoke test before writing inference or training
code.
- You need to decide whether to use `deep_guided_filter` or
`fast_guided_filter` as the refiner.
Route other tasks elsewhere:
- Video/image conversion, checkpoints, TorchHub, TorchScript, ONNX, TensorFlow,
or CoreML usage: [inference-workflows](../inference-workflows/SKILL.md).
- Dataset layouts, `DATA_PATHS`, training stages, losses, or augmentations:
[training-data](../training-data/SKILL.md).
- LR/HR metric evaluation or speed benchmarking:
[evaluation-tools](../evaluation-tools/SKILL.md).
## Core workflow
1. Ensure the RVM source modules are importable as `model` and that PyTorch and
TorchVision are installed. If in doubt, run the bundled smoke helper:
```bash
python scripts/rvm_model_smoke.py --repo-root /path/to/RobustVideoMatting --variant mobilenetv3 --device cpu
```
2. Instantiate the model without downloading backbone weights unless the user
explicitly wants that side effect:
```python
from model import MattingNetwork
model = MattingNetwork(variant="mobilenetv3").eval()
# or: MattingNetwork(variant="resnet50")
```
3. Feed RGB tensors normalized to `0..1` in channel-first format:
- single frame/batch: `[B, C, H, W]`
- chunked sequence: `[B, T, C, H, W]`
4. Recycle all four recurrent states in temporal order:
```python
rec = [None] * 4
fgr, pha, *rec = model(src, *rec, downsample_ratio=0.25)
```
5. Validate the output contract. Matting mode returns foreground `fgr`, alpha
`pha`, and four recurrent states. `segmentation_pass=True` returns
segmentation logits plus recurrent states, not foreground/alpha.
## Bundled references and scripts
- Read [references/api-reference.md](references/api-reference.md) for verified
constructor and forward signatures, tensor ranks, output shapes, recurrent
state details, model variants, and architecture notes.
- Read [references/troubleshooting.md](references/troubleshooting.md) when
shape errors, invalid variants, device/dtype mismatches, recurrent-state
misuse, pretrained downloads, or segmentation-pass confusion appear.
- Run [scripts/rvm_model_smoke.py](scripts/rvm_model_smoke.py) for a safe
synthetic forward pass on CPU or CUDA. It is adapted from the repo's speed
test but intentionally avoids benchmarks, downloads, and training.
## Decision points
- Prefer `mobilenetv3` for most inference and smoke tests because it is the
smaller recommended variant. Use `resnet50` when the user explicitly wants
the larger model with modest quality improvement.
- Keep `refiner="deep_guided_filter"` unless the task specifically asks for the
faster guided-filter refiner or export behavior.
- Use 5D input chunks (`[B,T,C,H,W]`) to improve parallelism while preserving
temporal recurrence across chunks. Carry only the returned four state tensors
into the next chunk.
- Do not use a CPU smoke test as proof of GPU speed, CUDA memory behavior, or
high-resolution evaluation performance. Route those questions to
[evaluation-tools](../evaluation-tools/SKILL.md).
## Acceptance check for model API answers
A good answer for this surface names the exact tensor rank/order, explains the
four recurrent states, states whether the call returns fgr/pha or segmentation
logits, includes a small validation snippet or smoke command, and routes any
conversion/training/evaluation work to the owning sub-skill.