def __init__(self, detector: Config, matcher: Config, encoders: List[Config], predictor: Config, **kwargs): # Allow detector to be None detector = build_detector(detector) if detector is not None else None matcher = build_matcher(matcher) encoders = [build_encoder(encoder_cfg) for encoder_cfg in encoders] predictor = build_predictor(predictor) if 'detection_filters' in kwargs.keys(): kwargs['detection_filters'] = [ build_detection_filter(filter_cfg) for filter_cfg in kwargs['detection_filters'] ] super().__init__(detector, encoders, matcher, predictor, **kwargs)
def __init__(self, detector: Config, encoders: List[Config], matcher: Config, predictor: Config, central_address: str, **kwargs): self.detector = build_detector(detector) self.encoders = [build_encoder(encoder) for encoder in encoders] self.detection_filters = [] self.identifier = random.randint(0, 1000000) self.zmq_context = zmq.Context() self.subscribe_socket = self.zmq_context.socket(zmq.SUB) self.subscribe_socket.connect('tcp://' + central_address) self.subscribe_socket.setsockopt_string(zmq.SUBSCRIBE, np.unicode('')) super(SingleThreadTracker, self).__init__(self.detector, self.encoders, matcher, predictor, **kwargs)
def __init__(self, detector: Config, matcher: Config, encoders: List[Config], predictor: Config, sigma_active: float = 0.5, lambda_active: float = 0.6, lambda_new: float = 0.3, secondary_matcher: Config = None, **kwargs): detector = build_detector(detector) matcher = build_matcher(matcher) encoders = [build_encoder(encoder_cfg) for encoder_cfg in encoders] predictor = build_predictor(predictor) self.sigma_active = sigma_active self.lambda_active = lambda_active self.lambda_new = lambda_new self.tracklets_inactive = [] if secondary_matcher is not None: self.secondary_matcher = build_matcher(secondary_matcher) super().__init__(detector, encoders, matcher, predictor, **kwargs)
def run(self) -> None: detector = None try: if self.config is not None: detector = build_detector(self.config) while self.running: if self.lock.acquire(timeout=1): self.tracker.latest_detections = detector.detect( self.tracker.frame) self.next_lock.release() except Exception as e: traceback.print_exc() self.running = False raise e finally: if hasattr(detector, 'destroy'): detector.destroy() logging.getLogger('MOT').info('Detector thread terminated.')
def test_get_component(): detector = build_detector(dict(type='MMDetector')) encoder = build_encoder(dict(type='DGNetEncoder')) metric = build_metric(dict(type='IoUMetric')) matcher = build_matcher(dict(type='HungarianMatcher')) tracker = build_tracker(dict(type='Tracktor'))