MCPcopy Create free account
hub / github.com/UX-Decoder/Semantic-SAM / test

Method test

train_net.py:301–378  ·  view source on GitHub ↗
(cls, cfg, model, evaluators=None)

Source from the content-addressed store, hash-verified

299
300 @classmethod
301 def test(cls, cfg, model, evaluators=None):
302 from utils.misc import hook_metadata, hook_switcher, hook_opt
303 from detectron2.utils.logger import log_every_n_seconds
304 import datetime
305 # build dataloade
306 dataloaders = cls.build_test_loader(cfg, dataset_name=None)
307 dataset_names = cfg['DATASETS']['TEST']
308 model = model.eval().cuda()
309 model_without_ddp = model
310 if not type(model) == BaseModel:
311 model_without_ddp = model.module
312
313 for dataloader, dataset_name in zip(dataloaders, dataset_names):
314 # build evaluator
315 evaluator = build_evaluator(cfg, dataset_name, cfg['OUTPUT_DIR'])
316 evaluator.reset()
317 with torch.no_grad():
318 # setup task
319 if 'sam' in dataset_names:
320 task = 'multi_granularity'
321 else:
322 task = 'interactive'
323
324 hook_switcher(model_without_ddp, dataset_name)
325 # setup timer
326 total = len(dataloader)
327 num_warmup = min(5, total - 1)
328 start_time = time.perf_counter()
329 total_data_time = 0
330 total_compute_time = 0
331 total_eval_time = 0
332 start_data_time = time.perf_counter()
333
334 for idx, batch in enumerate(dataloader):
335 total_data_time += time.perf_counter() - start_data_time
336 if idx == num_warmup:
337 start_time = time.perf_counter()
338 total_data_time = 0
339 total_compute_time = 0
340 total_eval_time = 0
341 start_compute_time = time.perf_counter()
342
343 # forward
344 with torch.autocast(device_type='cuda', dtype=torch.float16):
345 # import ipdb; ipdb.set_trace()
346 outputs = model(batch, inference_task=task)
347
348 total_compute_time += time.perf_counter() - start_compute_time
349 start_eval_time = time.perf_counter()
350
351 evaluator.process(batch, outputs)
352 total_eval_time += time.perf_counter() - start_eval_time
353
354 iters_after_start = idx + 1 - num_warmup * int(idx >= num_warmup)
355 data_seconds_per_iter = total_data_time / iters_after_start
356 compute_seconds_per_iter = total_compute_time / iters_after_start
357 eval_seconds_per_iter = total_eval_time / iters_after_start
358 total_seconds_per_iter = (time.perf_counter() - start_time) / iters_after_start

Callers 2

test_and_save_resultsMethod · 0.95
mainFunction · 0.80

Calls 7

build_evaluatorFunction · 0.90
hook_switcherFunction · 0.90
build_test_loaderMethod · 0.80
resetMethod · 0.45
processMethod · 0.45
evaluateMethod · 0.45
trainMethod · 0.45

Tested by 1

test_and_save_resultsMethod · 0.76