chenfengxu714 / SqueezeSegV3

BSD 2-Clause "Simplified" License
220 stars 50 forks source link

How can I get Data distribution? #27

Open slayerlpj opened 2 years ago

slayerlpj commented 2 years ago

Hi! How can I get data distribution on my dataset? Just like SSGV321.yaml img_means: #range_x,y,z,signal

chenfengxu714 commented 2 years ago

I briefly write the pseudo code you may refer to.

with torch.no_grad(): end = time.time() meanr = 0. stdr = 0. meanx = 0. meany = 0. meanz = 0. stdx = 0. stdy = 0. stdz = 0. meane = 0. stde = 0.

  for i, (proj_in, proj_mask, _, _, path_seq, path_name, p_x, p_y, proj_range, unproj_range, proj_xyz, unproj_xyz, proj_remission, unproj_remission, npoints) in enumerate(loader):

    print("Number of Points: " , npoints)

    meanr += unproj_range[:,:npoints].mean()
    stdr += unproj_range[:,:npoints].std()
    meanx += unproj_xyz[:,:npoints,0].mean()
    stdx += unproj_xyz[:,:npoints,0].std()
    meany += unproj_xyz[:,:npoints,1].mean()
    stdy += unproj_xyz[:,:npoints,1].std()
    meanz += unproj_xyz[:,:npoints,2].mean()
    stdz += unproj_xyz[:,:npoints,2].std()
    meane += unproj_remission[:,:npoints].mean()
    stde += unproj_remission[:,:npoints].std()

  meanr /= len(loader.dataset)
  stdr /= len(loader.dataset)     
  meanx /= len(loader.dataset)
  stdx /= len(loader.dataset)
  meany /= len(loader.dataset)
  stdy /= len(loader.dataset)
  meanz /= len(loader.dataset)
  stdz /= len(loader.dataset)
  meane /= len(loader.dataset)
  stde /= len(loader.dataset)

  print("meanr: " + str(meanr))
  print("meanx: " + str(meanx))
  print("meany: " + str(meany))
  print("meanz: " + str(meanz))
  print("meane: " + str(meane))

  print("stdr: " + str(stdr))
  print("stdx: " + str(stdx))
  print("stdy: " + str(stdy))
  print("stdz: " + str(stdz))            
  print("stde: " + str(stde))

  print()
slayerlpj commented 2 years ago

Thank you!!!!!!