Get rid of duplicate test data directory initialization

Summary: Simplify finding the data directories in the tests.

Reviewed By: nikhilaravi

Differential Revision: D27634293

fbshipit-source-id: dc308a7c86c41e6fae56a2ab58187c9f0335b575
This commit is contained in:
Rong Rong (AI Infra) 2021-04-08 20:02:16 -07:00 committed by Facebook GitHub Bot
parent 1216b5765a
commit dd8343922e
3 changed files with 17 additions and 23 deletions

View File

@ -24,6 +24,9 @@ from pytorch3d.renderer import TexturesAtlas, TexturesUV, TexturesVertex
from pytorch3d.structures import Meshes, join_meshes_as_batch from pytorch3d.structures import Meshes, join_meshes_as_batch
from pytorch3d.utils import torus from pytorch3d.utils import torus
DATA_DIR = get_tests_dir() / "data"
TUTORIAL_DATA_DIR = get_pytorch3d_dir() / "docs/tutorials/data"
class TestMeshObjIO(TestCaseMixin, unittest.TestCase): class TestMeshObjIO(TestCaseMixin, unittest.TestCase):
def test_load_obj_simple(self): def test_load_obj_simple(self):
@ -479,9 +482,8 @@ class TestMeshObjIO(TestCaseMixin, unittest.TestCase):
self.assertEqual(actual_file, expected_file) self.assertEqual(actual_file, expected_file)
def test_load_mtl(self): def test_load_mtl(self):
DATA_DIR = get_pytorch3d_dir() / "docs/tutorials/data"
obj_filename = "cow_mesh/cow.obj" obj_filename = "cow_mesh/cow.obj"
filename = os.path.join(DATA_DIR, obj_filename) filename = os.path.join(TUTORIAL_DATA_DIR, obj_filename)
verts, faces, aux = load_obj(filename) verts, faces, aux = load_obj(filename)
materials = aux.material_colors materials = aux.material_colors
tex_maps = aux.texture_images tex_maps = aux.texture_images
@ -563,9 +565,8 @@ class TestMeshObjIO(TestCaseMixin, unittest.TestCase):
def test_load_mtl_texture_atlas_compare_softras(self): def test_load_mtl_texture_atlas_compare_softras(self):
# Load saved texture atlas created with SoftRas. # Load saved texture atlas created with SoftRas.
device = torch.device("cuda:0") device = torch.device("cuda:0")
DATA_DIR = get_pytorch3d_dir() obj_filename = TUTORIAL_DATA_DIR / "cow_mesh/cow.obj"
obj_filename = DATA_DIR / "docs/tutorials/data/cow_mesh/cow.obj" expected_atlas_fname = DATA_DIR / "cow_texture_atlas_softras.pt"
expected_atlas_fname = DATA_DIR / "tests/data/cow_texture_atlas_softras.pt"
# Note, the reference texture atlas generated using SoftRas load_obj function # Note, the reference texture atlas generated using SoftRas load_obj function
# is too large to check in to the repo. Download the file to run the test locally. # is too large to check in to the repo. Download the file to run the test locally.
@ -594,9 +595,8 @@ class TestMeshObjIO(TestCaseMixin, unittest.TestCase):
self.assertClose(expected_atlas, aux.texture_atlas, atol=5e-5) self.assertClose(expected_atlas, aux.texture_atlas, atol=5e-5)
def test_load_mtl_noload(self): def test_load_mtl_noload(self):
DATA_DIR = get_pytorch3d_dir() / "docs/tutorials/data"
obj_filename = "cow_mesh/cow.obj" obj_filename = "cow_mesh/cow.obj"
filename = os.path.join(DATA_DIR, obj_filename) filename = os.path.join(TUTORIAL_DATA_DIR, obj_filename)
verts, faces, aux = load_obj(filename, load_textures=False) verts, faces, aux = load_obj(filename, load_textures=False)
self.assertTrue(aux.material_colors is None) self.assertTrue(aux.material_colors is None)
@ -632,7 +632,6 @@ class TestMeshObjIO(TestCaseMixin, unittest.TestCase):
self.assertTrue(aux.verts_uvs is None) self.assertTrue(aux.verts_uvs is None)
def test_load_obj_mlt_no_image(self): def test_load_obj_mlt_no_image(self):
DATA_DIR = get_tests_dir() / "data"
obj_filename = "obj_mtl_no_image/model.obj" obj_filename = "obj_mtl_no_image/model.obj"
filename = os.path.join(DATA_DIR, obj_filename) filename = os.path.join(DATA_DIR, obj_filename)
R = 8 R = 8
@ -661,7 +660,6 @@ class TestMeshObjIO(TestCaseMixin, unittest.TestCase):
self.assertEqual(list(aux.material_colors.keys()), ["material_1"]) self.assertEqual(list(aux.material_colors.keys()), ["material_1"])
def test_load_obj_missing_texture(self): def test_load_obj_missing_texture(self):
DATA_DIR = get_tests_dir() / "data"
obj_filename = "missing_files_obj/model.obj" obj_filename = "missing_files_obj/model.obj"
filename = os.path.join(DATA_DIR, obj_filename) filename = os.path.join(DATA_DIR, obj_filename)
with self.assertWarnsRegex(UserWarning, "Texture file does not exist"): with self.assertWarnsRegex(UserWarning, "Texture file does not exist"):
@ -676,7 +674,6 @@ class TestMeshObjIO(TestCaseMixin, unittest.TestCase):
self.assertTrue(torch.allclose(faces.verts_idx, expected_faces)) self.assertTrue(torch.allclose(faces.verts_idx, expected_faces))
def test_load_obj_missing_texture_noload(self): def test_load_obj_missing_texture_noload(self):
DATA_DIR = get_tests_dir() / "data"
obj_filename = "missing_files_obj/model.obj" obj_filename = "missing_files_obj/model.obj"
filename = os.path.join(DATA_DIR, obj_filename) filename = os.path.join(DATA_DIR, obj_filename)
verts, faces, aux = load_obj(filename, load_textures=False) verts, faces, aux = load_obj(filename, load_textures=False)
@ -692,7 +689,6 @@ class TestMeshObjIO(TestCaseMixin, unittest.TestCase):
self.assertTrue(aux.texture_images is None) self.assertTrue(aux.texture_images is None)
def test_load_obj_missing_mtl(self): def test_load_obj_missing_mtl(self):
DATA_DIR = get_tests_dir() / "data"
obj_filename = "missing_files_obj/model2.obj" obj_filename = "missing_files_obj/model2.obj"
filename = os.path.join(DATA_DIR, obj_filename) filename = os.path.join(DATA_DIR, obj_filename)
with self.assertWarnsRegex(UserWarning, "Mtl file does not exist"): with self.assertWarnsRegex(UserWarning, "Mtl file does not exist"):
@ -707,7 +703,6 @@ class TestMeshObjIO(TestCaseMixin, unittest.TestCase):
self.assertTrue(torch.allclose(faces.verts_idx, expected_faces)) self.assertTrue(torch.allclose(faces.verts_idx, expected_faces))
def test_load_obj_missing_mtl_noload(self): def test_load_obj_missing_mtl_noload(self):
DATA_DIR = get_tests_dir() / "data"
obj_filename = "missing_files_obj/model2.obj" obj_filename = "missing_files_obj/model2.obj"
filename = os.path.join(DATA_DIR, obj_filename) filename = os.path.join(DATA_DIR, obj_filename)
verts, faces, aux = load_obj(filename, load_textures=False) verts, faces, aux = load_obj(filename, load_textures=False)
@ -764,8 +759,7 @@ class TestMeshObjIO(TestCaseMixin, unittest.TestCase):
mesh.textures.atlas_padded(), mesh3.textures.atlas_padded() mesh.textures.atlas_padded(), mesh3.textures.atlas_padded()
) )
DATA_DIR = get_pytorch3d_dir() / "docs/tutorials/data" obj_filename = TUTORIAL_DATA_DIR / "cow_mesh/cow.obj"
obj_filename = DATA_DIR / "cow_mesh/cow.obj"
mesh = load_objs_as_meshes([obj_filename]) mesh = load_objs_as_meshes([obj_filename])
mesh3 = load_objs_as_meshes([obj_filename, obj_filename, obj_filename]) mesh3 = load_objs_as_meshes([obj_filename, obj_filename, obj_filename])
@ -803,7 +797,7 @@ class TestMeshObjIO(TestCaseMixin, unittest.TestCase):
check_triple(mesh_atlas, mesh_atlas3) check_triple(mesh_atlas, mesh_atlas3)
# Test load multiple meshes with textures into a batch. # Test load multiple meshes with textures into a batch.
teapot_obj = DATA_DIR / "teapot.obj" teapot_obj = TUTORIAL_DATA_DIR / "teapot.obj"
mesh_teapot = load_objs_as_meshes([teapot_obj]) mesh_teapot = load_objs_as_meshes([teapot_obj])
teapot_verts, teapot_faces = mesh_teapot.get_mesh_verts_faces(0) teapot_verts, teapot_faces = mesh_teapot.get_mesh_verts_faces(0)
mix_mesh = load_objs_as_meshes([obj_filename, teapot_obj], load_textures=False) mix_mesh = load_objs_as_meshes([obj_filename, teapot_obj], load_textures=False)
@ -863,8 +857,8 @@ class TestMeshObjIO(TestCaseMixin, unittest.TestCase):
def bm_load_texture_atlas(R: int): def bm_load_texture_atlas(R: int):
device = torch.device("cuda:0") device = torch.device("cuda:0")
torch.cuda.set_device(device) torch.cuda.set_device(device)
DATA_DIR = "/data/users/nikhilar/fbsource/fbcode/vision/fair/pytorch3d/docs/" data_dir = "/data/users/nikhilar/fbsource/fbcode/vision/fair/pytorch3d/docs/"
obj_filename = os.path.join(DATA_DIR, "tutorials/data/cow_mesh/cow.obj") obj_filename = os.path.join(data_dir, "tutorials/data/cow_mesh/cow.obj")
torch.cuda.synchronize() torch.cuda.synchronize()
def load(): def load():

