Downloads · 30 days
45
1% of all-time downloads
facebook/vfusion3d
vfusion3d is a image-to-3d model from facebook. Use it for the image-to-3d task on the model card, and read the license before you ship it in a product. It is set up for transformers. The card lists the license as cc-by-nc-2.0.
Downloads · 30 days
45
1% of all-time downloads
All-time downloads
3.7K
Public
Parameters
452M
1.9 GB on disk
Likes
65
Public
Click a slice to open those files.
.safetensors1.8 GB · 97%
From the Hugging Face model README
VFusion3D is a large, feed-forward 3D generative model trained with a small amount of 3D data and a large volume of synthetic multi-view data. It is the first work exploring scalable 3D generative/reconstruction models as a step towards a 3D foundation.
VFusion3D: Learning Scalable 3D Generative Models from Video Diffusion Models<br> Junlin Han, Filippos Kokkinos, Philip Torr<br> GenAI, Meta and TVG, University of Oxford<br> European Conference on Computer Vision (ECCV), 2024
Getting started with VFusion3D is super easy! 🤗 Here’s how you can use the model with Hugging Face:
Depending on your needs, you may want to enable specific features like mesh generation or video rendering. We've got you covered with these additional packages:
!pip --quiet install imageio[ffmpeg] PyMCubes trimesh rembg[gpu,cli] kiui
import torch
from transformers import AutoModel, AutoProcessor
# load the model and processor
model = AutoModel.from_pretrained("jadechoghari/vfusion3d", trust_remote_code=True)
processor = AutoProcessor.from_pretrained("jadechoghari/vfusion3d")
# download and preprocess the image
import requests
from PIL import Image
from io import BytesIO
image_url = 'https://sm.ign.com/ign_nordic/cover/a/avatar-gen/avatar-generations_prsz.jpg'
response = requests.get(image_url)
image = Image.open(BytesIO(response.content))
# preprocess the image and get the source camera
image, source_camera = processor(image)
# generate planes (default output)
output_planes = model(image, source_camera)
print("Planes shape:", output_planes.shape)
# generate a 3D mesh
output_planes, mesh_path = model(image, source_camera, export_mesh=True)
print("Planes shape:", output_planes.shape)
print("Mesh saved at:", mesh_path)
# Generate a video
output_planes, video_path = model(image, source_camera, export_video=True)
print("Planes shape:", output_planes.shape)
print("Video saved at:", video_path)
export_mesh=True, and you'll get a .obj file ready to roll. You can also customize the mesh resolution by adjusting the mesh_size parameter.export_video=True, and you'll receive a beautifully rendered video from multiple angles. You can tweak render_size and fps to get the video just right.Check out our demo app to see VFusion3D in action! 🤗
If you find this work useful, please cite us:
@article{han2024vfusion3d,
title={VFusion3D: Learning Scalable 3D Generative Models from Video Diffusion Models},
author={Junlin Han and Filippos Kokkinos and Philip Torr},
journal={European Conference on Computer Vision (ECCV)},
year={2024}
}