def execute(self, tracker: Tracker, sequence: Sequence, force: bool = False, callback: Callable = None): results = self.results(tracker, sequence) with self._get_runtime(tracker, sequence) as runtime: for i in range(1, self.repetitions+1): name = "%s_%03d" % (sequence.name, i) if Trajectory.exists(results, name) and not force: continue if self._can_stop(tracker, sequence): return trajectory = Trajectory(sequence.length) _, properties, elapsed = runtime.initialize(sequence.frame(0), self._get_initialization(sequence, 0)) properties["time"] = elapsed trajectory.set(0, Special(Special.INITIALIZATION), properties) for frame in range(1, sequence.length): region, properties, elapsed = runtime.update(sequence.frame(frame)) properties["time"] = elapsed trajectory.set(frame, region, properties) trajectory.write(results, name) if callback: callback(i / self.repetitions)
def execute(self, tracker: Tracker, sequence: Sequence, force: bool = False, callback: Callable = None): results = self.results(tracker, sequence) forward, backward = find_anchors(sequence, self.anchor) if len(forward) == 0 and len(backward) == 0: raise RuntimeError("Sequence does not contain any anchors") total = len(forward) + len(backward) current = 0 with self._get_runtime(tracker, sequence) as runtime: for i, reverse in [(f, False) for f in forward] + [(f, True) for f in backward]: name = "%s_%08d" % (sequence.name, i) if Trajectory.exists(results, name) and not force: continue if reverse: proxy = FrameMapSequence(sequence, list(reversed(range(0, i + 1)))) else: proxy = FrameMapSequence(sequence, list(range(i, sequence.length))) trajectory = Trajectory(proxy.length) _, properties, elapsed = runtime.initialize( proxy.frame(0), self._get_initialization(proxy, 0)) properties["time"] = elapsed trajectory.set(0, Special(Special.INITIALIZATION), properties) for frame in range(1, proxy.length): region, properties, elapsed = runtime.update( proxy.frame(frame)) properties["time"] = elapsed trajectory.set(frame, region, properties) trajectory.write(results, name) current = current + 1 if callback: callback(current / total)
def execute(self, tracker: Tracker, sequence: Sequence, force: bool = False, callback: Callable = None): results = self.results(tracker, sequence) with self._get_runtime(tracker, sequence) as runtime: for i in range(1, self.repetitions+1): name = "%s_%03d" % (sequence.name, i) if Trajectory.exists(results, name) and not force: continue if self._can_stop(tracker, sequence): return trajectory = Trajectory(sequence.length) frame = 0 while frame < sequence.length: _, properties, elapsed = runtime.initialize(sequence.frame(frame), self._get_initialization(sequence, frame)) properties["time"] = elapsed trajectory.set(frame, Special(Special.INITIALIZATION), properties) frame = frame + 1 while frame < sequence.length: region, properties, elapsed = runtime.update(sequence.frame(frame)) properties["time"] = elapsed if calculate_overlap(region, sequence.groundtruth(frame), sequence.size) <= self.failure_overlap: trajectory.set(frame, Special(Special.FAILURE), properties) frame = frame + self.skip_initialize if self.skip_tags: while frame < sequence.length: if not [t for t in sequence.tags(frame) if t in self.skip_tags]: break frame = frame + 1 break else: trajectory.set(frame, region, properties) frame = frame + 1 if callback: callback(i / self.repetitions) trajectory.write(results, name)