facebookresearch / pytorch3d

PyTorch3D is FAIR's library of reusable components for deep learning with 3D data
https://pytorch3d.org/
Other
8.7k stars 1.3k forks source link

torch3d consumes a lot of memory when loading obj's #1774

Closed HongLouyemeng closed 5 months ago

HongLouyemeng commented 5 months ago

Hi, My obj file is only 2.9GB,but torch3d is consuming 46GB of my memory (98%) loading mesh info and no texture info. after 98% memory cost,I get a blank image after rendering with the loaded mesh via cuda

import torch
from typing import List, Tuple
from pytorch3d.structures import Meshes
from pytorch3d.renderer import (
    FoVPerspectiveCameras,
    Materials,
    RasterizationSettings,
    MeshRenderer,
    MeshRasterizer,
    SoftPhongShader,
    Textures,
    look_at_view_transform,SoftSilhouetteShader
)
import matplotlib.pyplot as plt
import torch.nn.functional as F
from pytorch3d.renderer import PerspectiveCameras,TexturesAtlas
from pytorch3d.io import load_obj,load_objs_as_meshes
obj_path = "data.obj"
device = 'cuda:0'
camera  = torch.load('test (1).pth')
rotation_matrix = camera['Camera.001']['R']
translation_vector = camera['Camera.001']['T']
focal = camera['Camera.001']['focal']
principal = camera['Camera.001']['principal']
cameras = PerspectiveCameras(R=rotation_matrix, T=translation_vector, focal_length=focal, principal_point=principal , device=device)
verts, faces_idx, aux= load_obj(obj_path,load_textures=False,device=device)
faces = faces_idx.verts_idx
mesh = Meshes(
    verts=[verts],
    faces=[faces]
)
mesh.textures = torch.zeros_like(verts)[None]
raster_settings = RasterizationSettings(
    image_size=(480,640),
    blur_radius=0.0,
    faces_per_pixel=1,
    perspective_correct=False,
)
renderer = MeshRenderer(
    rasterizer=MeshRasterizer(
        cameras=cameras,
        raster_settings=raster_settings
    ),
    shader=SoftSilhouetteShader()
    )
target_images = renderer(mesh)
plt.imshow(target_images[0].cpu())
plt.show()
plt.imshow(target_images[0].cpu())
plt.show()
plt.savefig('1.jpg')