尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证RelateAnything: Real-Time Open-Vocabulary Relation Prediction From Any Inputs
翻译准备中
取自仓库 README
正在加载完整 README。 以下为已保存的摘录。
Real-time open-vocabulary relation prediction from any inputs.
53 M parameters · 20 ms per frame on an A40 · no object labels · predicate vocabulary given at inference.
Five Creative Commons clips, six seconds each: instance masks from a 497-class segmenter, and the same relation model over every one of them. Boxes are tracked with a Kalman filter and each relation is held by a second filter on calibrated log-odds, so an edge survives the frames where one of its endpoints goes undetected. Rebuild it with deploy/render_video.py . Clip credits: assets/reel_video/credits.json .查看完整 README ↗Real-time open-vocabulary relation prediction from any inputs.
Paper · Project page · Models · Training data · Documentation
Give RelateAnything an image, object regions, and the relations you want to
look for. It returns scored (subject, relation, object) triplets, such as
person → riding → horse.
https://github.com/user-attachments/assets/76544f31-53ac-407b-9445-157e83946938
Try the browser demo — no installation; inference runs on your device using WebGPU or WASM.
Quickstart · Models · Deployment · Performance · Results · How it works
Use Python 3.12+. Install a CUDA-enabled PyTorch build for NVIDIA GPU
inference, or use device="cpu" in the example below.
git clone https://github.com/Maelic/RelateAnything.git
cd RelateAnything
pip install -e ".[hub,detector]" # detector: ultralytics YOLO, used below
Run this from the repository root. A detector finds the objects in the included sample photo; RelateAnything predicts the relations between them.
from PIL import Image
from ultralytics import YOLO
from relsgg import RelateAnything
image = Image.open("assets/reel/images/horse.jpg").convert("RGB")
# 1. Find the objects. Any detector or segmenter works; this one is YOLO26.
detections = YOLO("yolo26m.pt")(image, conf=0.4, verbose=False)[0]
boxes = detections.boxes.xyxy.cpu().numpy() # [N, 4]: x1, y1, x2, y2 in pixels
labels = [detections.names[int(c)] for c in detections.boxes.cls] # for display only
# 2. Predict the relations between them.
model = RelateAnything.from_pretrained("maelic/relsgg-vits16plus", device="cuda")
for triplet in model.predict(image, boxes, box_labels=labels, topk=3):
print(triplet)
# (person) --riding [0.76]--> (horse)
# (horse) --carrying [0.51]--> (person)
# (horse) --walking past [0.43]--> (car)
# 3. Change the relations to look for, without retraining.
model.set_vocabulary(["riding", "carrying a rider", "beside", "in front of"])
graphs = model.predict(image, boxes, box_labels=labels, decompose=True, topk=3)
print(graphs["spatial"]) # where things are, e.g. (horse) --in front of--> (car)
print(graphs["semantic"]) # what they do, e.g. (person) --riding--> (horse)
The relation model reads the image and the boxes; the detector's labels are
never an input. Boxes can come from any detector, a segmenter (pass masks= as
well) or a person: an [N, 4] array in original-image pixels is all it needs.
Released checkpoints include the backbone configuration and text encoder;
no gated DINOv3 login is needed for inference. The detector extra
installs ultralytics, which is
AGPL-3.0 and downloads the YOLO26 weights on first use.
API guide: inputs, vocabularies, masks, and scores · Installation and offline use
Start with relsgg-vits16plus, the recommended balance of quality and speed.
For more accuracy, use relsgg-convnext-base: within 0.3 OVS of
ConvNeXt-L at half its parameters. All seven checkpoints
share the training recipe and differ in their vision backbone; the ConvNeXt
towers also train their backbone at a lower learning rate.
| Checkpoint | Backbone | Parameters |
|---|---|---|
relsgg-vits16 | DINOv3 ViT-S/16 | 46.1 M |
relsgg-vits16plus | DINOv3 ViT-S/16+ | 53.2 M |
relsgg-vitb16 | DINOv3 ViT-B/16 | 113.8 M |
relsgg-convnext-tiny | DINOv3 ConvNeXt-T | 58.6 M |
relsgg-convnext-small | DINOv3 ConvNeXt-S | 80.2 M |
relsgg-convnext-base | DINOv3 ConvNeXt-B | 123.5 M |
relsgg-convnext-large | DINOv3 ConvNeXt-L | 245.7 M |
Compare model quality and speed. Each model card includes evaluation results and calibration details.
After downloading the relation graph and building the local detector as explained in the deployment guide:
# CPU image demo; omit --image to use a webcam.
python deploy/demo_webcam.py --dist deploy/dist/relsgg-vits16plus --image photo.jpg
# NVIDIA GPU, after building both TensorRT engines.
python deploy/demo_webcam.py --dist deploy/dist/relsgg-vits16plus \
--backend tensorrt --device cuda --image photo.jpg --decompose
The relation model consumes regions; it does not detect objects itself. Demo detectors are rebuilt locally and have separate licenses. The exported ONNX/TensorRT graph scores boxes; native mask inputs are supported by the PyTorch API. Deployment contracts and limitations.
On an RTX 3080 Laptop GPU with TensorRT, the relation model takes 14.7 ms per image with ConvNeXt-T, the fastest checkpoint, and 16.8 ms with the recommended ViT-S+. The full 19,103-predicate vocabulary (Python API) adds at most 1.5 ms.
With YOLO26m detection included, a frame takes 33.5 ms with ConvNeXt-T and 38.7 ms with ViT-S+ (TensorRT relations).
On one A100, the compiled ViT-S+ pipeline with detection takes 25.6 ms per image, against 232 ms for OvSGTR, 498 ms for ACC and about 40 s for ROBIN-3B.
All checkpoints and runtimes · With a detector · Across scene-graph systems
The paper evaluates relation prediction across datasets, open vocabularies and spatial reasoning tasks. Selected transfer results for ViT-S+, using ground-truth boxes and one relation per ordered pair:
| Test set | OvSGTR F1@50 | RelateAnything F1@50 |
|---|---|---|
| VG150 | 16.5 | 36.9 |
| PSG | 13.5 | 34.7 |
| IndoorVG | 20.2 | 37.8 |
Both models use the same evaluator and vocabulary. OvSGTR receives object labels; RelateAnything does not. The full results cover stronger baselines including ROBIN-3B, zero-shot controls and the complete evaluation.
Evaluation protocol · Scoring guide
Figure 2 from the paper. Click to enlarge.
A DINOv3 backbone reads the image once. Regions become visual tokens; a pair sampler selects candidate relations; a transformer refines them using the scene. A vocabulary head scores each pair against embeddings of your predicate strings, mixing spatial and semantic features. Swapping that embedding bank changes the vocabulary without retraining the vision model.
python training/setup_data.py && ./train.sh downloads the data and
retrains the released mixture. Training guide,
released configs.benchmark/.datagen/. Explore the paper's probes:
research/.The documentation index covers the API, architecture, training, data and deployment. Read evaluation pitfalls before comparing results or changing the scoring path.
Full third-party notices and credits
@article{neau2026relateanything,
title = {RelateAnything: Real-Time Open-Vocabulary Relation Prediction From Any Inputs},
author = {Neau, Ma\"elic},
journal = {arXiv preprint arXiv:2609.12552},
eprint = {2609.12552},
archivePrefix = {arXiv},
primaryClass = {cs.CV},
url = {https://arxiv.org/abs/2609.12552},
year = {2026}
}