simlock
병렬 코딩 에이전트가 동일 시뮬레이터를 놓고 충돌하지 않도록 제어 평면 제공
픽셀·영역 입력, 자유 텍스트 관계 출력, 프레임당 20 ms, 라벨 없이 브라우저에서 실행
Pixels and regions in, free-text relations out, 20 ms per frame. No object labels, verified machine supervision, and it runs in your browser. Dataset, model and benchmark.
개발 도구Python · ShellGitHub @Maelic온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기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}
}