MCPcopy Create free account
hub / github.com/FoundationVision/ByteTrack / _forward_single_image

Method _forward_single_image

tutorials/motr/motr.py:487–570  ·  view source on GitHub ↗
(self, samples, track_instances: Instances)

Source from the content-addressed store, hash-verified

485 for a, b in zip(outputs_class[:-1], outputs_coord[:-1])]
486
487 def _forward_single_image(self, samples, track_instances: Instances):
488 features, pos = self.backbone(samples)
489 src, mask = features[-1].decompose()
490 assert mask is not None
491
492 srcs = []
493 masks = []
494 for l, feat in enumerate(features):
495 src, mask = feat.decompose()
496 srcs.append(self.input_proj[l](src))
497 masks.append(mask)
498 assert mask is not None
499
500 if self.num_feature_levels > len(srcs):
501 _len_srcs = len(srcs)
502 for l in range(_len_srcs, self.num_feature_levels):
503 if l == _len_srcs:
504 src = self.input_proj[l](features[-1].tensors)
505 else:
506 src = self.input_proj[l](srcs[-1])
507 m = samples.mask
508 mask = F.interpolate(m[None].float(), size=src.shape[-2:]).to(torch.bool)[0]
509 pos_l = self.backbone[1](NestedTensor(src, mask)).to(src.dtype)
510 srcs.append(src)
511 masks.append(mask)
512 pos.append(pos_l)
513
514 hs, init_reference, inter_references, enc_outputs_class, enc_outputs_coord_unact = self.transformer(srcs, masks, pos, track_instances.query_pos, ref_pts=track_instances.ref_pts)
515
516 outputs_classes = []
517 outputs_coords = []
518 for lvl in range(hs.shape[0]):
519 if lvl == 0:
520 reference = init_reference
521 else:
522 reference = inter_references[lvl - 1]
523 reference = inverse_sigmoid(reference)
524 outputs_class = self.class_embed[lvl](hs[lvl])
525 tmp = self.bbox_embed[lvl](hs[lvl])
526 if reference.shape[-1] == 4:
527 tmp += reference
528 else:
529 assert reference.shape[-1] == 2
530 tmp[..., :2] += reference
531 outputs_coord = tmp.sigmoid()
532 outputs_classes.append(outputs_class)
533 outputs_coords.append(outputs_coord)
534 outputs_class = torch.stack(outputs_classes)
535 outputs_coord = torch.stack(outputs_coords)
536
537 ref_pts_all = torch.cat([init_reference[None], inter_references[:, :, :, :2]], dim=0)
538 out = {'pred_logits': outputs_class[-1], 'pred_boxes': outputs_coord[-1], 'ref_pts': ref_pts_all[5]}
539 if self.aux_loss:
540 out['aux_outputs'] = self._set_aux_loss(outputs_class, outputs_coord)
541
542 with torch.no_grad():
543 if self.training:
544 track_scores = outputs_class[-1, 0, :].sigmoid().max(dim=-1).values

Callers 2

forwardMethod · 0.95

Calls 5

_set_aux_lossMethod · 0.95
updateMethod · 0.45

Tested by

no test coverage detected