mdx.mtmc.config module

class AppClusteringConfig(*args: Any, **kwargs: Any)

Bases: BaseModel

App config for clustering

agglomerativeClusteringDistThresh: float = 3.5
clusteringAlgo: ClusteringAlgoEnum = 'HDBSCAN'
dynamicUpdateAppearanceDistThresh: float = 0.2
dynamicUpdateLengthThreshSec: float = 9.0
dynamicUpdateSpatioTemporalDistThresh: float = 10.0
enableOnlineDynamicUpdate: bool = True
enableOnlineSpatioTemporalConstraint: bool = False
hdbscanMinClusterSize: int = 5
meanEmbeddingsUpdateRate: float = 0.1
numReassignmentIterations: int = 4
onlineSpatioTemporalDistThresh: float | None = None
overwrittenNumClusters: int | None = None
reassignmentDistLooseThresh: float = 0.25
reassignmentDistTightThresh: float = 0.12
skipAssignedBehaviors: bool = True
spatioTemporalDirMagnitudeThresh: float = 0.5
spatioTemporalDistLambda: float = 0.15
spatioTemporalDistType: SpatioTemporalDistTypeEnum = 'Hausdorff'
suppressOverlappingBehaviors: bool = False
class AppConfig(*args: Any, **kwargs: Any)

Bases: BaseModel

App config

class AppIOConfig(*args: Any, **kwargs: Any)

Bases: BaseModel

App config for input and output

enableDebug: bool = False
groundTruthFrameIdOffset: int = 1
inMtmcPlusBatchMode: bool = False
plotEvaluationGraphs: bool = False
selectedSensorIds: List[str] = []
use3dEvaluation: bool = False
useFullBodyGroundTruth: bool = False
class AppLocalizationConfig(*args: Any, **kwargs: Any)

Bases: BaseModel

App config for localization

overwrittenPeopleHeightMeter: float | None = None
peopleHeightEstimationRatio: float = 0.7
peopleHeightMaxLengthSec: int = 600
peopleHeightNumBatchFrames: int = 10000
peopleHeightNumSamplesMax: int = 1000
peopleHeightVisibilityThresh: float = 0.8
rectifyBboxByCalibration: bool = False
class AppPreprocessingConfig(*args: Any, **kwargs: Any)

Bases: BaseModel

App config for pre-processing and filtering behaviors

behaviorBboxAreaThresh: float = 0.0007
behaviorBboxAspectRatioThresh: float = 0.75
behaviorConfidenceThresh: float = 0.45
behaviorLengthThreshSec: float = 0.0
behaviorNumLocationsMax: int = 9000
behaviorRetentionInStateSec: float = 600.0
behaviorSplitThreshSec: int = 6
embeddingBboxAreaThresh: float = 0.0008
embeddingBboxAspectRatioThresh: float = 0.6
embeddingBboxBottomGapThresh: float = 0.02
embeddingConfidenceThresh: float = 0.5
embeddingVisibilityThresh: float = 0.5
filterByRegionsOfInterest: bool = False
locationBboxAreaThresh: float = 0.0008
locationBboxAspectRatioThresh: float = 0.6
locationBboxBottomGapThresh: float = 0.02
locationConfidenceThresh: float = 0.5
mtmcPlusInitBufferLenSec: float = 10.0
mtmcPlusReinitDiffRatioClusters: float | None = None
mtmcPlusReinitRatioAssignedBehaviors: float = 0.75
mtmcPlusRetentionInStateSec: float = 10.0
shortBehaviorFinishThreshSec: float | None = None
timestampThreshMin: float | None = None
class AppStreamingConfig(*args: Any, **kwargs: Any)

Bases: BaseModel

App config for streaming (Kafka)

kafkaBootstrapServers: str = 'localhost:9092'
kafkaConsumerMaxRecordsPerPoll: int = 100000
kafkaMicroBatchIntervalSec: float = 60.0
kafkaNotificationConsumerPollTimeoutMs: int = 100
kafkaProducerLingerMs: int = 0
kafkaRawConsumerPollTimeoutMs: int = 10000
mtmcPlusBehaviorBatchesConsumed: int = 4
mtmcPlusFrameBatchSizeMs: int = 180
mtmcPlusFrameBufferResetSec: float = 4.0
mtmcPlusLocationWindowSec: float = 1.0
mtmcPlusNumProcessesMax: int = 8
mtmcPlusSmoothingWindowSec: float = 1.0
mtmcPlusTimestampDelayMs: int = 100
sendEmptyMtmcPlusMessages: bool = True
class ClusteringAlgoEnum(value)

Bases: str, Enum

An enumeration.

AgglomerativeClustering = 'AgglomerativeClustering'
HDBSCAN = 'HDBSCAN'
class SensorDisplayModeEnum(value)

Bases: str, Enum

An enumeration.

cumulative = 'cumulative'
rotational = 'rotational'
class SensorSetupEnum(value)

Bases: int, Enum

An enumeration.

numSensors100 = 100
numSensors12 = 12
numSensors16 = 16
numSensors30 = 30
numSensors40 = 40
numSensors8 = 8
numSensors96 = 96
class SensorViewsLayoutEnum(value)

Bases: str, Enum

An enumeration.

radial = 'radial'
split = 'split'
class SpatioTemporalDistTypeEnum(value)

Bases: str, Enum

An enumeration.

Hausdorff = 'Hausdorff'
pairwise = 'pairwise'
class VizMtmcConfig(*args: Any, **kwargs: Any)

Bases: BaseModel

MTMC visualization config

class VizMtmcIOConfig(*args: Any, **kwargs: Any)

Bases: BaseModel

MTMC visualization config for input and output

selectedBehaviorIds: List[str] = []
selectedGlobalIds: List[str] = []
selectedSensorIds: List[str] = []
class VizMtmcPlottingConfig(*args: Any, **kwargs: Any)

Bases: BaseModel

MTMC visualization config for plotting

blankOutEmptyFrames: bool = False
gridLayout: List[int] = [2, 2]
outputFrameHeight: int = -1
smoothingTailLengthThresh: int = 5
smoothingTailWindow: int = 30
tailLengthMax: int = 200
vizFilteredFrames: bool = False
class VizMtmcSetupConfig(*args: Any, **kwargs: Any)

Bases: BaseModel

MTMC visualization config for setup

enableMultiprocessing: bool = False
ffmpegRequired: bool = False
vizMode: str = 'mtmc_objects'
vizMtmcObjectsMode: str = 'grid'
class VizRtlsConfig(*args: Any, **kwargs: Any)

Bases: BaseModel

RTLS visualization config

class VizRtlsInputConfig(*args: Any, **kwargs: Any)

Bases: BaseModel

RTLS visualization config for input

class VizRtlsOutputConfig(*args: Any, **kwargs: Any)

Bases: BaseModel

RTLS visualization config for output

bufferLengthThreshSec: float = 3.0
displaySensorViews: bool = False
outputMapHeight: int = 1080
outputVideoDurationSec: float = 60.0
sensorFovDisplayMode: SensorDisplayModeEnum = 'rotational'
sensorSetup: SensorSetupEnum = 30
sensorViewDisplayMode: SensorDisplayModeEnum = 'rotational'
sensorViewDurationSec: float = 1.0
sensorViewGapSec: float = 0.1
sensorViewStartTimeSec: float = 2.0
sensorViewsLayout: SensorViewsLayoutEnum = 'radial'
skippedBeginningTimeSec: float = 0.0
trajectoryLengthThreshSec: float = 5.0