尚未偵測到更新。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}
}