Zum Inhalt springen

Referenz fĂŒr ultralytics/trackers/track.py

Hinweis

Diese Datei ist verfĂŒgbar unter https://github.com/ultralytics/ ultralytics/blob/main/ ultralytics/trackers/track .py. Wenn du ein Problem entdeckst, hilf bitte, es zu beheben, indem du einen Pull Request đŸ› ïž einreichst. Vielen Dank 🙏!



ultralytics.trackers.track.on_predict_start(predictor, persist=False)

Initialisiere Tracker fĂŒr die Objektverfolgung wĂ€hrend der Vorhersage.

Parameter:

Name Typ Beschreibung Standard
predictor object

Das PrĂ€diktorobjekt, fĂŒr das die Tracker initialisiert werden.

erforderlich
persist bool

Ob die Tracker bestehen bleiben sollen, wenn sie bereits existieren. Der Standardwert ist False.

False

Erhöht:

Typ Beschreibung
AssertionError

Wenn der tracker_type nicht 'bytetrack' oder 'botsort' ist.

Quellcode in ultralytics/trackers/track.py
def on_predict_start(predictor: object, persist: bool = False) -> None:
    """
    Initialize trackers for object tracking during prediction.

    Args:
        predictor (object): The predictor object to initialize trackers for.
        persist (bool, optional): Whether to persist the trackers if they already exist. Defaults to False.

    Raises:
        AssertionError: If the tracker_type is not 'bytetrack' or 'botsort'.
    """
    if hasattr(predictor, "trackers") and persist:
        return

    tracker = check_yaml(predictor.args.tracker)
    cfg = IterableSimpleNamespace(**yaml_load(tracker))

    if cfg.tracker_type not in {"bytetrack", "botsort"}:
        raise AssertionError(f"Only 'bytetrack' and 'botsort' are supported for now, but got '{cfg.tracker_type}'")

    trackers = []
    for _ in range(predictor.dataset.bs):
        tracker = TRACKER_MAP[cfg.tracker_type](args=cfg, frame_rate=30)
        trackers.append(tracker)
        if predictor.dataset.mode != "stream":  # only need one tracker for other modes.
            break
    predictor.trackers = trackers
    predictor.vid_path = [None] * predictor.dataset.bs  # for determining when to reset tracker on new video



ultralytics.trackers.track.on_predict_postprocess_end(predictor, persist=False)

Erkannte Boxen nachbearbeiten und mit Objektverfolgung aktualisieren.

Parameter:

Name Typ Beschreibung Standard
predictor object

Das PrÀdiktorobjekt, das die Vorhersagen enthÀlt.

erforderlich
persist bool

Ob die Tracker bestehen bleiben sollen, wenn sie bereits existieren. Der Standardwert ist False.

False
Quellcode in ultralytics/trackers/track.py
def on_predict_postprocess_end(predictor: object, persist: bool = False) -> None:
    """
    Postprocess detected boxes and update with object tracking.

    Args:
        predictor (object): The predictor object containing the predictions.
        persist (bool, optional): Whether to persist the trackers if they already exist. Defaults to False.
    """
    path, im0s = predictor.batch[:2]

    is_obb = predictor.args.task == "obb"
    is_stream = predictor.dataset.mode == "stream"
    for i in range(len(im0s)):
        tracker = predictor.trackers[i if is_stream else 0]
        vid_path = predictor.save_dir / Path(path[i]).name
        if not persist and predictor.vid_path[i if is_stream else 0] != vid_path:
            tracker.reset()
            predictor.vid_path[i if is_stream else 0] = vid_path

        det = (predictor.results[i].obb if is_obb else predictor.results[i].boxes).cpu().numpy()
        if len(det) == 0:
            continue
        tracks = tracker.update(det, im0s[i])
        if len(tracks) == 0:
            continue
        idx = tracks[:, -1].astype(int)
        predictor.results[i] = predictor.results[i][idx]

        update_args = {"obb" if is_obb else "boxes": torch.as_tensor(tracks[:, :-1])}
        predictor.results[i].update(**update_args)



ultralytics.trackers.track.register_tracker(model, persist)

Registriere Tracking-Callbacks fĂŒr das Modell zur Objektverfolgung wĂ€hrend der Vorhersage.

Parameter:

Name Typ Beschreibung Standard
model object

Das Modellobjekt, fĂŒr das Tracking-Callbacks registriert werden sollen.

erforderlich
persist bool

Ob die Tracker bestehen bleiben sollen, wenn sie bereits existieren.

erforderlich
Quellcode in ultralytics/trackers/track.py
def register_tracker(model: object, persist: bool) -> None:
    """
    Register tracking callbacks to the model for object tracking during prediction.

    Args:
        model (object): The model object to register tracking callbacks for.
        persist (bool): Whether to persist the trackers if they already exist.
    """
    model.add_callback("on_predict_start", partial(on_predict_start, persist=persist))
    model.add_callback("on_predict_postprocess_end", partial(on_predict_postprocess_end, persist=persist))





Created 2023-11-12, Updated 2024-06-02
Authors: glenn-jocher (5), Burhan-Q (1), Laughing-q (1)