Views
No views yet
pip install git+https://github.com/facebookresearch/segment-anything.gitgit clone https://huggingface.co/jamepark3922/robin-qwen2.5-3b├── demo
├── checkpoints
│ ├── robin-qwen2.5-3b-sg-stage2
│ └── sam_vit_h_4b8939.pth
└── open_clip_pytorch_model.binconfig.json of robin-3b model to the Absolute path of open_clip_pytorch_model.bin.1import requests
2
3from segment_anything import sam_model_registry
4
5from svg.pipeline.region_proposal.region_generator import SamGroundingDinoRegionGenerator
6from svg.pipeline.grounding.grounding_dino import GroundingDinoSAM
7from svg.pipeline.captioning.gpt4o import GPT4Captioner
8from svg.pipeline.robin import RobinPipeline
9from svg.draw_utils import visualize_masks
10
11image = Image.open(requests.get('http://farm4.staticflickr.com/3377/3573516590_a1f6cf2cbd_z.jpg', stream=True).raw)
12
13device = 'cuda' if torch.cuda.is_available() else 'cpu'
14
15sam_ckpt = 'sam_vit_h_4b8939.pth'
16sam_model = sam_model_registry["vit_h"](checkpoint=sam_ckpt).to(device)
17
18# Optional: grounding_dino + gpt4o captioner for additional region grounding
19print('Loading GroundingDino model...')
20grounding_model = GroundingDinoSAM(
21 "IDEA-Research/grounding-dino-base",
22 sam_model,
23 device
24)
25captioner = GPT4Captioner()
26region_generator = SamGroundingDinoRegionGenerator(
27 sam_model=sam_model,
28 grounding_model=grounding_model, # None if not using
29 captioner=captioner
30)
31regions: list[dict] = region_generator.generate_regions(image, region_mode='merged')
32
33# Generate scene graph from regions
34model = RobinPipeline(robin_path, device=device)
35sg, _ = model.generate_scene_graph(im, regions)
36objects: list[str] = sg['objects']
37relations: list[tuple[int, int, str]] = sg['relations']
38
39# Visualize the scene graph
40image_rgb = np.array(image)
41image_with_masks: np.ndarray = visualize_masks(
42 image_rgb, regions,
43 draw_bbox=True, draw_mask = True, draw_polygon=False,
44 white_padding=50
45 )
46cv2.imwrite('scene_graph.jpg', image_with_masks)
47with open('scene_graph.json', 'w') as f:
48 json.dump(scene_graph, f, indent=4)predict.py to generate scene graph for a single image.python predict.py --image_path path/to/image.jpg@misc{park2025syntheticvisualgenome,
title={Synthetic Visual Genome},
author={Jae Sung Park and Zixian Ma and Linjie Li and Chenhao Zheng and Cheng-Yu Hsieh and Ximing Lu and Khyathi Chandu and Quan Kong and Norimasa Kobori and Ali Farhadi and Yejin Choi and Ranjay Krishna},
year={2025},
eprint={2506.07643},
archivePrefix={arXiv},
primaryClass={cs.CV},
url={https://arxiv.org/abs/2506.07643},
}