Beispiel #1
0
import uuid
from collections.abc import Iterable
from typing import Any, Optional, Sequence, Union

import numpy as np
import scipy
from filterpy.kalman import KalmanFilter

from motpy.core import Box, Detection, Track, Vector, setup_logger
from motpy.metrics import angular_similarity, calculate_iou
from motpy.model import Model, ModelPreset

logger = setup_logger(__name__)


def get_single_object_tracker(model: Model,
                              x0: Optional[Vector] = None) -> KalmanFilter:
    """ returns Kalman-based tracker based on a specified motion model spec.
        e.g. for spec = {'order_pos': 1, 'dim_pos': 2, 'order_size': 0, 'dim_size': 1}
        we expect the following setup:
        state x, x', y, y', w, h
        where x and y are centers of boxes
              w and h are width and height
    """

    tracker = KalmanFilter(dim_x=model.state_length,
                           dim_z=model.measurement_length)
    tracker.F = model.build_F()
    tracker.Q = model.build_Q()
    tracker.H = model.build_H()
    tracker.R = model.build_R()
Beispiel #2
0
import time

import cv2
from motpy import ModelPreset, MultiObjectTracker
from motpy.core import setup_logger
from motpy.testing_viz import draw_rectangle, draw_track, image_generator
from motpy.utils import ensure_packages_installed

ensure_packages_installed(['cv2'])

logger = setup_logger(__name__, 'DEBUG', is_main=True)


def demo_tracking_visualization(
        model_spec=ModelPreset.constant_acceleration_and_static_box_size_2d.
    value,
        num_steps: int = 1000,
        num_objects: int = 20):
    gen = image_generator(num_steps=num_steps,
                          num_objects=num_objects,
                          max_omega=0.03,
                          miss_prob=0.33,
                          disappear_prob=0.00,
                          det_err_sigma=3.33)

    dt = 1 / 24
    tracker = MultiObjectTracker(dt=dt,
                                 model_spec=model_spec,
                                 active_tracks_kwargs={
                                     'min_steps_alive': 2,
                                     'max_staleness': 6
import cv2
import motpy
from motpy import ModelPreset, MultiObjectTracker
from motpy.core import setup_logger
from motpy.testing_viz import draw_rectangle, draw_text, image_generator

logger = setup_logger(__name__, is_main=True)


def demo_tracking_visualization(num_steps: int = 1000, num_objects: int = 10):
    gen = image_generator(num_steps=num_steps,
                          num_objects=num_objects,
                          max_omega=0.03,
                          miss_prob=0.33,
                          disappear_prob=0.00,
                          det_err_sigma=3.33)

    dt = 1 / 24
    tracker = MultiObjectTracker(
        dt=dt,
        model_spec=ModelPreset.constant_acceleration_and_static_box_size_2d.
        value,
        active_tracks_kwargs={
            'min_steps_alive': 2,
            'max_staleness': 6
        },
        tracker_kwargs={'max_staleness': 12})

    for _ in range(num_steps):
        img, _, detections = next(gen)