MCPcopy Create free account
hub / github.com/PeizeSun/TransTrack / evaluate

Function evaluate

engine_track.py:91–209  ·  view source on GitHub ↗
(model, criterion, postprocessors, data_loader, base_ds, device, output_dir, tracker=None, 
             phase='train', det_val=False, fp16=False)

Source from the content-addressed store, hash-verified

89
90@torch.no_grad()
91def evaluate(model, criterion, postprocessors, data_loader, base_ds, device, output_dir, tracker=None,
92 phase='train', det_val=False, fp16=False):
93 tensor_type = torch.cuda.HalfTensor if fp16 else torch.cuda.FloatTensor
94 model.eval()
95# criterion.eval()
96
97 metric_logger = utils.MetricLogger(delimiter=" ")
98# metric_logger.add_meter('class_error', utils.SmoothedValue(window_size=1, fmt='{value:.2f}'))
99 header = 'Test:'
100
101 iou_types = tuple(k for k in ('segm', 'bbox') if k in postprocessors.keys())
102 coco_evaluator = CocoEvaluator(base_ds, iou_types)
103 # coco_evaluator.coco_eval[iou_types[0]].params.iouThrs = [0, 0.1, 0.5, 0.75]
104
105 panoptic_evaluator = None
106 if 'panoptic' in postprocessors.keys():
107 panoptic_evaluator = PanopticEvaluator(
108 data_loader.dataset.ann_file,
109 data_loader.dataset.ann_folder,
110 output_dir=os.path.join(output_dir, "panoptic_eval"),
111 )
112
113 res_tracks = dict()
114 pre_embed = None
115 for samples, targets in metric_logger.log_every(data_loader, 10, header):
116 # pre process for track.
117 if tracker is not None:
118 if phase != 'train':
119 assert samples.tensors.shape[0] == 1, "Now only support inference of batchsize 1."
120 frame_id = targets[0].get("frame_id", None)
121 assert frame_id is not None
122 frame_id = frame_id.item()
123 if frame_id == 1:
124 tracker.reset_all()
125 pre_embed = None
126
127 samples = samples.to(device)
128 samples.tensors = samples.tensors.type(tensor_type)
129 samples.mask = samples.mask.type(tensor_type)
130
131 targets = [{k: v.to(device) for k, v in t.items()} for t in targets]
132
133 with torch.cuda.amp.autocast(enabled=fp16):
134 if det_val:
135 outputs = model(samples)
136 else:
137 outputs, pre_embed = model(samples, pre_embed)
138
139# loss_dict = criterion(outputs, targets)
140
141# weight_dict = criterion.weight_dict
142
143# reduce losses over all GPUs for logging purposes
144# loss_dict_reduced = utils.reduce_dict(loss_dict)
145# loss_dict_reduced_scaled = {k: v * weight_dict[k]
146# for k, v in loss_dict_reduced.items() if k in weight_dict}
147# loss_dict_reduced_unscaled = {f'{k}_unscaled': v
148# for k, v in loss_dict_reduced.items()}

Callers 1

mainFunction · 0.90

Calls 14

log_everyMethod · 0.95
updateMethod · 0.95
updateMethod · 0.95
accumulateMethod · 0.95
summarizeMethod · 0.95
summarizeMethod · 0.95
CocoEvaluatorClass · 0.90
PanopticEvaluatorClass · 0.90
toMethod · 0.80
reset_allMethod · 0.45

Tested by

no test coverage detected