Bỏ để qua phần nội dung

Tài liệu tham khảo cho ultralytics/trackers/track.py

Ghi

Tệp này có sẵn tại https://github.com/ultralytics/ultralytics/blob/main/ultralytics/trình theo dõi/track.py. Nếu bạn phát hiện ra một vấn đề, vui lòng giúp khắc phục nó bằng cách đóng góp Yêu cầu 🛠️ kéo. Cảm ơn bạn 🙏 !



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

Khởi tạo trình theo dõi để theo dõi đối tượng trong quá trình dự đoán.

Thông số:

Tên Kiểu Sự miêu tả Mặc định
predictor object

Đối tượng predictor để khởi tạo trình theo dõi cho.

bắt buộc
persist bool

Liệu có nên duy trì trình theo dõi nếu chúng đã tồn tại. Mặc định là False.

False

Tăng:

Kiểu Sự miêu tả
AssertionError

Nếu tracker_type không phải là 'bytetrack' hoặc 'botsort'.

Mã nguồn trong 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)

Các hộp được phát hiện sau xử lý và cập nhật với theo dõi đối tượng.

Thông số:

Tên Kiểu Sự miêu tả Mặc định
predictor object

Đối tượng dự đoán chứa các dự đoán.

bắt buộc
persist bool

Liệu có nên duy trì trình theo dõi nếu chúng đã tồn tại. Mặc định là False.

False
Mã nguồn trong 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)

Đăng ký callback theo dõi cho mô hình để theo dõi đối tượng trong quá trình dự đoán.

Thông số:

Tên Kiểu Sự miêu tả Mặc định
model object

Đối tượng mô hình để đăng ký callback theo dõi cho.

bắt buộc
persist bool

Liệu có nên duy trì trình theo dõi nếu chúng đã tồn tại.

bắt buộc
Mã nguồn trong 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)