model = DeepVoxels(lifting_img_dims=proj_image_dims, frustrum_img_dims=proj_image_dims, grid_dims=grid_dims, use_occlusion_net=not opt.no_occlusion_net, num_grid_feats=opt.num_grid_feats, nf0=opt.nf0, img_sidelength=input_image_dims[0]) model.to(device) # Projection module projection = ProjectionHelper(projection_intrinsic=proj_intrinsic, lifting_intrinsic=lift_intrinsic, depth_min=depth_min, depth_max=depth_max, projection_image_dims=proj_image_dims, lifting_image_dims=proj_image_dims, grid_dims=grid_dims, voxel_size=voxel_size, device=device, frustrum_depth=frustrum_depth, near_plane=near_plane) # L1 loss criterionL1 = nn.L1Loss(reduction='mean').to(device) # GAN loss criterionGAN = GANLoss().to(device) discriminator = PatchDiscriminator(input_nc=3).to(device) # Optimizers optimizerD = torch.optim.Adam(discriminator.parameters(), lr=opt.lr)
proj_image_dims = [68, 50] # TODO: load intrinsic from txt intrinsic = util.make_intrinsic(opt.fx, opt.fy, opt.mx, opt.my) intrinsic = util.adjust_intrinsic(intrinsic, [opt.intrinsic_image_width, opt.intrinsic_image_height], proj_image_dims) intrinsic = intrinsic.cuda() grid_dims = [opt.grid_dimX, opt.grid_dimY, opt.grid_dimZ] column_height = opt.grid_dimZ batch_size = opt.batch_size num_images = opt.num_nearest_images grid_centerX = opt.grid_dimX // 2 grid_centerY = opt.grid_dimY // 2 color_mean = ENET_TYPES[opt.model2d_type][1] color_std = ENET_TYPES[opt.model2d_type][2] num_classes = opt.num_classes projection = ProjectionHelper(intrinsic, opt.depth_min, opt.depth_max, proj_image_dims, grid_dims, opt.voxel_size) def load_frames_multi(data_path, frame_indices, depth_images, color_images, poses, color_mean, color_std): num_images = 1 depth_files = [os.path.join(data_path, 'depth20.png')] color_files = [os.path.join(data_path, 'color20.jpg')] pose_files = [os.path.join(data_path, 'pose20.txt')] # TODO: change batch_size # batch_size = frame_indices.size(0) * num_images batch_size = 1 depth_image_dims = [depth_images.shape[2], depth_images.shape[1]] color_image_dims = [color_images.shape[3], color_images.shape[2]] normalize = transforms.Normalize(mean=color_mean, std=color_std) # load data
mesh_vertices = np.delete(mesh_vertices, 3, 1) pts = np.ones((mesh_vertices.shape[0], 4)) pts[:, 0:3] = mesh_vertices[:, 0:3] pts = np.dot(pts, axis_align_matrix.transpose()) # Nx4 mesh_vertices[:, 0:3] = pts[:, 0:3] mesh_vertices = mesh_vertices.astype('float32') return mesh_vertices if __name__ == '__main__': for scene_id in os.listdir(scene_path): intrinsic_str = read_lines_from_file(rawdata_path + scene_id + '/intrinsic_depth.txt') fx = float(intrinsic_str[0].split()[0]) fy = float(intrinsic_str[1].split()[1]) mx = float(intrinsic_str[0].split()[2]) my = float(intrinsic_str[1].split()[2]) intrinsic = util.make_intrinsic(fx, fy, mx, my) intrinsic = util.adjust_intrinsic( intrinsic, [opt.intrinsic_image_width, opt.intrinsic_image_height], proj_image_dims) intrinsic = intrinsic.cuda() projection = ProjectionHelper(intrinsic, opt.depth_min, opt.depth_max, proj_image_dims) vertices = scannet_projection(intrinsic, projection, scene_id) save_path = "/home/extra/extra/outputs/" if not os.path.exists(save_path): os.makedirs(save_path) np.save(save_path + scene_id + "_features.npy", vertices) print("finished")