[{"data":1,"prerenderedAt":1931},["ShallowReactive",2],{"navigation":3,"api-navigation":126,"\u002Frecipes\u002Fsort":328,"docyard:crossref-index":1930},[4,8,38,44,48,122],{"title":5,"path":6,"stem":7},"Getting Started","\u002Fgetting-started","1.getting-started",{"title":9,"path":10,"stem":11,"children":12,"page":37},"Recipes","\u002Frecipes","2.recipes",[13,17,21,25,29,33],{"title":14,"path":15,"stem":16},"Recipe: two-stage cascade tracker","\u002Frecipes\u002Fcascade_tracker","2.recipes\u002Fcascade_tracker",{"title":18,"path":19,"stem":20},"Recipe: cosine appearance tracker","\u002Frecipes\u002Fcosine_tracker","2.recipes\u002Fcosine_tracker",{"title":22,"path":23,"stem":24},"Recipe: Kalman motion tracker","\u002Frecipes\u002Fkalman_motion_tracker","2.recipes\u002Fkalman_motion_tracker",{"title":26,"path":27,"stem":28},"Recipe: learned MOTR-style appearance tracker","\u002Frecipes\u002Flearned_motr_tracker","2.recipes\u002Flearned_motr_tracker",{"title":30,"path":31,"stem":32},"Recipe: overlap-IoU tracker (port of 1.x models.overlap)","\u002Frecipes\u002Foverlap_tracker","2.recipes\u002Foverlap_tracker",{"title":34,"path":35,"stem":36},"Recipe: SORT-style tracker on unitrack 2.0","\u002Frecipes\u002Fsort","2.recipes\u002Fsort",false,{"title":39,"path":40,"stem":41,"children":42},"API reference","\u002Fapi","3.api\u002Findex",[43],{"title":39,"path":40,"stem":41},{"title":45,"path":46,"stem":47},"Migrating from 1.x to 2.0","\u002Fmigration","4.migration",{"title":49,"path":50,"stem":51,"children":52,"page":37},"Notebooks","\u002Fnotebooks","5.notebooks",[53,84,88],{"title":54,"path":55,"stem":56,"children":57},"Embedding \u002F appearance filters","\u002Fnotebooks\u002Fembedding_filters","5.notebooks\u002Fembedding_filters\u002Findex",[58,59,64,68,72,76,80],{"title":54,"path":55,"stem":56},{"title":60,"path":61,"stem":62,"icon":63},"Embedding filters 1 — Exponential moving average (EMA)","\u002Fnotebooks\u002Fembedding_filters\u002Fema","5.notebooks\u002Fembedding_filters\u002F1.ema","i-lucide-notebook",{"title":65,"path":66,"stem":67,"icon":63},"Embedding filters 2 — Diagonal Kalman","\u002Fnotebooks\u002Fembedding_filters\u002Fkalman_diagonal","5.notebooks\u002Fembedding_filters\u002F2.kalman_diagonal",{"title":69,"path":70,"stem":71,"icon":63},"Embedding filters 3 — von Mises-Fisher (directional)","\u002Fnotebooks\u002Fembedding_filters\u002Fvmf_directional","5.notebooks\u002Fembedding_filters\u002F3.vmf_directional",{"title":73,"path":74,"stem":75,"icon":63},"Embedding filters 4 — Ensemble Kalman & information filters","\u002Fnotebooks\u002Fembedding_filters\u002Fenkf_information","5.notebooks\u002Fembedding_filters\u002F4.enkf_information",{"title":77,"path":78,"stem":79,"icon":63},"Embedding filters 5 — Memory bank & learned propagation","\u002Fnotebooks\u002Fembedding_filters\u002Fgallery_and_learned","5.notebooks\u002Fembedding_filters\u002F5.gallery_and_learned",{"title":81,"path":82,"stem":83,"icon":63},"Embedding filters 6 — summary & benchmark","\u002Fnotebooks\u002Fembedding_filters\u002Fsummary_benchmark","5.notebooks\u002Fembedding_filters\u002F6.summary_benchmark",{"title":85,"path":86,"stem":87,"icon":63},"Kalman filters for motion prediction in tracking","\u002Fnotebooks\u002Fkalman","5.notebooks\u002Fkalman",{"title":89,"path":90,"stem":91,"children":92},"Tutorial notebooks","\u002Fnotebooks\u002Ftutorials","5.notebooks\u002Ftutorials\u002Findex",[93,94,98,102,106,110,114,118],{"title":89,"path":90,"stem":91},{"title":95,"path":96,"stem":97,"icon":63},"1. Quickstart — your first tracker","\u002Fnotebooks\u002Ftutorials\u002Fquickstart","5.notebooks\u002Ftutorials\u002F1.quickstart",{"title":99,"path":100,"stem":101,"icon":63},"2. The data model — typed records that flow through a tracker","\u002Fnotebooks\u002Ftutorials\u002Fdata_model","5.notebooks\u002Ftutorials\u002F2.data_model",{"title":103,"path":104,"stem":105,"icon":63},"3. The cost & gate zoos","\u002Fnotebooks\u002Ftutorials\u002Fcosts_and_gates","5.notebooks\u002Ftutorials\u002F3.costs_and_gates",{"title":107,"path":108,"stem":109,"icon":63},"4. The composable pipeline tree","\u002Fnotebooks\u002Ftutorials\u002Fpipeline_tree","5.notebooks\u002Ftutorials\u002F4.pipeline_tree",{"title":111,"path":112,"stem":113,"icon":63},"5. State evolution and lifecycle","\u002Fnotebooks\u002Ftutorials\u002Fstates_and_lifecycle","5.notebooks\u002Ftutorials\u002F5.states_and_lifecycle",{"title":115,"path":116,"stem":117,"icon":63},"6. End-to-end: K=2 cascaded and parallel fusion","\u002Fnotebooks\u002Ftutorials\u002Fcascaded_and_parallel","5.notebooks\u002Ftutorials\u002F6.cascaded_and_parallel",{"title":119,"path":120,"stem":121,"icon":63},"7. Migration & new possibilities — driven by a real detector","\u002Fnotebooks\u002Ftutorials\u002Fmigration","5.notebooks\u002Ftutorials\u002F7.migration",{"title":123,"path":124,"stem":125},"Unitrack","\u002F","index",[127,130,133,136,139,142,145,148,151,154,157,160,163,166,169,172,175,178,181,184,187,190,193,196,199,202,205,208,211,214,217,220,223,226,229,232,235,238,241,244,247,249,252,255,258,261,263,266,269,272,274,277,280,282,285,288,290,293,296,299,302,305,308,311,313,315,318,320,323,326],{"title":128,"path":129},"assignment","\u002Fapi\u002Fassignment",{"title":131,"path":132},"associate","\u002Fapi\u002Fassignment\u002Fassociate",{"title":134,"path":135},"clip_associate","\u002Fapi\u002Fassignment\u002Fclip_associate",{"title":137,"path":138},"lap","\u002Fapi\u002Fassignment\u002Flap",{"title":140,"path":141},"lapjv","\u002Fapi\u002Fassignment\u002Flapjv",{"title":143,"path":144},"benchmarks","\u002Fapi\u002Fbenchmarks",{"title":146,"path":147},"hota","\u002Fapi\u002Fbenchmarks\u002Fhota",{"title":149,"path":150},"datasets","\u002Fapi\u002Fbenchmarks\u002Fhota\u002Fdatasets",{"title":152,"path":153},"learned_modules","\u002Fapi\u002Fbenchmarks\u002Fhota\u002Flearned_modules",{"title":155,"path":156},"metric","\u002Fapi\u002Fbenchmarks\u002Fhota\u002Fmetric",{"title":158,"path":159},"models","\u002Fapi\u002Fbenchmarks\u002Fhota\u002Fmodels",{"title":161,"path":162},"protocols","\u002Fapi\u002Fbenchmarks\u002Fhota\u002Fprotocols",{"title":164,"path":165},"render","\u002Fapi\u002Fbenchmarks\u002Fhota\u002Frender",{"title":167,"path":168},"report","\u002Fapi\u002Fbenchmarks\u002Fhota\u002Freport",{"title":170,"path":171},"runner","\u002Fapi\u002Fbenchmarks\u002Fhota\u002Frunner",{"title":173,"path":174},"tracker","\u002Fapi\u002Fbenchmarks\u002Fhota\u002Ftracker",{"title":176,"path":177},"train_learned","\u002Fapi\u002Fbenchmarks\u002Fhota\u002Ftrain_learned",{"title":179,"path":180},"types","\u002Fapi\u002Fbenchmarks\u002Fhota\u002Ftypes",{"title":182,"path":183},"costs","\u002Fapi\u002Fcosts",{"title":185,"path":186},"combinators","\u002Fapi\u002Fcosts\u002Fcombinators",{"title":188,"path":189},"distance","\u002Fapi\u002Fcosts\u002Fdistance",{"title":191,"path":192},"gallery","\u002Fapi\u002Fcosts\u002Fgallery",{"title":194,"path":195},"overlap","\u002Fapi\u002Fcosts\u002Foverlap",{"title":197,"path":198},"data","\u002Fapi\u002Fdata",{"title":200,"path":201},"clip","\u002Fapi\u002Fdata\u002Fclip",{"title":203,"path":204},"cost","\u002Fapi\u002Fdata\u002Fcost",{"title":206,"path":207},"detections","\u002Fapi\u002Fdata\u002Fdetections",{"title":209,"path":210},"frame","\u002Fapi\u002Fdata\u002Fframe",{"title":212,"path":213},"gate","\u002Fapi\u002Fdata\u002Fgate",{"title":215,"path":216},"match","\u002Fapi\u002Fdata\u002Fmatch",{"title":218,"path":219},"tensor_spec","\u002Fapi\u002Fdata\u002Ftensor_spec",{"title":221,"path":222},"tracklets","\u002Fapi\u002Fdata\u002Ftracklets",{"title":224,"path":225},"gates","\u002Fapi\u002Fgates",{"title":227,"path":228},"motion","\u002Fapi\u002Fgates\u002Fmotion",{"title":230,"path":231},"simple","\u002Fapi\u002Fgates\u002Fsimple",{"title":233,"path":234},"soft","\u002Fapi\u002Fgates\u002Fsoft",{"title":236,"path":237},"spatial","\u002Fapi\u002Fgates\u002Fspatial",{"title":239,"path":240},"lifecycle","\u002Fapi\u002Flifecycle",{"title":242,"path":243},"filters","\u002Fapi\u002Flifecycle\u002Ffilters",{"title":245,"path":246},"policies","\u002Fapi\u002Flifecycle\u002Fpolicies",{"title":233,"path":248},"\u002Fapi\u002Flifecycle\u002Fsoft",{"title":250,"path":251},"status","\u002Fapi\u002Flifecycle\u002Fstatus",{"title":253,"path":254},"visibility","\u002Fapi\u002Flifecycle\u002Fvisibility",{"title":256,"path":257},"pipeline","\u002Fapi\u002Fpipeline",{"title":259,"path":260},"base","\u002Fapi\u002Fpipeline\u002Fbase",{"title":185,"path":262},"\u002Fapi\u002Fpipeline\u002Fcombinators",{"title":264,"path":265},"diff","\u002Fapi\u002Fpipeline\u002Fdiff",{"title":267,"path":268},"merge","\u002Fapi\u002Fpipeline\u002Fmerge",{"title":270,"path":271},"states","\u002Fapi\u002Fstates",{"title":259,"path":273},"\u002Fapi\u002Fstates\u002Fbase",{"title":275,"path":276},"directional","\u002Fapi\u002Fstates\u002Fdirectional",{"title":278,"path":279},"ema","\u002Fapi\u002Fstates\u002Fema",{"title":191,"path":281},"\u002Fapi\u002Fstates\u002Fgallery",{"title":283,"path":284},"identity","\u002Fapi\u002Fstates\u002Fidentity",{"title":286,"path":287},"kalman","\u002Fapi\u002Fstates\u002Fkalman",{"title":259,"path":289},"\u002Fapi\u002Fstates\u002Fkalman\u002Fbase",{"title":291,"path":292},"bbox","\u002Fapi\u002Fstates\u002Fkalman\u002Fbbox",{"title":294,"path":295},"centroid","\u002Fapi\u002Fstates\u002Fkalman\u002Fcentroid",{"title":297,"path":298},"ensemble","\u002Fapi\u002Fstates\u002Fkalman\u002Fensemble",{"title":300,"path":301},"information","\u002Fapi\u002Fstates\u002Fkalman\u002Finformation",{"title":303,"path":304},"project","\u002Fapi\u002Fstates\u002Fkalman\u002Fproject",{"title":306,"path":307},"update","\u002Fapi\u002Fstates\u002Fkalman\u002Fupdate",{"title":309,"path":310},"learned","\u002Fapi\u002Fstates\u002Flearned",{"title":233,"path":312},"\u002Fapi\u002Fstates\u002Fsoft",{"title":173,"path":314},"\u002Fapi\u002Ftracker",{"title":316,"path":317},"batch","\u002Fapi\u002Ftracker\u002Fbatch",{"title":200,"path":319},"\u002Fapi\u002Ftracker\u002Fclip",{"title":321,"path":322},"memory","\u002Fapi\u002Ftracker\u002Fmemory",{"title":324,"path":325},"multistream","\u002Fapi\u002Ftracker\u002Fmultistream",{"title":173,"path":327},"\u002Fapi\u002Ftracker\u002Ftracker",{"id":329,"title":34,"body":330,"description":1925,"extension":1926,"meta":1927,"navigation":452,"path":35,"seo":1928,"stem":36,"__hash__":1929},"content\u002F2.recipes\u002Fsort.md",{"type":331,"value":332,"toc":1923},"minimark",[333,343,363,425,1893,1896,1919],[334,335,337,338,342],"h1",{"id":336},"recipe-sort-style-tracker-on-unitrack-20","Recipe: SORT-style tracker on ",[339,340,341],"code",{},"unitrack"," 2.0",[344,345,346,347,350,351,354,355,358,359,362],"p",{},"SORT (Bewley et al., 2016) is a single-stage IoU + Kalman bbox tracker.\nIt maps onto 2.0 as one ",[339,348,349],{},"Pipe"," whose cost is ",[339,352,353],{},"BoxIoU"," and whose state\nincludes a ",[339,356,357],{},"KalmanBBox"," predict + ",[339,360,361],{},"KalmanUpdate"," observation.",[344,364,365,366,369,370,373,374,377,378,381,382,386,387,390,391,394,395,398,399,402,403,406,407,409,410,412,413,124,415,418,419,421,422,424],{},"SORT's tracklet state is the 7-D ",[339,367,368],{},"[x, y, a, h, vx, vy, va]"," constant-velocity\nmodel — ",[339,371,372],{},"x, y"," is the box centre, ",[339,375,376],{},"a"," is aspect ratio, ",[339,379,380],{},"h"," is height. The\n",[383,384,385],"em",{},"measurement"," is the 4-D leading slice ",[339,388,389],{},"[x, y, a, h]",": detections must\ntherefore carry a ",[339,392,393],{},"bbox_xyah"," field of shape ",[339,396,397],{},"(M, 4)"," in that order\n(convert from xyxy upstream — ",[339,400,401],{},"PadZerosInitializer"," zero-pads it to\nthe full 7-D state at spawn). The IoU cost runs on ",[339,404,405],{},"bbox_xyxy",", so the\ntracklet must also expose a ",[339,408,405],{}," projection of the predicted\nKalman mean — ",[339,411,357],{}," only seeds ",[339,414,393],{},[339,416,417],{},"bbox_xyah_cov",",\nso the recipe adds a small projection state that derives ",[339,420,405],{},"\nfrom ",[339,423,393],{}," after each Kalman predict.",[426,427,432],"pre",{"className":428,"code":429,"language":430,"meta":431,"style":431},"language-python shiki shiki-themes material-theme-lighter github-light github-dark","import dataclasses\n\nimport torch\n\nimport unitrack\nfrom unitrack.assignment import Associate, Jonker\nfrom unitrack.costs import BoxIoU\nfrom unitrack.data import (\n    Detections,\n    FrameContext,\n    MatchOutcome,\n    TensorSpec,\n    Tracklets,\n)\nfrom unitrack.lifecycle import ConfirmedOnly, StandardLifecycle\nfrom unitrack.pipeline import Pipe\nfrom unitrack.states import FromDetectionField, State\nfrom unitrack.states.kalman import KalmanBBox\n\n\ndef _xyah_to_xyxy(xyah: torch.Tensor) -> torch.Tensor:\n    cx, cy, a, h = xyah[..., 0], xyah[..., 1], xyah[..., 2], xyah[..., 3]\n    w = a * h\n    return torch.stack([cx - w \u002F 2, cy - h \u002F 2, cx + w \u002F 2, cy + h \u002F 2], dim=-1)\n\n\n@dataclasses.dataclass(frozen=True, slots=True)\nclass _ProjectXyahToXyxy:\n    \"\"\"Derive `bbox_xyxy` from the (already-predicted) `bbox_xyah` mean.\"\"\"\n\n    source: str = \"bbox_xyah\"\n    target: str = \"bbox_xyxy\"\n\n    def __call__(self, cs: Tracklets, ctx: FrameContext) -> Tracklets:\n        del ctx\n        if cs.batch_size[0] == 0:\n            return cs\n        return cs.set(self.target, _xyah_to_xyxy(getattr(cs, self.source)))\n\n\n@dataclasses.dataclass(frozen=True, slots=True)\nclass _ProjectXyahToXyxyAfterUpdate:\n    \"\"\"Re-derive `bbox_xyxy` after the Kalman update wrote a new mean.\"\"\"\n\n    source: str = \"bbox_xyah\"\n    target: str = \"bbox_xyxy\"\n\n    def __call__(\n        self,\n        cs: Tracklets,\n        ds: Detections,\n        match: MatchOutcome,\n        ctx: FrameContext,\n    ) -> Tracklets:\n        del ds, match, ctx\n        if cs.batch_size[0] == 0:\n            return cs\n        return cs.set(self.target, _xyah_to_xyxy(getattr(cs, self.source)))\n\n\ndef build_sort_tracker(\n    *,\n    iou_threshold: float = 0.3,\n    min_hits: int = 3,\n    max_age: int = 1,\n) -> unitrack.Tracker:\n    bbox = KalmanBBox(\"bbox_xyah\")\n    states = {\n        # KalmanBBox seeds bbox_xyah + bbox_xyah_cov; predict advances both.\n        **bbox.state_entries(),\n        # Projection state: derives bbox_xyxy from the Kalman mean *after*\n        # the predict step (the iteration order in `states` decides this:\n        # bbox_xyah's predict runs first, then this projection writes the\n        # corresponding bbox_xyxy onto the snapshot). Initialized directly\n        # from the detection's bbox_xyxy so first-frame tracklets have a\n        # consistent xyxy field before any predict has run.\n        \"bbox_xyxy\": State(\n            schema=TensorSpec(shape=(4,), dtype=torch.float32),\n            process=_ProjectXyahToXyxy(),\n            observation=_ProjectXyahToXyxyAfterUpdate(),\n            init=FromDetectionField(\"bbox_xyxy\"),\n        ),\n    }\n    return unitrack.Tracker(\n        root=Pipe(\n            cost=BoxIoU(\"bbox_xyxy\"),\n            assoc=Associate(Jonker(threshold=1.0 - iou_threshold)),\n        ),\n        states=states,\n        lifecycle=StandardLifecycle(min_hits=min_hits, max_age=max_age),\n        visibility=ConfirmedOnly(),\n    )\n","python","",[339,433,434,447,454,462,467,475,502,519,536,545,553,561,569,577,583,605,622,644,665,670,675,720,804,821,904,909,914,951,963,977,982,1007,1025,1030,1074,1083,1111,1120,1169,1174,1179,1208,1218,1228,1233,1250,1267,1272,1282,1290,1302,1315,1328,1340,1352,1369,1392,1399,1440,1445,1450,1460,1468,1486,1503,1519,1535,1557,1568,1575,1591,1597,1603,1609,1615,1621,1627,1644,1686,1699,1712,1733,1739,1745,1758,1770,1790,1825,1830,1842,1874,1887],{"__ignoreMap":431},[435,436,439,443],"span",{"class":437,"line":438},"line",1,[435,440,442],{"class":441},"sVHd0","import",[435,444,446],{"class":445},"su5hD"," dataclasses\n",[435,448,450],{"class":437,"line":449},2,[435,451,453],{"emptyLinePlaceholder":452},true,"\n",[435,455,457,459],{"class":437,"line":456},3,[435,458,442],{"class":441},[435,460,461],{"class":445}," torch\n",[435,463,465],{"class":437,"line":464},4,[435,466,453],{"emptyLinePlaceholder":452},[435,468,470,472],{"class":437,"line":469},5,[435,471,442],{"class":441},[435,473,474],{"class":445}," unitrack\n",[435,476,478,481,484,488,491,493,496,499],{"class":437,"line":477},6,[435,479,480],{"class":441},"from",[435,482,483],{"class":445}," unitrack",[435,485,487],{"class":486},"sP7_E",".",[435,489,490],{"class":445},"assignment ",[435,492,442],{"class":441},[435,494,495],{"class":445}," Associate",[435,497,498],{"class":486},",",[435,500,501],{"class":445}," Jonker\n",[435,503,505,507,509,511,514,516],{"class":437,"line":504},7,[435,506,480],{"class":441},[435,508,483],{"class":445},[435,510,487],{"class":486},[435,512,513],{"class":445},"costs ",[435,515,442],{"class":441},[435,517,518],{"class":445}," BoxIoU\n",[435,520,522,524,526,528,531,533],{"class":437,"line":521},8,[435,523,480],{"class":441},[435,525,483],{"class":445},[435,527,487],{"class":486},[435,529,530],{"class":445},"data ",[435,532,442],{"class":441},[435,534,535],{"class":486}," (\n",[435,537,539,542],{"class":437,"line":538},9,[435,540,541],{"class":445},"    Detections",[435,543,544],{"class":486},",\n",[435,546,548,551],{"class":437,"line":547},10,[435,549,550],{"class":445},"    FrameContext",[435,552,544],{"class":486},[435,554,556,559],{"class":437,"line":555},11,[435,557,558],{"class":445},"    MatchOutcome",[435,560,544],{"class":486},[435,562,564,567],{"class":437,"line":563},12,[435,565,566],{"class":445},"    TensorSpec",[435,568,544],{"class":486},[435,570,572,575],{"class":437,"line":571},13,[435,573,574],{"class":445},"    Tracklets",[435,576,544],{"class":486},[435,578,580],{"class":437,"line":579},14,[435,581,582],{"class":486},")\n",[435,584,586,588,590,592,595,597,600,602],{"class":437,"line":585},15,[435,587,480],{"class":441},[435,589,483],{"class":445},[435,591,487],{"class":486},[435,593,594],{"class":445},"lifecycle ",[435,596,442],{"class":441},[435,598,599],{"class":445}," ConfirmedOnly",[435,601,498],{"class":486},[435,603,604],{"class":445}," StandardLifecycle\n",[435,606,608,610,612,614,617,619],{"class":437,"line":607},16,[435,609,480],{"class":441},[435,611,483],{"class":445},[435,613,487],{"class":486},[435,615,616],{"class":445},"pipeline ",[435,618,442],{"class":441},[435,620,621],{"class":445}," Pipe\n",[435,623,625,627,629,631,634,636,639,641],{"class":437,"line":624},17,[435,626,480],{"class":441},[435,628,483],{"class":445},[435,630,487],{"class":486},[435,632,633],{"class":445},"states ",[435,635,442],{"class":441},[435,637,638],{"class":445}," FromDetectionField",[435,640,498],{"class":486},[435,642,643],{"class":445}," State\n",[435,645,647,649,651,653,655,657,660,662],{"class":437,"line":646},18,[435,648,480],{"class":441},[435,650,483],{"class":445},[435,652,487],{"class":486},[435,654,270],{"class":445},[435,656,487],{"class":486},[435,658,659],{"class":445},"kalman ",[435,661,442],{"class":441},[435,663,664],{"class":445}," KalmanBBox\n",[435,666,668],{"class":437,"line":667},19,[435,669,453],{"emptyLinePlaceholder":452},[435,671,673],{"class":437,"line":672},20,[435,674,453],{"emptyLinePlaceholder":452},[435,676,678,682,686,689,693,696,699,701,705,708,711,713,715,717],{"class":437,"line":677},21,[435,679,681],{"class":680},"sbsja","def",[435,683,685],{"class":684},"sGLFI"," _xyah_to_xyxy",[435,687,688],{"class":486},"(",[435,690,692],{"class":691},"sFwrP","xyah",[435,694,695],{"class":486},":",[435,697,698],{"class":445}," torch",[435,700,487],{"class":486},[435,702,704],{"class":703},"skxfh","Tensor",[435,706,707],{"class":486},")",[435,709,710],{"class":486}," ->",[435,712,698],{"class":445},[435,714,487],{"class":486},[435,716,704],{"class":703},[435,718,719],{"class":486},":\n",[435,721,723,726,728,731,733,736,738,741,745,748,751,755,757,761,764,766,768,770,772,775,777,779,781,783,785,788,790,792,794,796,798,801],{"class":437,"line":722},22,[435,724,725],{"class":445},"    cx",[435,727,498],{"class":486},[435,729,730],{"class":445}," cy",[435,732,498],{"class":486},[435,734,735],{"class":445}," a",[435,737,498],{"class":486},[435,739,740],{"class":445}," h ",[435,742,744],{"class":743},"smGrS","=",[435,746,747],{"class":445}," xyah",[435,749,750],{"class":486},"[",[435,752,754],{"class":753},"s_hVV","...",[435,756,498],{"class":486},[435,758,760],{"class":759},"srdBf"," 0",[435,762,763],{"class":486},"],",[435,765,747],{"class":445},[435,767,750],{"class":486},[435,769,754],{"class":753},[435,771,498],{"class":486},[435,773,774],{"class":759}," 1",[435,776,763],{"class":486},[435,778,747],{"class":445},[435,780,750],{"class":486},[435,782,754],{"class":753},[435,784,498],{"class":486},[435,786,787],{"class":759}," 2",[435,789,763],{"class":486},[435,791,747],{"class":445},[435,793,750],{"class":486},[435,795,754],{"class":753},[435,797,498],{"class":486},[435,799,800],{"class":759}," 3",[435,802,803],{"class":486},"]\n",[435,805,807,810,812,815,818],{"class":437,"line":806},23,[435,808,809],{"class":445},"    w ",[435,811,744],{"class":743},[435,813,814],{"class":445}," a ",[435,816,817],{"class":743},"*",[435,819,820],{"class":445}," h\n",[435,822,824,827,829,831,835,838,841,844,847,849,851,853,856,858,860,862,864,866,869,872,874,876,878,880,882,884,886,888,890,892,896,899,902],{"class":437,"line":823},24,[435,825,826],{"class":441},"    return",[435,828,698],{"class":445},[435,830,487],{"class":486},[435,832,834],{"class":833},"slqww","stack",[435,836,837],{"class":486},"([",[435,839,840],{"class":833},"cx ",[435,842,843],{"class":743},"-",[435,845,846],{"class":833}," w ",[435,848,124],{"class":743},[435,850,787],{"class":759},[435,852,498],{"class":486},[435,854,855],{"class":833}," cy ",[435,857,843],{"class":743},[435,859,740],{"class":833},[435,861,124],{"class":743},[435,863,787],{"class":759},[435,865,498],{"class":486},[435,867,868],{"class":833}," cx ",[435,870,871],{"class":743},"+",[435,873,846],{"class":833},[435,875,124],{"class":743},[435,877,787],{"class":759},[435,879,498],{"class":486},[435,881,855],{"class":833},[435,883,871],{"class":743},[435,885,740],{"class":833},[435,887,124],{"class":743},[435,889,787],{"class":759},[435,891,763],{"class":486},[435,893,895],{"class":894},"s99_P"," dim",[435,897,898],{"class":743},"=-",[435,900,901],{"class":759},"1",[435,903,582],{"class":486},[435,905,907],{"class":437,"line":906},25,[435,908,453],{"emptyLinePlaceholder":452},[435,910,912],{"class":437,"line":911},26,[435,913,453],{"emptyLinePlaceholder":452},[435,915,917,921,924,926,929,931,934,936,940,942,945,947,949],{"class":437,"line":916},27,[435,918,920],{"class":919},"stp6e","@",[435,922,923],{"class":684},"dataclasses",[435,925,487],{"class":919},[435,927,928],{"class":684},"dataclass",[435,930,688],{"class":486},[435,932,933],{"class":894},"frozen",[435,935,744],{"class":743},[435,937,939],{"class":938},"s39Yj","True",[435,941,498],{"class":486},[435,943,944],{"class":894}," slots",[435,946,744],{"class":743},[435,948,939],{"class":938},[435,950,582],{"class":486},[435,952,954,957,961],{"class":437,"line":953},28,[435,955,956],{"class":680},"class",[435,958,960],{"class":959},"sbgvK"," _ProjectXyahToXyxy",[435,962,719],{"class":486},[435,964,966,970,974],{"class":437,"line":965},29,[435,967,969],{"class":968},"s2W-s","    \"\"\"",[435,971,973],{"class":972},"sithA","Derive `bbox_xyxy` from the (already-predicted) `bbox_xyah` mean.",[435,975,976],{"class":968},"\"\"\"\n",[435,978,980],{"class":437,"line":979},30,[435,981,453],{"emptyLinePlaceholder":452},[435,983,985,988,990,994,997,1001,1004],{"class":437,"line":984},31,[435,986,987],{"class":445},"    source",[435,989,695],{"class":486},[435,991,993],{"class":992},"sZMiF"," str",[435,995,996],{"class":743}," =",[435,998,1000],{"class":999},"sjJ54"," \"",[435,1002,393],{"class":1003},"s_sjI",[435,1005,1006],{"class":999},"\"\n",[435,1008,1010,1013,1015,1017,1019,1021,1023],{"class":437,"line":1009},32,[435,1011,1012],{"class":445},"    target",[435,1014,695],{"class":486},[435,1016,993],{"class":992},[435,1018,996],{"class":743},[435,1020,1000],{"class":999},[435,1022,405],{"class":1003},[435,1024,1006],{"class":999},[435,1026,1028],{"class":437,"line":1027},33,[435,1029,453],{"emptyLinePlaceholder":452},[435,1031,1033,1036,1040,1042,1046,1048,1051,1053,1056,1058,1061,1063,1066,1068,1070,1072],{"class":437,"line":1032},34,[435,1034,1035],{"class":680},"    def",[435,1037,1039],{"class":1038},"sptTA"," __call__",[435,1041,688],{"class":486},[435,1043,1045],{"class":1044},"smCYv","self",[435,1047,498],{"class":486},[435,1049,1050],{"class":691}," cs",[435,1052,695],{"class":486},[435,1054,1055],{"class":445}," Tracklets",[435,1057,498],{"class":486},[435,1059,1060],{"class":691}," ctx",[435,1062,695],{"class":486},[435,1064,1065],{"class":445}," FrameContext",[435,1067,707],{"class":486},[435,1069,710],{"class":486},[435,1071,1055],{"class":445},[435,1073,719],{"class":486},[435,1075,1077,1080],{"class":437,"line":1076},35,[435,1078,1079],{"class":441},"        del",[435,1081,1082],{"class":445}," ctx\n",[435,1084,1086,1089,1091,1093,1096,1098,1101,1104,1107,1109],{"class":437,"line":1085},36,[435,1087,1088],{"class":441},"        if",[435,1090,1050],{"class":445},[435,1092,487],{"class":486},[435,1094,1095],{"class":703},"batch_size",[435,1097,750],{"class":486},[435,1099,1100],{"class":759},"0",[435,1102,1103],{"class":486},"]",[435,1105,1106],{"class":743}," ==",[435,1108,760],{"class":759},[435,1110,719],{"class":486},[435,1112,1114,1117],{"class":437,"line":1113},37,[435,1115,1116],{"class":441},"            return",[435,1118,1119],{"class":445}," cs\n",[435,1121,1123,1126,1128,1130,1133,1135,1137,1139,1142,1144,1146,1148,1151,1153,1156,1158,1161,1163,1166],{"class":437,"line":1122},38,[435,1124,1125],{"class":441},"        return",[435,1127,1050],{"class":445},[435,1129,487],{"class":486},[435,1131,1132],{"class":833},"set",[435,1134,688],{"class":486},[435,1136,1045],{"class":753},[435,1138,487],{"class":486},[435,1140,1141],{"class":703},"target",[435,1143,498],{"class":486},[435,1145,685],{"class":833},[435,1147,688],{"class":486},[435,1149,1150],{"class":1038},"getattr",[435,1152,688],{"class":486},[435,1154,1155],{"class":833},"cs",[435,1157,498],{"class":486},[435,1159,1160],{"class":753}," self",[435,1162,487],{"class":486},[435,1164,1165],{"class":703},"source",[435,1167,1168],{"class":486},")))\n",[435,1170,1172],{"class":437,"line":1171},39,[435,1173,453],{"emptyLinePlaceholder":452},[435,1175,1177],{"class":437,"line":1176},40,[435,1178,453],{"emptyLinePlaceholder":452},[435,1180,1182,1184,1186,1188,1190,1192,1194,1196,1198,1200,1202,1204,1206],{"class":437,"line":1181},41,[435,1183,920],{"class":919},[435,1185,923],{"class":684},[435,1187,487],{"class":919},[435,1189,928],{"class":684},[435,1191,688],{"class":486},[435,1193,933],{"class":894},[435,1195,744],{"class":743},[435,1197,939],{"class":938},[435,1199,498],{"class":486},[435,1201,944],{"class":894},[435,1203,744],{"class":743},[435,1205,939],{"class":938},[435,1207,582],{"class":486},[435,1209,1211,1213,1216],{"class":437,"line":1210},42,[435,1212,956],{"class":680},[435,1214,1215],{"class":959}," _ProjectXyahToXyxyAfterUpdate",[435,1217,719],{"class":486},[435,1219,1221,1223,1226],{"class":437,"line":1220},43,[435,1222,969],{"class":968},[435,1224,1225],{"class":972},"Re-derive `bbox_xyxy` after the Kalman update wrote a new mean.",[435,1227,976],{"class":968},[435,1229,1231],{"class":437,"line":1230},44,[435,1232,453],{"emptyLinePlaceholder":452},[435,1234,1236,1238,1240,1242,1244,1246,1248],{"class":437,"line":1235},45,[435,1237,987],{"class":445},[435,1239,695],{"class":486},[435,1241,993],{"class":992},[435,1243,996],{"class":743},[435,1245,1000],{"class":999},[435,1247,393],{"class":1003},[435,1249,1006],{"class":999},[435,1251,1253,1255,1257,1259,1261,1263,1265],{"class":437,"line":1252},46,[435,1254,1012],{"class":445},[435,1256,695],{"class":486},[435,1258,993],{"class":992},[435,1260,996],{"class":743},[435,1262,1000],{"class":999},[435,1264,405],{"class":1003},[435,1266,1006],{"class":999},[435,1268,1270],{"class":437,"line":1269},47,[435,1271,453],{"emptyLinePlaceholder":452},[435,1273,1275,1277,1279],{"class":437,"line":1274},48,[435,1276,1035],{"class":680},[435,1278,1039],{"class":1038},[435,1280,1281],{"class":486},"(\n",[435,1283,1285,1288],{"class":437,"line":1284},49,[435,1286,1287],{"class":1044},"        self",[435,1289,544],{"class":486},[435,1291,1293,1296,1298,1300],{"class":437,"line":1292},50,[435,1294,1295],{"class":691},"        cs",[435,1297,695],{"class":486},[435,1299,1055],{"class":445},[435,1301,544],{"class":486},[435,1303,1305,1308,1310,1313],{"class":437,"line":1304},51,[435,1306,1307],{"class":691},"        ds",[435,1309,695],{"class":486},[435,1311,1312],{"class":445}," Detections",[435,1314,544],{"class":486},[435,1316,1318,1321,1323,1326],{"class":437,"line":1317},52,[435,1319,1320],{"class":691},"        match",[435,1322,695],{"class":486},[435,1324,1325],{"class":445}," MatchOutcome",[435,1327,544],{"class":486},[435,1329,1331,1334,1336,1338],{"class":437,"line":1330},53,[435,1332,1333],{"class":691},"        ctx",[435,1335,695],{"class":486},[435,1337,1065],{"class":445},[435,1339,544],{"class":486},[435,1341,1343,1346,1348,1350],{"class":437,"line":1342},54,[435,1344,1345],{"class":486},"    )",[435,1347,710],{"class":486},[435,1349,1055],{"class":445},[435,1351,719],{"class":486},[435,1353,1355,1357,1360,1362,1365,1367],{"class":437,"line":1354},55,[435,1356,1079],{"class":441},[435,1358,1359],{"class":445}," ds",[435,1361,498],{"class":486},[435,1363,1364],{"class":445}," match",[435,1366,498],{"class":486},[435,1368,1082],{"class":445},[435,1370,1372,1374,1376,1378,1380,1382,1384,1386,1388,1390],{"class":437,"line":1371},56,[435,1373,1088],{"class":441},[435,1375,1050],{"class":445},[435,1377,487],{"class":486},[435,1379,1095],{"class":703},[435,1381,750],{"class":486},[435,1383,1100],{"class":759},[435,1385,1103],{"class":486},[435,1387,1106],{"class":743},[435,1389,760],{"class":759},[435,1391,719],{"class":486},[435,1393,1395,1397],{"class":437,"line":1394},57,[435,1396,1116],{"class":441},[435,1398,1119],{"class":445},[435,1400,1402,1404,1406,1408,1410,1412,1414,1416,1418,1420,1422,1424,1426,1428,1430,1432,1434,1436,1438],{"class":437,"line":1401},58,[435,1403,1125],{"class":441},[435,1405,1050],{"class":445},[435,1407,487],{"class":486},[435,1409,1132],{"class":833},[435,1411,688],{"class":486},[435,1413,1045],{"class":753},[435,1415,487],{"class":486},[435,1417,1141],{"class":703},[435,1419,498],{"class":486},[435,1421,685],{"class":833},[435,1423,688],{"class":486},[435,1425,1150],{"class":1038},[435,1427,688],{"class":486},[435,1429,1155],{"class":833},[435,1431,498],{"class":486},[435,1433,1160],{"class":753},[435,1435,487],{"class":486},[435,1437,1165],{"class":703},[435,1439,1168],{"class":486},[435,1441,1443],{"class":437,"line":1442},59,[435,1444,453],{"emptyLinePlaceholder":452},[435,1446,1448],{"class":437,"line":1447},60,[435,1449,453],{"emptyLinePlaceholder":452},[435,1451,1453,1455,1458],{"class":437,"line":1452},61,[435,1454,681],{"class":680},[435,1456,1457],{"class":684}," build_sort_tracker",[435,1459,1281],{"class":486},[435,1461,1463,1466],{"class":437,"line":1462},62,[435,1464,1465],{"class":743},"    *",[435,1467,544],{"class":445},[435,1469,1471,1474,1476,1479,1481,1484],{"class":437,"line":1470},63,[435,1472,1473],{"class":691},"    iou_threshold",[435,1475,695],{"class":486},[435,1477,1478],{"class":992}," float",[435,1480,996],{"class":743},[435,1482,1483],{"class":759}," 0.3",[435,1485,544],{"class":486},[435,1487,1489,1492,1494,1497,1499,1501],{"class":437,"line":1488},64,[435,1490,1491],{"class":691},"    min_hits",[435,1493,695],{"class":486},[435,1495,1496],{"class":992}," int",[435,1498,996],{"class":743},[435,1500,800],{"class":759},[435,1502,544],{"class":486},[435,1504,1506,1509,1511,1513,1515,1517],{"class":437,"line":1505},65,[435,1507,1508],{"class":691},"    max_age",[435,1510,695],{"class":486},[435,1512,1496],{"class":992},[435,1514,996],{"class":743},[435,1516,774],{"class":759},[435,1518,544],{"class":486},[435,1520,1522,1524,1526,1528,1530,1533],{"class":437,"line":1521},66,[435,1523,707],{"class":486},[435,1525,710],{"class":486},[435,1527,483],{"class":445},[435,1529,487],{"class":486},[435,1531,1532],{"class":703},"Tracker",[435,1534,719],{"class":486},[435,1536,1538,1541,1543,1546,1548,1551,1553,1555],{"class":437,"line":1537},67,[435,1539,1540],{"class":445},"    bbox ",[435,1542,744],{"class":743},[435,1544,1545],{"class":833}," KalmanBBox",[435,1547,688],{"class":486},[435,1549,1550],{"class":999},"\"",[435,1552,393],{"class":1003},[435,1554,1550],{"class":999},[435,1556,582],{"class":486},[435,1558,1560,1563,1565],{"class":437,"line":1559},68,[435,1561,1562],{"class":445},"    states ",[435,1564,744],{"class":743},[435,1566,1567],{"class":486}," {\n",[435,1569,1571],{"class":437,"line":1570},69,[435,1572,1574],{"class":1573},"sutJx","        # KalmanBBox seeds bbox_xyah + bbox_xyah_cov; predict advances both.\n",[435,1576,1578,1581,1583,1585,1588],{"class":437,"line":1577},70,[435,1579,1580],{"class":743},"        **",[435,1582,291],{"class":445},[435,1584,487],{"class":486},[435,1586,1587],{"class":833},"state_entries",[435,1589,1590],{"class":486},"(),\n",[435,1592,1594],{"class":437,"line":1593},71,[435,1595,1596],{"class":1573},"        # Projection state: derives bbox_xyxy from the Kalman mean *after*\n",[435,1598,1600],{"class":437,"line":1599},72,[435,1601,1602],{"class":1573},"        # the predict step (the iteration order in `states` decides this:\n",[435,1604,1606],{"class":437,"line":1605},73,[435,1607,1608],{"class":1573},"        # bbox_xyah's predict runs first, then this projection writes the\n",[435,1610,1612],{"class":437,"line":1611},74,[435,1613,1614],{"class":1573},"        # corresponding bbox_xyxy onto the snapshot). Initialized directly\n",[435,1616,1618],{"class":437,"line":1617},75,[435,1619,1620],{"class":1573},"        # from the detection's bbox_xyxy so first-frame tracklets have a\n",[435,1622,1624],{"class":437,"line":1623},76,[435,1625,1626],{"class":1573},"        # consistent xyxy field before any predict has run.\n",[435,1628,1630,1633,1635,1637,1639,1642],{"class":437,"line":1629},77,[435,1631,1632],{"class":999},"        \"",[435,1634,405],{"class":1003},[435,1636,1550],{"class":999},[435,1638,695],{"class":486},[435,1640,1641],{"class":833}," State",[435,1643,1281],{"class":486},[435,1645,1647,1650,1652,1655,1657,1660,1662,1664,1667,1670,1673,1675,1678,1680,1683],{"class":437,"line":1646},78,[435,1648,1649],{"class":894},"            schema",[435,1651,744],{"class":743},[435,1653,1654],{"class":833},"TensorSpec",[435,1656,688],{"class":486},[435,1658,1659],{"class":894},"shape",[435,1661,744],{"class":743},[435,1663,688],{"class":486},[435,1665,1666],{"class":759},"4",[435,1668,1669],{"class":486},",),",[435,1671,1672],{"class":894}," dtype",[435,1674,744],{"class":743},[435,1676,1677],{"class":833},"torch",[435,1679,487],{"class":486},[435,1681,1682],{"class":703},"float32",[435,1684,1685],{"class":486},"),\n",[435,1687,1689,1692,1694,1697],{"class":437,"line":1688},79,[435,1690,1691],{"class":894},"            process",[435,1693,744],{"class":743},[435,1695,1696],{"class":833},"_ProjectXyahToXyxy",[435,1698,1590],{"class":486},[435,1700,1702,1705,1707,1710],{"class":437,"line":1701},80,[435,1703,1704],{"class":894},"            observation",[435,1706,744],{"class":743},[435,1708,1709],{"class":833},"_ProjectXyahToXyxyAfterUpdate",[435,1711,1590],{"class":486},[435,1713,1715,1718,1720,1723,1725,1727,1729,1731],{"class":437,"line":1714},81,[435,1716,1717],{"class":894},"            init",[435,1719,744],{"class":743},[435,1721,1722],{"class":833},"FromDetectionField",[435,1724,688],{"class":486},[435,1726,1550],{"class":999},[435,1728,405],{"class":1003},[435,1730,1550],{"class":999},[435,1732,1685],{"class":486},[435,1734,1736],{"class":437,"line":1735},82,[435,1737,1738],{"class":486},"        ),\n",[435,1740,1742],{"class":437,"line":1741},83,[435,1743,1744],{"class":486},"    }\n",[435,1746,1748,1750,1752,1754,1756],{"class":437,"line":1747},84,[435,1749,826],{"class":441},[435,1751,483],{"class":445},[435,1753,487],{"class":486},[435,1755,1532],{"class":833},[435,1757,1281],{"class":486},[435,1759,1761,1764,1766,1768],{"class":437,"line":1760},85,[435,1762,1763],{"class":894},"        root",[435,1765,744],{"class":743},[435,1767,349],{"class":833},[435,1769,1281],{"class":486},[435,1771,1773,1776,1778,1780,1782,1784,1786,1788],{"class":437,"line":1772},86,[435,1774,1775],{"class":894},"            cost",[435,1777,744],{"class":743},[435,1779,353],{"class":833},[435,1781,688],{"class":486},[435,1783,1550],{"class":999},[435,1785,405],{"class":1003},[435,1787,1550],{"class":999},[435,1789,1685],{"class":486},[435,1791,1793,1796,1798,1801,1803,1806,1808,1811,1813,1816,1819,1822],{"class":437,"line":1792},87,[435,1794,1795],{"class":894},"            assoc",[435,1797,744],{"class":743},[435,1799,1800],{"class":833},"Associate",[435,1802,688],{"class":486},[435,1804,1805],{"class":833},"Jonker",[435,1807,688],{"class":486},[435,1809,1810],{"class":894},"threshold",[435,1812,744],{"class":743},[435,1814,1815],{"class":759},"1.0",[435,1817,1818],{"class":743}," -",[435,1820,1821],{"class":833}," iou_threshold",[435,1823,1824],{"class":486},")),\n",[435,1826,1828],{"class":437,"line":1827},88,[435,1829,1738],{"class":486},[435,1831,1833,1836,1838,1840],{"class":437,"line":1832},89,[435,1834,1835],{"class":894},"        states",[435,1837,744],{"class":743},[435,1839,270],{"class":833},[435,1841,544],{"class":486},[435,1843,1845,1848,1850,1853,1855,1858,1860,1862,1864,1867,1869,1872],{"class":437,"line":1844},90,[435,1846,1847],{"class":894},"        lifecycle",[435,1849,744],{"class":743},[435,1851,1852],{"class":833},"StandardLifecycle",[435,1854,688],{"class":486},[435,1856,1857],{"class":894},"min_hits",[435,1859,744],{"class":743},[435,1861,1857],{"class":833},[435,1863,498],{"class":486},[435,1865,1866],{"class":894}," max_age",[435,1868,744],{"class":743},[435,1870,1871],{"class":833},"max_age",[435,1873,1685],{"class":486},[435,1875,1877,1880,1882,1885],{"class":437,"line":1876},91,[435,1878,1879],{"class":894},"        visibility",[435,1881,744],{"class":743},[435,1883,1884],{"class":833},"ConfirmedOnly",[435,1886,1590],{"class":486},[435,1888,1890],{"class":437,"line":1889},92,[435,1891,1892],{"class":486},"    )\n",[344,1894,1895],{},"Detection requirements:",[1897,1898,1899,1908],"ul",{},[1900,1901,1902,1904,1905,1907],"li",{},[339,1903,393],{}," — ",[339,1906,397],{}," centre\u002Faspect\u002Fheight for the Kalman update.",[1900,1909,1910,1904,1912,1914,1915,1918],{},[339,1911,405],{},[339,1913,397],{}," xyxy for the IoU cost and as the seed for\nthe projection state above. The two must agree (use a single source of\ntruth in your detector adapter; ",[339,1916,1917],{},"_xyah_to_xyxy"," is one direction).",[1920,1921,1922],"style",{},"html pre.shiki code .sVHd0, html code.shiki .sVHd0{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#D73A49;--shiki-default-font-style:inherit;--shiki-dark:#F97583;--shiki-dark-font-style:inherit}html pre.shiki code .su5hD, html code.shiki .su5hD{--shiki-light:#90A4AE;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sP7_E, html code.shiki .sP7_E{--shiki-light:#39ADB5;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sbsja, html code.shiki .sbsja{--shiki-light:#9C3EDA;--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sGLFI, html code.shiki .sGLFI{--shiki-light:#6182B8;--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sFwrP, html code.shiki .sFwrP{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#24292E;--shiki-default-font-style:inherit;--shiki-dark:#E1E4E8;--shiki-dark-font-style:inherit}html pre.shiki code .skxfh, html code.shiki .skxfh{--shiki-light:#E53935;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .smGrS, html code.shiki .smGrS{--shiki-light:#39ADB5;--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .s_hVV, html code.shiki .s_hVV{--shiki-light:#90A4AE;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .srdBf, html code.shiki .srdBf{--shiki-light:#F76D47;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .slqww, html code.shiki .slqww{--shiki-light:#6182B8;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s99_P, html code.shiki .s99_P{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#E36209;--shiki-default-font-style:inherit;--shiki-dark:#FFAB70;--shiki-dark-font-style:inherit}html pre.shiki code .stp6e, html code.shiki .stp6e{--shiki-light:#39ADB5;--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .s39Yj, html code.shiki .s39Yj{--shiki-light:#39ADB5;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sbgvK, html code.shiki .sbgvK{--shiki-light:#E2931D;--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .s2W-s, html code.shiki .s2W-s{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#032F62;--shiki-default-font-style:inherit;--shiki-dark:#9ECBFF;--shiki-dark-font-style:inherit}html pre.shiki code .sithA, html code.shiki .sithA{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#032F62;--shiki-default-font-style:inherit;--shiki-dark:#9ECBFF;--shiki-dark-font-style:inherit}html pre.shiki code .sZMiF, html code.shiki .sZMiF{--shiki-light:#E2931D;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sjJ54, html code.shiki .sjJ54{--shiki-light:#39ADB5;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .s_sjI, html code.shiki .s_sjI{--shiki-light:#91B859;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sptTA, html code.shiki .sptTA{--shiki-light:#6182B8;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .smCYv, html code.shiki .smCYv{--shiki-light:#E53935;--shiki-light-font-style:italic;--shiki-default:#24292E;--shiki-default-font-style:inherit;--shiki-dark:#E1E4E8;--shiki-dark-font-style:inherit}html pre.shiki code .sutJx, html code.shiki .sutJx{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#6A737D;--shiki-default-font-style:inherit;--shiki-dark:#6A737D;--shiki-dark-font-style:inherit}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":431,"searchDepth":456,"depth":456,"links":1924},[],"SORT (Bewley et al., 2016) is a single-stage IoU + Kalman bbox tracker.\nIt maps onto 2.0 as one Pipe whose cost is BoxIoU and whose state\nincludes a KalmanBBox predict + KalmanUpdate observation.","md",{},{"title":34,"description":1925},"8EbCFvK3--yaeEj3Sno73i7eOldwebkQN7_B_8SqAsY",{},1785139888975]