View File

@ -9,6 +9,7 @@ from pytorch3d.ops.marching_cubes import marching_cubes_naive
USE_SCIKIT = False USE_SCIKIT = False
DATA_DIR = get_tests_dir() / "data"
def convert_to_local(verts, volume_dim): def convert_to_local(verts, volume_dim):
@ -640,7 +641,6 @@ class TestMarchingCubes(TestCaseMixin, unittest.TestCase):
volume, isolevel=64, return_local_coords=False volume, isolevel=64, return_local_coords=False
) )
DATA_DIR = get_tests_dir() / "data"
data_filename = "test_marching_cubes_data/sphere_level64.pickle" data_filename = "test_marching_cubes_data/sphere_level64.pickle"
filename = os.path.join(DATA_DIR, data_filename) filename = os.path.join(DATA_DIR, data_filename)
with open(filename, "rb") as file: with open(filename, "rb") as file:
@ -676,7 +676,6 @@ class TestMarchingCubes(TestCaseMixin, unittest.TestCase):
volume = volume.permute(0, 3, 2, 1) # (B, D, H, W) volume = volume.permute(0, 3, 2, 1) # (B, D, H, W)
verts, faces = marching_cubes_naive(volume, isolevel=0.001) verts, faces = marching_cubes_naive(volume, isolevel=0.001)
DATA_DIR = get_tests_dir() / "data"
data_filename = "test_marching_cubes_data/double_ellipsoid.pickle" data_filename = "test_marching_cubes_data/double_ellipsoid.pickle"
filename = os.path.join(DATA_DIR, data_filename) filename = os.path.join(DATA_DIR, data_filename)
with open(filename, "rb") as file: with open(filename, "rb") as file:

