Views
No views yet

1import torch
2from models.models import OVIEModel
3from utils.pose_enc import extri_intri_to_pose_encoding
4from torchvision.transforms import ToTensor
5from PIL import Image
6
7device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
8
9# Load model
10model = OVIEModel.from_pretrained("kyutai/ovie", revision="v1.0").to(device)
11model.eval()
12image_size = model.image_size # 256
13
14# Prepare input image
15img_pil = Image.open("image.jpg").convert("RGB").resize((image_size, image_size))
16img_tensor = ToTensor()(img_pil).unsqueeze(0).to(device)
17
18# Define target camera pose (3x4 extrinsics)
19extrinsics = torch.tensor([[[1.0, 0.0, 0.0, -1.25],
20 [0.0, 1.0, 0.0, 0.5],
21 [0.0, 0.0, 1.0, -2.0]]], device=device)
22dummy_intrinsics = torch.zeros(1, 1, 3, 3, device=device)
23
24camera = extri_intri_to_pose_encoding(
25 extrinsics=extrinsics.unsqueeze(0),
26 intrinsics=dummy_intrinsics,
27 image_size_hw=(image_size, image_size),
28)
29cam_token = camera[..., :7].squeeze(0)
30
31# Generate novel view
32with torch.no_grad():
33 pred = model(x=img_tensor, cam_params=cam_token)
34# pred: (1, 3, 256, 256) tensor in [0, 1]inference_huggingface.ipynb — loads directly from this Hub pageinference_local.ipynb — loads from a local checkpoint1@misc{ovie2026,
2 title={One View Is Enough! Monocular Training for In-the-Wild Novel View Generation},
3 author={Adrien Ramanana Rahary and Nicolas Dufour and Patrick Perez and David Picard},
4 year={2026},
5 eprint={2603.23488},
6 archivePrefix={arXiv},
7 primaryClass={cs.CV},
8 url={https://arxiv.org/abs/2603.23488},
9}