示例#1
0
    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))
示例#2
0
    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))
示例#3
0
    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)
示例#4
0
 def sample_features():
     vert_align(feats, meshes, return_packed=True)
     torch.cuda.synchronize()