Beispiel #1
0
def get_item(examples, index):
    pc, label = examples[index]
    src, target, wt = get_knn(pc=pc, num_nbrs=5)

    L, D = create_laplacian(num_points=1024, rows=src, cols=target)
    _, eigen_vec = sp.linalg.eigh(a=L, b=D, eigvals=(1, 20))
    # edges = [(src[i], target[i], {'weight': wt[i]}) for i in range(src.shape[0])]
    # dist_mat1 = create_distance_mat(num_points=1024, edges=edges)
    dist_mat = distance_mat.get_distance_m(1024, src, target, wt)
    dist_mat[dist_mat == np.inf] = 0
    # if np.sum(np.isinf(dist_mat)) > 0.0:
    #     print(f'np.sum(np.isinf(dist_mat))={np.sum(np.isinf(dist_mat))}')
    #     print(f'np.sum(np.isnan(dist_mat))={np.sum(np.isnan(dist_mat))}')
    #     print(f'isnan={np.argwhere(np.isnan(dist_mat))}')
    #     print(f'isinf={np.argwhere(np.isinf(dist_mat))}')
    #     print(f'dist_mat=\n{dist_mat}')
    #     print(f'index={index}\n\n')
    #     print(f'label={label}\n\n')
    # col = np.argwhere(np.isinf(dist_mat))[0, 1]
    plot_pc(pc, eigen_vec[:, 3])
    # plot_pc(pc, dist_mat[:, col])
    # plot_pc(pc)
    spectral_dist = get_spectral_dist(num_eigen=32,
                                      L=L,
                                      D=D,
                                      dist_mat=dist_mat)
    return spectral_dist, label
Beispiel #2
0
 def __getitem__(self, index):
     """
     :return: eigenfunctions & eigenvalues associated with the point cloud.
     """
     pc, label = self.get_pc(index)
     pc = pc[0:self.num_points, :]
     src, target, wt = self.get_knn(pc)
     src, target, wt = self.connect_graph(pc, src, target, wt)
     dist_mat = distance_mat.get_distance_m(self.num_points, src, target,
                                            wt)
     spectral_dist, eigen_val = self.get_gil_dist(dist_mat)
     print(f'Got index {index}')
     return spectral_dist, eigen_val, label
Beispiel #3
0
 def __getitem__(self, index):
     """
     :return: eigenfunctions & eigenvalues associated with the point cloud.
     """
     pc = self.examples[index]
     src, target, wt = self.get_knn(pc)
     src, target, wt = self.connect_graph(pc, src, target, wt)
     dist_mat = distance_mat.get_distance_m(self.num_points, src, target,
                                            wt)
     eigen_val, eigen_vec = eigh(a=dist_mat,
                                 eigvals=(0, self.num_eigen - 1))
     print(f'Got index {index}')
     return eigen_val, eigen_vec
Beispiel #4
0
    pc_files = get_files_list(
        f'../data/modelnet40_ply_hdf5_2048/{name}_files.txt')
    num_nbrs = 5
    num_eigen = 32
    num_points = 2048
    ds = CreateSpectralDist(h5_files=pc_files,
                            num_nbrs=num_nbrs,
                            num_eigen=num_eigen,
                            num_points=num_points)
    for index in range(5):
        pc, label = ds.get_pc(index)
        pc = pc[0:num_points, :]
        src, target, wt = ds.get_knn(pc)
        src, target, wt = ds.connect_graph(pc, src, target, wt)
        L, D = ds.create_laplacian(src, target, wt)
        dist_mat = distance_mat.get_distance_m(num_points, src, target, wt)
        eigen_val_lbo, eigen_vec_lbo = eigh(a=L, b=D, eigvals=(1, num_eigen))
        eigen_val_dist, eigen_vec_dist = eigh(a=dist_mat,
                                              eigvals=(0, num_eigen + 1))
        mat = eigen_vec_lbo.transpose() @ eigen_vec_dist
        plt.figure()
        plt.imshow(abs(mat), extent=[0, 1, 0, 1])
        # plt.imshow(mat)
        # plt.imshow(np.abs(mat1)-np.abs(mat2), extent=[0, 1, 0, 1])
        plt.colorbar()
        plt.title(f'label={label.item(0)}, num_nbrs={num_nbrs}')

    num_nbrs = 10
    num_eigen = 32
    num_points = 2048
    ds = CreateSpectralDist(h5_files=pc_files,
Beispiel #5
0
import numpy as np
import distance_mat

num_vert = 9
src = np.array([0, 0, 1, 1, 2, 2, 2, 3, 3, 4, 5, 6, 6, 7])
trg = np.array([1, 7, 2, 7, 3, 8, 5, 4, 5, 5, 6, 7, 8, 8])
wt = np.array([4, 8, 8, 11, 7, 2, 4, 9, 14, 10, 2, 1, 6, 7])

res = distance_mat.get_distance_m(num_vert, src, trg, wt)

print(res)
#mopile the cpp file first
#c++ -O3 -Wall -shared -std=c++11 -fPIC `python3 -m pybind11 --includes` example.cpp -o example`python3-config --extension-suffix`