MCPcopy Index your code
hub / github.com/OpenMeshLab/MeshXL / evaluate

Function evaluate

eval_utils/sample_generation.py:28–82  ·  view source on GitHub ↗
(
    args,
    curr_epoch,
    model,
    accelerator,
    dataset_loader,
    logout=print,
    curr_train_iter=-1,
)

Source from the content-addressed store, hash-verified

26
27@torch.no_grad()
28def evaluate(
29 args,
30 curr_epoch,
31 model,
32 accelerator,
33 dataset_loader,
34 logout=print,
35 curr_train_iter=-1,
36):
37
38 net_device = next(model.parameters()).device
39 num_batches = len(dataset_loader)
40
41 time_delta = SmoothedValue(window_size=10)
42
43 storage_dir = os.path.join(args.checkpoint_dir, 'sampled')
44 if accelerator.is_main_process:
45 os.makedirs(storage_dir, exist_ok = True)
46
47 model.eval()
48 accelerator.wait_for_everyone()
49
50 # do sampling
51 curr_time = time.time()
52
53 set_seed(accelerator.process_index)
54
55 for sample_round in tqdm.tqdm(range(args.sample_rounds)):
56
57 outputs = model(None, num_return_sequences=args.batchsize_per_gpu, is_eval=True, is_generate=True)
58
59 batch_size = outputs['recon_faces'].shape[0]
60 generated_faces = outputs["recon_faces"]
61
62 for batch_id in range(batch_size):
63 process_info = f'{accelerator.process_index:04d}'
64 sample_info = f'{sample_round:04d}'
65 batch_sample_info = f'{batch_id:04d}'
66 sample_id = '_'.join(
67 [
68 process_info,
69 sample_info,
70 batch_sample_info
71 ]
72 )
73 process_mesh(
74 generated_faces[batch_id],
75 os.path.join(storage_dir, f'{sample_id}_generated.ply')
76 )
77
78 # Memory intensive as it gathers point cloud GT tensor across all ranks
79 time_delta.update(time.time() - curr_time)
80 accelerator.wait_for_everyone()
81
82 return {}, {}

Callers

nothing calls this directly

Calls 3

updateMethod · 0.95
SmoothedValueClass · 0.90
process_meshFunction · 0.85

Tested by

no test coverage detected