Skip to content

Commit 1bf7d8e

Browse files
fix(pre_commit): 🎨 auto format pre-commit hooks
1 parent ceb0218 commit 1bf7d8e

2 files changed

Lines changed: 38 additions & 22 deletions

File tree

trackers/core/ksp/solver.py

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from collections import defaultdict
22
from dataclasses import dataclass
3-
from typing import Any, List, Optional, Tuple, Set
3+
from typing import Any, List, Optional, Set, Tuple
44

55
import networkx as nx
66
import numpy as np
@@ -39,7 +39,9 @@ def __init__(
3939
size_weight: float = 0.1,
4040
conf_weight: float = 0.1,
4141
):
42-
self.path_overlap_penalty = path_overlap_penalty if path_overlap_penalty is not None else 40
42+
self.path_overlap_penalty = (
43+
path_overlap_penalty if path_overlap_penalty is not None else 40
44+
)
4345
self.weight_key = "weight"
4446
self.source = "SOURCE"
4547
self.sink = "SINK"
@@ -58,7 +60,9 @@ def __init__(
5860
self.weights["conf"] = conf_weight
5961

6062
# Entry/exit region settings
61-
self.entry_exit_regions: List[Tuple[int, int, int, int]] = [] # (x1, y1, x2, y2)
63+
self.entry_exit_regions: List[
64+
Tuple[int, int, int, int]
65+
] = [] # (x1, y1, x2, y2)
6266

6367
# Border region settings
6468
self.use_border_regions = True
@@ -102,7 +106,9 @@ def set_border_entry_exit(
102106
frame_size (Tuple[int, int]): Size of the image (width, height).
103107
"""
104108
self.use_border_regions = use_border
105-
self.active_borders = borders if borders is not None else {"left", "right", "top", "bottom"}
109+
self.active_borders = (
110+
borders if borders is not None else {"left", "right", "top", "bottom"}
111+
)
106112
self.border_margin = margin
107113
self.frame_size = frame_size
108114

@@ -139,7 +145,9 @@ def _edge_cost(self, nodeU: TrackNode, nodeV: TrackNode) -> float:
139145

140146
area_a = (bboxU[2] - bboxU[0]) * (bboxU[3] - bboxU[1])
141147
area_b = (bboxV[2] - bboxV[0]) * (bboxV[3] - bboxV[1])
142-
size_penalty = np.log((max(area_a, area_b) / (min(area_a, area_b) + 1e-6)) + 1e-6)
148+
size_penalty = np.log(
149+
(max(area_a, area_b) / (min(area_a, area_b) + 1e-6)) + 1e-6
150+
)
143151

144152
conf_penalty = 1 - min(conf_u, conf_v)
145153

@@ -208,7 +216,9 @@ def solve(self, k: Optional[int] = None) -> List[List[TrackNode]]:
208216
data[self.weight_key] = base + penalty
209217

210218
try:
211-
_, path = nx.single_source_dijkstra(G_mod, self.source, self.sink, weight=self.weight_key)
219+
_, path = nx.single_source_dijkstra(
220+
G_mod, self.source, self.sink, weight=self.weight_key
221+
)
212222
except nx.NetworkXNoPath:
213223
print(f"No path found from source to sink at {_i}th iteration")
214224
break

trackers/core/ksp/tracker.py

Lines changed: 22 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import os
22
from collections import defaultdict
3-
from typing import Callable, List, Optional, Tuple, Set
3+
from typing import Callable, List, Optional, Set, Tuple
44

55
import cv2
66
import numpy as np
@@ -65,9 +65,13 @@ def __init__(
6565
border_margin (Optional[int]): Border thickness in pixels.
6666
frame_size (Optional[Tuple[int, int]]): Size of the image (width, height).
6767
"""
68-
self.entry_exit_regions = entry_exit_regions if entry_exit_regions is not None else []
68+
self.entry_exit_regions = (
69+
entry_exit_regions if entry_exit_regions is not None else []
70+
)
6971
self.use_border = use_border
70-
self.borders = borders if borders is not None else {"left", "right", "top", "bottom"}
72+
self.borders = (
73+
borders if borders is not None else {"left", "right", "top", "bottom"}
74+
)
7175
self.border_margin = border_margin
7276
self.frame_size = frame_size
7377
self._solver = KSPSolver(
@@ -106,7 +110,7 @@ def _update(self, detections: sv.Detections) -> sv.Detections:
106110
"""
107111
self._solver.append_frame(detections)
108112
return detections
109-
113+
110114
def set_entry_exit_regions(self, regions: List[Tuple[int, int, int, int]]) -> None:
111115
"""
112116
Set rectangular entry/exit zones (x1, y1, x2, y2).
@@ -122,7 +126,9 @@ def set_border_entry_exit(
122126
frame_size: Optional[Tuple[int, int]] = (1920, 1080),
123127
) -> None:
124128
self.use_border = use_border
125-
self.borders = borders if borders is not None else {"left", "right", "top", "bottom"}
129+
self.borders = (
130+
borders if borders is not None else {"left", "right", "top", "bottom"}
131+
)
126132
self.border_margin = margin
127133
self.frame_size = frame_size
128134
self._solver.set_border_entry_exit(
@@ -211,12 +217,12 @@ def track(
211217
if source.lower().endswith(".mp4"):
212218
frames_generator = sv.get_video_frames_generator(source_path=source)
213219
video_info = sv.VideoInfo.from_video_path(video_path=source)
214-
220+
215221
self._solver.set_border_entry_exit(
216-
self.use_border,
217-
self.borders,
218-
self.border_margin,
219-
(video_info.width, video_info.height)
222+
self.use_border,
223+
self.borders,
224+
self.border_margin,
225+
(video_info.width, video_info.height),
220226
)
221227

222228
for frame in tqdm(
@@ -248,12 +254,12 @@ def track(
248254

249255
if not has_set_frame_size:
250256
self._solver.set_border_entry_exit(
251-
self.use_border,
252-
self.borders,
253-
self.border_margin,
254-
(width, height)
255-
)
256-
257+
self.use_border,
258+
self.borders,
259+
self.border_margin,
260+
(width, height),
261+
)
262+
257263
detections = get_model_detections(image)
258264
self._update(detections)
259265
else:

0 commit comments

Comments
 (0)