by

Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
    ap
    @apiszcz
    image.png
    I increased the covariance deleter threshold which reduced track breaks
    ap
    @apiszcz
            transition_model = CombinedLinearGaussianTransitionModel((ConstantVelocity(1), ConstantVelocity(1)))
            measurement_model = LinearGaussian(ndim_state=4, mapping=[0, 2], noise_covar=np.diag([450, 450]))
            initiator = SimpleMeasurementInitiator (
                                            GaussianState(np.array([[0], [0], [0], [0]]),
                                                           np.diag([450, 20, 450, 20])
                                                          ),
                                            measurement_model=measurement_model)
            deleter1 = CovarianceBasedDeleter(covar_trace_thresh=100000)
    The grid is ~100m, cyan cross is the detection, error uncertainty is the yellow circle.
    20200517142618.png
    20200517142650.png
    20200517142732.png
    Steven Hiscocks
    @sdhiscocks
    The error uncertainty looks very large when there is no measurement. Suggest reducing the noise value on the ConstantVelocity models.
    ap
    @apiszcz
    Reduced from 1 to 0.1 and have a better result out to 320 second time measurement interval, this may be sufficient. The error uncertainty climbs from 21, 187 to 217 however the gap is associated. Magenta is the error uncertainty, measurement interval is cyan
    20200518092357.png
    20200518092430.png
    This range of parameter values should be sufficient. Uncertainty exceeds setup at 640 second meas interval.
    20200518092541.png
    ap
    @apiszcz
    In one test I am measuring the time required to perform the kalman update varies from 1.2 to 26 seconds. In some cases there is only 1 detection added, in other cases, a maximum of 80. I'll setup a profiler run to see where the time is spent.
    Steven Hiscocks
    @sdhiscocks
    Usually data association will be slowest part as you have to do n tracks by m detections association. I noticed your using nearest neighbour which currently uses looping and not arrays so is very slow. It'd be interesting to see if you get performance boost with GNN 2D assignment algorithm.
    ap
    @apiszcz
    Will, try, the 'trackpy' uses K-D tree to reduce the number of points to consider. Will try GNN2DA. Tx
    Steven Hiscocks
    @sdhiscocks
    We do have a work in progress Kd-tree and TPR-tree branch. There was a bug in TPR-tree so work stalled.
    Probably need to addresses how we gating and use trees with #216
    Steven Hiscocks
    @sdhiscocks
    TPR-tree is nice as it does something like a constant velocity prediction within the tree itself, so works great when you have lots of tracks and measurements and different timestamps. Kd-tree you need everything at same timestamp.
    ap
    @apiszcz
    20200519172303.png
    TPR sounds like it may help
    ap
    @apiszcz
    20200519173508.png
    GNNw2D showing better kalman_update performance than NearestNeighbour
    ap
    @apiszcz
    Performance: measured time to perform the association update.
    ap
    @apiszcz
    I was trying to add some additonal references to the MEWDetectionReader I subclassed, but either can't or don't know how.
    Is there a stone soup standard to follow? 
    
    goal:         detection_reader = NEWDetectionReader(oc,ol,ou)
    
    NEWDetectionReader(DetectionReader)
    
       def __init__(self,oc,ol,ou):
            self.lastupdate=time.time()
            self.oc=oc
            self.ol=ol
            self.ou=ou
    
      File "lib\_mot\mot.py", line 1190, in <module>
        class NEWDetectionReader(DetectionReader):
      File "C:\g\test\lib\lib\site-packages\stonesoup\base.py", line 217, in __new__
        cls._validate_init()
      File "C:\g\test\lib\lib\site-packages\stonesoup\base.py", line 234, in _validate_init
        raise TypeError("init arguments don't match declared properties: "
    TypeError: init arguments don't match declared properties: arguments do not match or wrong order
    ap
    @apiszcz
    The deleter capability only deletes tracks, is there anything similar for detection data?
    ap
    @apiszcz
    Initial view of profile results, these are the routines taking longer than 5000 cumtime.
    20200520065900.png
    ncalls is log x, next is cumtime, linear X
    20200520070011.png
    ap
    @apiszcz
    Is there support for iterating through the detection data by timestamp?
    Steven Hiscocks
    @sdhiscocks
    Is this because you have out of sequence data? The TimeBufferedFeeder can be used to create a buffer that'll yield things in order, and drop detections that are too old when buffer is full.
    ap
    @apiszcz
    I am trying to determine if there are too many detections for kalman update to keep up... generally a small data set (adding 1 to 50 detections per time step) reqiuring 2 to 7 seconds to perform the kalman_update step
    Current observation keeping the most recent 1000 seconds of data there are ~7300 detections, kalman_update times are 2 - 7x slower than desired (input time delta)
    ap
    @apiszcz
    FYI: animation follows of interactive parameter selection with plot in a jupyter notebook. Note the goal here is a single track (in the title of the plot), detections gray circles, track points red cross.
    2020-05-30T163939.gif
    ap
    @apiszcz
    Output plot is in bokeh so, pan, zoom, etc. available for multi-scale inspection
    ap
    @apiszcz
    FYI: I'm seeing very good results using Optuna in performing parameter sweeps to select best parameter set.
    Steven Hiscocks
    @sdhiscocks
    Nice interactive plot @apiszcz.
    Optuna looks interesting. Have you used it to help estimate transition model noise or UKF parameters?
    ap
    @apiszcz
    Yes, based on quick review of optimizers, I recommend it, youtube video covers the capability. I am using for 7 parameters now, deleters, and covariance, for measurement, transition and initial position. It only takes a few minutes at most to get one close on a set of parameters. For the cost function I'm using # of tracks and average of the error uncertainty (semimajor), may include more items in the cost model later.
    ap
    @apiszcz
    More optuna features, supports parallel operation through a database, maintains all parameter findings, also handy dataframe output support. A few more screen shots with some SS attributes.
    2020-06-02T061626_1751_529.png
    in postgres (for example)
    2020-06-02T061703_751_229.png
    2020-06-02T061757_1084_300.png
    ap
    @apiszcz
    Hyperparameter discovered parameters...
    2020-06-02T091928_1211_874.png
    ap
    @apiszcz
    Another parameter I'm interested in exposing for updates is the output timestamp for the detections, will review to see if I can care a detection interval variable for the detection reader setup.
    ap
    @apiszcz
    Is there a naming convention that is typical for that outer timestamp, dwell time, frame time, etc. that SS uses?