View File

@ -51,6 +51,7 @@ from pytorch3d.utils.torus import torus
# All saved images have prefix DEBUG_ # All saved images have prefix DEBUG_
DEBUG = False DEBUG = False
DATA_DIR = get_tests_dir() / "data" DATA_DIR = get_tests_dir() / "data"
TUTORIAL_DATA_DIR = get_pytorch3d_dir() / "docs/tutorials/data"
class TestRenderMeshes(TestCaseMixin, unittest.TestCase): class TestRenderMeshes(TestCaseMixin, unittest.TestCase):
@ -388,8 +389,8 @@ class TestRenderMeshes(TestCaseMixin, unittest.TestCase):
The pupils in the eyes of the cow should always be looking to the left. The pupils in the eyes of the cow should always be looking to the left.
""" """
device = torch.device("cuda:0") device = torch.device("cuda:0")
obj_dir = get_pytorch3d_dir() / "docs/tutorials/data"
obj_filename = obj_dir / "cow_mesh/cow.obj" obj_filename = TUTORIAL_DATA_DIR / "cow_mesh/cow.obj"
# Load mesh + texture # Load mesh + texture
verts, faces, aux = load_obj( verts, faces, aux = load_obj(
@ -970,8 +971,8 @@ class TestRenderMeshes(TestCaseMixin, unittest.TestCase):
Also check that the backward pass for texture atlas rendering is differentiable. Also check that the backward pass for texture atlas rendering is differentiable.
""" """
device = torch.device("cuda:0") device = torch.device("cuda:0")
obj_dir = get_pytorch3d_dir() / "docs/tutorials/data"
obj_filename = obj_dir / "cow_mesh/cow.obj" obj_filename = TUTORIAL_DATA_DIR / "cow_mesh/cow.obj"
# Load mesh and texture as a per face texture atlas. # Load mesh and texture as a per face texture atlas.
verts, faces, aux = load_obj( verts, faces, aux = load_obj(