def test_vert_align_with_verts(self): """ Test vert align vs naive implementation with verts as tensor. """ feats = TestVertAlign.init_feats(10, 256) verts = (torch.rand( (10, 100, 3), dtype=torch.float32, device=feats[0].device) * 2.0 - 1.0) # feats in list out = vert_align(feats, verts, return_packed=True) naive_out = TestVertAlign.vert_align_naive(feats, verts, return_packed=True) self.assertTrue(torch.allclose(out, naive_out)) # feats as tensor out = vert_align(feats[0], verts, return_packed=True) naive_out = TestVertAlign.vert_align_naive(feats[0], verts, return_packed=True) self.assertTrue(torch.allclose(out, naive_out)) out2 = vert_align(feats[0], verts, return_packed=True, align_corners=False) naive_out2 = TestVertAlign.vert_align_naive(feats[0], verts, return_packed=True, align_corners=False) self.assertFalse(torch.allclose(out, out2)) self.assertTrue(torch.allclose(out2, naive_out2))
def test_vert_align_with_meshes(self): """ Test vert align vs naive implementation with meshes. """ meshes = TestVertAlign.init_meshes(10, 1000, 3000) feats = TestVertAlign.init_feats(10, 256) # feats in list out = vert_align(feats, meshes, return_packed=True) naive_out = TestVertAlign.vert_align_naive(feats, meshes, return_packed=True) self.assertTrue(torch.allclose(out, naive_out)) # feats as tensor out = vert_align(feats[0], meshes, return_packed=True) naive_out = TestVertAlign.vert_align_naive(feats[0], meshes, return_packed=True) self.assertTrue(torch.allclose(out, naive_out))
def test_vert_align_with_pointclouds(self): """ Test vert align vs naive implementation with meshes. """ pointclouds = TestVertAlign.init_pointclouds(10, 1000) feats = TestVertAlign.init_feats(10, 256) # feats in list out = vert_align(feats, pointclouds, return_packed=True) naive_out = TestVertAlign.vert_align_naive(feats, pointclouds, return_packed=True) self.assertClose(out, naive_out) # feats as tensor out = vert_align(feats[0], pointclouds, return_packed=True) naive_out = TestVertAlign.vert_align_naive(feats[0], pointclouds, return_packed=True) self.assertClose(out, naive_out)
def sample_features(): vert_align(feats, meshes, return_packed=True) torch.cuda.synchronize()