ultralytics 8.3.120__py3-none-any.whl → 8.3.122__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- ultralytics/__init__.py +1 -1
- ultralytics/cfg/__init__.py +1 -1
- ultralytics/cfg/trackers/botsort.yaml +1 -1
- ultralytics/data/augment.py +3 -1
- ultralytics/data/split_dota.py +1 -1
- ultralytics/engine/exporter.py +5 -0
- ultralytics/models/utils/loss.py +1 -1
- ultralytics/solutions/solutions.py +1 -1
- ultralytics/solutions/speed_estimation.py +48 -52
- ultralytics/trackers/bot_sort.py +2 -0
- ultralytics/utils/downloads.py +2 -1
- ultralytics/utils/export.py +1 -1
- ultralytics/utils/loss.py +4 -3
- {ultralytics-8.3.120.dist-info → ultralytics-8.3.122.dist-info}/METADATA +3 -3
- {ultralytics-8.3.120.dist-info → ultralytics-8.3.122.dist-info}/RECORD +19 -19
- {ultralytics-8.3.120.dist-info → ultralytics-8.3.122.dist-info}/WHEEL +1 -1
- {ultralytics-8.3.120.dist-info → ultralytics-8.3.122.dist-info}/entry_points.txt +0 -0
- {ultralytics-8.3.120.dist-info → ultralytics-8.3.122.dist-info}/licenses/LICENSE +0 -0
- {ultralytics-8.3.120.dist-info → ultralytics-8.3.122.dist-info}/top_level.txt +0 -0
ultralytics/__init__.py
CHANGED
ultralytics/cfg/__init__.py
CHANGED
@@ -701,7 +701,7 @@ def handle_yolo_solutions(args: List[str]) -> None:
|
|
701
701
|
solution_name = "count" # Default for invalid solution
|
702
702
|
|
703
703
|
if solution_name == "inference":
|
704
|
-
checks.check_requirements("streamlit>=1.29.0
|
704
|
+
checks.check_requirements("streamlit>=1.29.0")
|
705
705
|
LOGGER.info("💡 Loading Ultralytics live inference app...")
|
706
706
|
subprocess.run(
|
707
707
|
[ # Run subprocess with Streamlit custom argument
|
@@ -17,6 +17,6 @@ fuse_score: True # Whether to fuse confidence scores with the iou distances befo
|
|
17
17
|
gmc_method: sparseOptFlow # method of global motion compensation
|
18
18
|
# ReID model related thresh
|
19
19
|
proximity_thresh: 0.5 # minimum IoU for valid match with ReID
|
20
|
-
appearance_thresh: 0.
|
20
|
+
appearance_thresh: 0.8 # minimum appearance similarity for ReID
|
21
21
|
with_reid: False
|
22
22
|
model: auto # uses native features if detector is YOLO else yolo11n-cls.pt
|
ultralytics/data/augment.py
CHANGED
@@ -1026,7 +1026,9 @@ class CutMix(BaseMixTransform):
|
|
1026
1026
|
labels2 = labels.pop("mix_labels")[0]
|
1027
1027
|
area = cut_areas[np.random.choice(idx)] # randomle select one
|
1028
1028
|
ioa2 = bbox_ioa(area[None], labels2["instances"].bboxes).squeeze(0)
|
1029
|
-
indexes2 = np.nonzero(ioa2 >= 0.01 if len(labels["instances"].segments) else 0.1)[0]
|
1029
|
+
indexes2 = np.nonzero(ioa2 >= (0.01 if len(labels["instances"].segments) else 0.1))[0]
|
1030
|
+
if len(indexes2) == 0:
|
1031
|
+
return labels
|
1030
1032
|
|
1031
1033
|
instances2 = labels2["instances"][indexes2]
|
1032
1034
|
instances2.convert_bbox("xyxy")
|
ultralytics/data/split_dota.py
CHANGED
@@ -30,7 +30,7 @@ def bbox_iof(polygon1, bbox2, eps=1e-6):
|
|
30
30
|
Polygon format: [x1, y1, x2, y2, x3, y3, x4, y4].
|
31
31
|
Bounding box format: [x_min, y_min, x_max, y_max].
|
32
32
|
"""
|
33
|
-
check_requirements("shapely")
|
33
|
+
check_requirements("shapely>=2.0.0")
|
34
34
|
from shapely.geometry import Polygon
|
35
35
|
|
36
36
|
polygon1 = polygon1.reshape(-1, 4, 2)
|
ultralytics/engine/exporter.py
CHANGED
@@ -636,6 +636,8 @@ class Exporter:
|
|
636
636
|
if self.args.int8:
|
637
637
|
fq = str(self.file).replace(self.file.suffix, f"_int8_openvino_model{os.sep}")
|
638
638
|
fq_ov = str(Path(fq) / self.file.with_suffix(".xml").name)
|
639
|
+
# INT8 requires nncf, nncf requires packaging>=23.2 https://github.com/openvinotoolkit/nncf/issues/3463
|
640
|
+
check_requirements("packaging>=23.2") # must be installed first to build nncf wheel
|
639
641
|
check_requirements("nncf>=2.14.0")
|
640
642
|
import nncf
|
641
643
|
|
@@ -849,6 +851,9 @@ class Exporter:
|
|
849
851
|
ct_model.license = m.pop("license")
|
850
852
|
ct_model.version = m.pop("version")
|
851
853
|
ct_model.user_defined_metadata.update({k: str(v) for k, v in m.items()})
|
854
|
+
if self.model.task == "classify":
|
855
|
+
ct_model.user_defined_metadata.update({"com.apple.coreml.model.preview.type": "imageClassifier"})
|
856
|
+
|
852
857
|
try:
|
853
858
|
ct_model.save(str(f)) # save *.mlpackage
|
854
859
|
except Exception as e:
|
ultralytics/models/utils/loss.py
CHANGED
@@ -58,7 +58,7 @@ class DETRLoss(nn.Module):
|
|
58
58
|
use_uni_match (bool): Whether to use fixed layer for auxiliary branch label assignment.
|
59
59
|
uni_match_ind (int): Index of fixed layer for uni_match.
|
60
60
|
gamma (float): The focusing parameter that controls how much the loss focuses on hard-to-classify examples.
|
61
|
-
alpha (float): The balancing factor used to address class imbalance.
|
61
|
+
alpha (float | list): The balancing factor used to address class imbalance.
|
62
62
|
"""
|
63
63
|
super().__init__()
|
64
64
|
|
@@ -53,7 +53,7 @@ class BaseSolution:
|
|
53
53
|
is_cli (bool): Enables CLI mode if set to True.
|
54
54
|
**kwargs (Any): Additional configuration parameters that override defaults.
|
55
55
|
"""
|
56
|
-
check_requirements("shapely>=2.0.0
|
56
|
+
check_requirements("shapely>=2.0.0")
|
57
57
|
from shapely.geometry import LineString, Point, Polygon
|
58
58
|
from shapely.prepared import prep
|
59
59
|
|
@@ -1,6 +1,7 @@
|
|
1
1
|
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
|
2
2
|
|
3
|
-
from
|
3
|
+
from collections import deque
|
4
|
+
from math import sqrt
|
4
5
|
|
5
6
|
from ultralytics.solutions.solutions import BaseSolution, SolutionAnnotator, SolutionResults
|
6
7
|
from ultralytics.utils.plotting import colors
|
@@ -15,12 +16,10 @@ class SpeedEstimator(BaseSolution):
|
|
15
16
|
|
16
17
|
Attributes:
|
17
18
|
spd (Dict[int, float]): Dictionary storing speed data for tracked objects.
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
track_line (List[Tuple[float, float]]): List of points representing the object's track.
|
23
|
-
r_s (LineString): LineString object representing the speed estimation region.
|
19
|
+
trk_hist (Dict[int, float]): Dictionary storing the object tracking data.
|
20
|
+
max_hist (int): maximum track history before computing speed
|
21
|
+
meters_per_pixel (float): Real-world meters represented by one pixel (e.g., 0.04 for 4m over 100px).
|
22
|
+
max_speed (int): Maximum allowed object speed; values above this will be capped at 120 km/h.
|
24
23
|
|
25
24
|
Methods:
|
26
25
|
initialize_region: Initializes the speed estimation region.
|
@@ -45,12 +44,15 @@ class SpeedEstimator(BaseSolution):
|
|
45
44
|
"""
|
46
45
|
super().__init__(**kwargs)
|
47
46
|
|
48
|
-
self.
|
49
|
-
|
50
|
-
self.
|
51
|
-
self.
|
52
|
-
self.
|
53
|
-
self.
|
47
|
+
self.fps = kwargs.get("fps", 30) # assumed video FPS
|
48
|
+
self.frame_count = 0 # global frame count
|
49
|
+
self.trk_frame_ids = {} # Track ID → first frame index
|
50
|
+
self.spd = {} # Final speed per object (km/h), once locked
|
51
|
+
self.trk_hist = {} # Track ID → deque of (time, position)
|
52
|
+
self.locked_ids = set() # Track IDs whose speed has been finalized
|
53
|
+
self.max_hist = kwargs.get("max_hist", 5) # Required frame history before computing speed
|
54
|
+
self.meter_per_pixel = kwargs.get("meter_per_pixel", 0.05) # Scene scale, depends on camera details
|
55
|
+
self.max_speed = kwargs.get("max_speed", 120) # max_speed adjustment
|
54
56
|
|
55
57
|
def process(self, im0):
|
56
58
|
"""
|
@@ -67,45 +69,39 @@ class SpeedEstimator(BaseSolution):
|
|
67
69
|
>>> image = np.random.randint(0, 255, (480, 640, 3), dtype=np.uint8)
|
68
70
|
>>> results = estimator.process(image)
|
69
71
|
"""
|
70
|
-
self.
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
self.
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
# Calculate speed based on vertical displacement and time
|
104
|
-
self.spd[track_id] = abs(self.track_line[-1][1] - self.trk_pp[track_id][1]) / time_difference
|
105
|
-
|
106
|
-
# Update tracking data for next frame
|
107
|
-
self.trk_pt[track_id] = time()
|
108
|
-
self.trk_pp[track_id] = self.track_line[-1]
|
72
|
+
self.frame_count += 1
|
73
|
+
self.extract_tracks(im0)
|
74
|
+
annotator = SolutionAnnotator(im0, line_width=self.line_width)
|
75
|
+
|
76
|
+
for box, track_id, _, _ in zip(self.boxes, self.track_ids, self.clss, self.confs):
|
77
|
+
self.store_tracking_history(track_id, box)
|
78
|
+
|
79
|
+
if track_id not in self.trk_hist: # Initialize history if new track found
|
80
|
+
self.trk_hist[track_id] = deque(maxlen=self.max_hist)
|
81
|
+
self.trk_frame_ids[track_id] = self.frame_count
|
82
|
+
|
83
|
+
if track_id not in self.locked_ids: # Update history until speed is locked
|
84
|
+
trk_hist = self.trk_hist[track_id]
|
85
|
+
trk_hist.append(self.track_line[-1])
|
86
|
+
|
87
|
+
# Compute and lock speed once enough history is collected
|
88
|
+
if len(trk_hist) == self.max_hist:
|
89
|
+
p0, p1 = trk_hist[0], trk_hist[-1] # First and last points of track
|
90
|
+
dt = (self.frame_count - self.trk_frame_ids[track_id]) / self.fps # Time in seconds
|
91
|
+
if dt > 0:
|
92
|
+
dx, dy = p1[0] - p0[0], p1[1] - p0[1] # pixel displacement
|
93
|
+
pixel_distance = sqrt(dx * dx + dy * dy) # get pixel distance
|
94
|
+
meters = pixel_distance * self.meter_per_pixel # convert to meters
|
95
|
+
self.spd[track_id] = int(
|
96
|
+
min((meters / dt) * 3.6, self.max_speed)
|
97
|
+
) # convert to km/h and store final speed
|
98
|
+
self.locked_ids.add(track_id) # prevent further updates
|
99
|
+
self.trk_hist.pop(track_id, None) # free memory
|
100
|
+
self.trk_frame_ids.pop(track_id, None) # optional: remove frame start too
|
101
|
+
|
102
|
+
if track_id in self.spd:
|
103
|
+
speed_label = f"{self.spd[track_id]} km/h"
|
104
|
+
annotator.box_label(box, label=speed_label, color=colors(track_id, True)) # Draw bounding box
|
109
105
|
|
110
106
|
plot_im = annotator.result()
|
111
107
|
self.display_output(plot_im) # Display output with base class function
|
ultralytics/trackers/bot_sort.py
CHANGED
@@ -255,4 +255,6 @@ class ReID:
|
|
255
255
|
def __call__(self, img, dets):
|
256
256
|
"""Extract embeddings for detected objects."""
|
257
257
|
feats = self.model([save_one_box(det, img, save=False) for det in xywh2xyxy(torch.from_numpy(dets[:, :4]))])
|
258
|
+
if feats.shape[0] != dets.shape[0] and feats[0].shape[0] == dets.shape[0]:
|
259
|
+
feats = feats[0] # batched prediction with non-PyTorch backend
|
258
260
|
return [f.cpu().numpy() for f in feats]
|
ultralytics/utils/downloads.py
CHANGED
@@ -320,9 +320,10 @@ def safe_download(
|
|
320
320
|
LOGGER.info(f"{desc}...")
|
321
321
|
f.parent.mkdir(parents=True, exist_ok=True) # make directory if missing
|
322
322
|
check_disk_space(url, path=f.parent)
|
323
|
+
curl_installed = shutil.which("curl")
|
323
324
|
for i in range(retry + 1):
|
324
325
|
try:
|
325
|
-
if curl or i > 0: # curl download with retry, continue
|
326
|
+
if (curl or i > 0) and curl_installed: # curl download with retry, continue
|
326
327
|
s = "sS" * (not progress) # silent
|
327
328
|
r = subprocess.run(["curl", "-#", f"-{s}L", url, "-o", f, "--retry", "3", "-C", "-"]).returncode
|
328
329
|
assert r == 0, f"Curl return value {r}"
|
ultralytics/utils/export.py
CHANGED
@@ -167,7 +167,7 @@ def export_engine(
|
|
167
167
|
trt.IInt8Calibrator.__init__(self)
|
168
168
|
self.dataset = dataset
|
169
169
|
self.data_iter = iter(dataset)
|
170
|
-
self.algo = trt.CalibrationAlgoType.
|
170
|
+
self.algo = trt.CalibrationAlgoType.MINMAX_CALIBRATION
|
171
171
|
self.batch = dataset.batch_size
|
172
172
|
self.cache = Path(cache)
|
173
173
|
|
ultralytics/utils/loss.py
CHANGED
@@ -48,14 +48,14 @@ class FocalLoss(nn.Module):
|
|
48
48
|
|
49
49
|
Args:
|
50
50
|
gamma (float): The focusing parameter that controls how much the loss focuses on hard-to-classify examples.
|
51
|
-
alpha (float): The balancing factor used to address class imbalance.
|
51
|
+
alpha (float | list): The balancing factor used to address class imbalance.
|
52
52
|
"""
|
53
53
|
|
54
54
|
def __init__(self, gamma=1.5, alpha=0.25):
|
55
55
|
"""Initialize FocalLoss class with no parameters."""
|
56
56
|
super().__init__()
|
57
57
|
self.gamma = gamma
|
58
|
-
self.alpha = alpha
|
58
|
+
self.alpha = torch.tensor(alpha)
|
59
59
|
|
60
60
|
def forward(self, pred, label):
|
61
61
|
"""Calculate focal loss with modulating factors for class imbalance."""
|
@@ -68,7 +68,8 @@ class FocalLoss(nn.Module):
|
|
68
68
|
p_t = label * pred_prob + (1 - label) * (1 - pred_prob)
|
69
69
|
modulating_factor = (1.0 - p_t) ** self.gamma
|
70
70
|
loss *= modulating_factor
|
71
|
-
if self.alpha > 0:
|
71
|
+
if (self.alpha > 0).any():
|
72
|
+
self.alpha = self.alpha.to(device=pred.device, dtype=pred.dtype)
|
72
73
|
alpha_factor = label * self.alpha + (1 - label) * (1 - self.alpha)
|
73
74
|
loss *= alpha_factor
|
74
75
|
return loss.mean(1).sum()
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: ultralytics
|
3
|
-
Version: 8.3.
|
3
|
+
Version: 8.3.122
|
4
4
|
Summary: Ultralytics YOLO 🚀 for SOTA object detection, multi-object tracking, instance segmentation, pose estimation and image classification.
|
5
5
|
Author-email: Glenn Jocher <glenn.jocher@ultralytics.com>, Jing Qiu <jing.qiu@ultralytics.com>
|
6
6
|
Maintainer-email: Ultralytics <hello@ultralytics.com>
|
@@ -68,8 +68,8 @@ Requires-Dist: tensorflowjs>=2.0.0; extra == "export"
|
|
68
68
|
Requires-Dist: tensorstore>=0.1.63; (platform_machine == "aarch64" and python_version >= "3.9") and extra == "export"
|
69
69
|
Requires-Dist: h5py!=3.11.0; platform_machine == "aarch64" and extra == "export"
|
70
70
|
Provides-Extra: solutions
|
71
|
-
Requires-Dist: shapely
|
72
|
-
Requires-Dist: streamlit
|
71
|
+
Requires-Dist: shapely>=2.0.0; extra == "solutions"
|
72
|
+
Requires-Dist: streamlit>=1.29.0; extra == "solutions"
|
73
73
|
Provides-Extra: logging
|
74
74
|
Requires-Dist: wandb; extra == "logging"
|
75
75
|
Requires-Dist: tensorboard; extra == "logging"
|
@@ -7,10 +7,10 @@ tests/test_exports.py,sha256=dhZn86LdbapW15RthQF870LGxDjC1MUZhlGdBgPmgIQ,9716
|
|
7
7
|
tests/test_integrations.py,sha256=dQteeRsRVuT_p5-T88-7jqT65Zm9iAXkyKg-KQ1_TQ8,6341
|
8
8
|
tests/test_python.py,sha256=ok2xp7zwPOwcyl4yNawlx1uJ5HETn9eU-jyTPYzA0fI,25491
|
9
9
|
tests/test_solutions.py,sha256=BIvg9zW0a_ggEmrPKgB_Y0MncveH-eYuN5KlqdJ6nHs,5726
|
10
|
-
ultralytics/__init__.py,sha256=
|
10
|
+
ultralytics/__init__.py,sha256=StjzKKqUrYk4rkeEY2AnsNAR8keYsHJzELLBKmqs6Q4,730
|
11
11
|
ultralytics/assets/bus.jpg,sha256=wCAZxJecGR63Od3ZRERe9Aja1Weayrb9Ug751DS_vGM,137419
|
12
12
|
ultralytics/assets/zidane.jpg,sha256=Ftc4aeMmen1O0A3o6GCDO9FlfBslLpTAw0gnetx7bts,50427
|
13
|
-
ultralytics/cfg/__init__.py,sha256=
|
13
|
+
ultralytics/cfg/__init__.py,sha256=ZXbvd-lyu0IIwVYAN6NH3KbQ5MLC5865Lh2c7IDkNSw,39675
|
14
14
|
ultralytics/cfg/default.yaml,sha256=zSiCmQp_HRlh0gZe_AZSjNQNe1aNDoX2vcNUo5oJs2Q,8306
|
15
15
|
ultralytics/cfg/datasets/Argoverse.yaml,sha256=_xlEDIJ9XkUo0v_iNL7FW079BoSeZtKSuLteKTtGbA8,3275
|
16
16
|
ultralytics/cfg/datasets/DOTAv1.5.yaml,sha256=SHND_CFkojxw5iQD5Mcgju2kCZIl0gW2ajuzv1cqoL0,1224
|
@@ -100,25 +100,25 @@ ultralytics/cfg/models/v9/yolov9m.yaml,sha256=WcKQ3xRsC1JMgA42Hx4xzr4FZmtE6B3wKv
|
|
100
100
|
ultralytics/cfg/models/v9/yolov9s.yaml,sha256=j_v3JWaPtiuM8aKJt15Z_4HPRCoHWn_G6Z07t8CZyjk,1391
|
101
101
|
ultralytics/cfg/models/v9/yolov9t.yaml,sha256=Q8GpSXE7fumhuJiQg4a2SkuS_UmnXqp-eoZxW_C0vEo,1375
|
102
102
|
ultralytics/cfg/solutions/default.yaml,sha256=c-9thwI7y7VmIoIM6AW70Z0r825SToH2h7gSCsUoAak,1664
|
103
|
-
ultralytics/cfg/trackers/botsort.yaml,sha256=
|
103
|
+
ultralytics/cfg/trackers/botsort.yaml,sha256=TpRaK5kH_-QbjCQ7ekM4s_7j8I8ti3q8Hs7WDz4rEwA,1215
|
104
104
|
ultralytics/cfg/trackers/bytetrack.yaml,sha256=6u-tiZlk16EqEwkNXaMrza6PAQmWj_ypgv26LGCtPDg,886
|
105
105
|
ultralytics/data/__init__.py,sha256=nAXaL1puCc7z_NjzQNlJnhbVhT9Fla2u7Dsqo7q1dAc,644
|
106
106
|
ultralytics/data/annotator.py,sha256=VEwb11FsEZm75qlEp8XDHFGKW0_rGsEaFDaBVd771Kw,2902
|
107
|
-
ultralytics/data/augment.py,sha256=
|
107
|
+
ultralytics/data/augment.py,sha256=hAnd6yvlauJYk0Ek3_rTPc0RC8sTUfTk_GogMeH61MA,129231
|
108
108
|
ultralytics/data/base.py,sha256=uMh_xzs6ci1hciDLpbVW2ZQr7js0o8jctE8KhL2T7Z4,19015
|
109
109
|
ultralytics/data/build.py,sha256=FVIkgLGv5n1C7SRDrQiKOMDcI7V59WmEihKslzvEISg,9651
|
110
110
|
ultralytics/data/converter.py,sha256=znXH2XTdo0Q4NDHMny1ydVBvrxKn2kbbwI-X5bn1MlQ,26890
|
111
111
|
ultralytics/data/dataset.py,sha256=hbsjhmZBO-T1_gkUAm128kKowdwsLNwnK2lhnzmxJB8,34826
|
112
112
|
ultralytics/data/loaders.py,sha256=o844tZlfZEhXop16t-hwaEQHhbfP3_bQMS0whF_NSos,28531
|
113
113
|
ultralytics/data/split.py,sha256=6LHB1z8woXurWjXfM-Zm2thRr1KXvzR18CFJA-SDUvE,4677
|
114
|
-
ultralytics/data/split_dota.py,sha256=
|
114
|
+
ultralytics/data/split_dota.py,sha256=ihG56YfNFZJDq1r7Zcgk8fKzde3gn21W0f67ub6nT68,11879
|
115
115
|
ultralytics/data/utils.py,sha256=HET4rbj4iUcjen0t8E_Qo_9S9RGPVQRYL-j0KI0qflI,35269
|
116
116
|
ultralytics/data/scripts/download_weights.sh,sha256=0y8XtZxOru7dVThXDFUXLHBuICgOIqZNUwpyL4Rh6lg,595
|
117
117
|
ultralytics/data/scripts/get_coco.sh,sha256=UuJpJeo3qQpTHVINeOpmP0NYmg8PhEFE3A8J3jKrnPw,1768
|
118
118
|
ultralytics/data/scripts/get_coco128.sh,sha256=qmRQl_hOKrsdHrTrnyQuFIH01oDz3lfaz138OgGfLt8,650
|
119
119
|
ultralytics/data/scripts/get_imagenet.sh,sha256=hr42H16bM47iT27rgS7MpEo-GeOZAYUQXgr0B2cwn48,1705
|
120
120
|
ultralytics/engine/__init__.py,sha256=lm6MckFYCPTbqIoX7w0s_daxdjNeBeKW6DXppv1-QUM,70
|
121
|
-
ultralytics/engine/exporter.py,sha256=
|
121
|
+
ultralytics/engine/exporter.py,sha256=rFi7V-REi66DRLTWQzgx87NMfdp8eLfPZkYfSpS7Wfg,70137
|
122
122
|
ultralytics/engine/model.py,sha256=wS1cwgv0iyhsslMAZYMGlYDWitDIRW96d7MxwW-Sw5o,52817
|
123
123
|
ultralytics/engine/predictor.py,sha256=YJ5l-0qIpr6JAJxowswtZ0IqmXBqVTvAA9vR40v0sCM,21752
|
124
124
|
ultralytics/engine/results.py,sha256=MZkhI0CCOkBQPR-EzswymVqvqeyk35EkESGUQ_08r8k,79738
|
@@ -160,7 +160,7 @@ ultralytics/models/sam/modules/tiny_encoder.py,sha256=p6386bsmIwgZq1wfV7h6dcnI69
|
|
160
160
|
ultralytics/models/sam/modules/transformer.py,sha256=YRhoriZ-j37kxq19kArfv2DSOz2Jj9DAbs2mcOBVORw,14674
|
161
161
|
ultralytics/models/sam/modules/utils.py,sha256=3PatFjbgO1uasMZXXLJw23CrjuYTW7BS9NM4aXom-zY,16294
|
162
162
|
ultralytics/models/utils/__init__.py,sha256=lm6MckFYCPTbqIoX7w0s_daxdjNeBeKW6DXppv1-QUM,70
|
163
|
-
ultralytics/models/utils/loss.py,sha256=
|
163
|
+
ultralytics/models/utils/loss.py,sha256=FShJFvzFBk0HRepRhiSVNz9J-Cq08FxkSNXhLppycI0,19993
|
164
164
|
ultralytics/models/utils/ops.py,sha256=SuBnwwgUTqByNHpufobGLW72yO2cyfZFi14KAFWSjjw,13613
|
165
165
|
ultralytics/models/yolo/__init__.py,sha256=or0j5xvcM0usMlsFTYhNAOcQUri7reD0cD9JR5b7zDk,307
|
166
166
|
ultralytics/models/yolo/model.py,sha256=8TbfllTKxvNzr4MlMAFfTV8s-144AUSNUyO_7Ps6aKA,14277
|
@@ -216,14 +216,14 @@ ultralytics/solutions/parking_management.py,sha256=SiVxRl44OxxYUXIzNOxOBqtaFJSRR
|
|
216
216
|
ultralytics/solutions/queue_management.py,sha256=p1-cuI_rs4ygtlBryXjE65NYG2bnZXhp3ylggFnWcRs,4344
|
217
217
|
ultralytics/solutions/region_counter.py,sha256=Zn35YRXNzhBk27D9MLOHBYe2L1o6H2ey3mEwCXofB_E,5418
|
218
218
|
ultralytics/solutions/security_alarm.py,sha256=mbUtqoLgjAWz9k3pjMoEZY_PR-lhjiic1NK90FhEJkw,6250
|
219
|
-
ultralytics/solutions/solutions.py,sha256=
|
220
|
-
ultralytics/solutions/speed_estimation.py,sha256=
|
219
|
+
ultralytics/solutions/solutions.py,sha256=OZAmwmqCOK8SI5dpZFrzUkrPIUFGMcgPL5zV4ymzkzU,32688
|
220
|
+
ultralytics/solutions/speed_estimation.py,sha256=dbHzj9NWrcuMXYbBJAZNcQ3D9zjKV8PsNkU6orOqf7Q,5344
|
221
221
|
ultralytics/solutions/streamlit_inference.py,sha256=M0ppTFInqSPrdytZBLH8x-XoA7zFc7PaRQ51wHG9ppU,9846
|
222
222
|
ultralytics/solutions/trackzone.py,sha256=efko4U8zT8lyNLLo9zF543rTXHefeYthxf9GV3c2TiU,3860
|
223
223
|
ultralytics/solutions/vision_eye.py,sha256=DHf3pQzNqP71oYx3QXflvcGsg4nEYJCD1SOdSOxiWBk,2965
|
224
224
|
ultralytics/trackers/__init__.py,sha256=Zlu_Ig5osn7hqch_g5Be_e4pwZUkeeTQiesJCi0pFGI,255
|
225
225
|
ultralytics/trackers/basetrack.py,sha256=LYvWB5d7Woyrz_RlxaopjV07RQKH3sff_lZJfMcMxcA,4450
|
226
|
-
ultralytics/trackers/bot_sort.py,sha256=
|
226
|
+
ultralytics/trackers/bot_sort.py,sha256=rpaj7X8COT0Vi5GFR9z-CGSBgJ7gTfFx2wTSZFTnhco,11466
|
227
227
|
ultralytics/trackers/byte_tracker.py,sha256=D7JQ_6V8OUMQryxTrAr010UXMSaboQnI7T1xppzHXYg,20921
|
228
228
|
ultralytics/trackers/track.py,sha256=mu6L9RWAW8Nq0vJanX-hTTUST-OmLq49d8VV96-J9u8,4817
|
229
229
|
ultralytics/trackers/utils/__init__.py,sha256=lm6MckFYCPTbqIoX7w0s_daxdjNeBeKW6DXppv1-QUM,70
|
@@ -235,12 +235,12 @@ ultralytics/utils/autobatch.py,sha256=VZTIKLWeFZFwBHJmbiCn3MaxoFp89hLR0DSCR_iLXJ
|
|
235
235
|
ultralytics/utils/benchmarks.py,sha256=aZse9tetEwjMy2GkdNWZ0WfCgjLfCM3_BkI1qNNQb_w,30377
|
236
236
|
ultralytics/utils/checks.py,sha256=5bkna--ZH4FJDZtgef_K4xgjiKOZqCarTqIE4Z0vwJU,32628
|
237
237
|
ultralytics/utils/dist.py,sha256=e-DK_YowV7D9rDGQyWR9Kaosxp2eWe2EogSWnnUMthc,4098
|
238
|
-
ultralytics/utils/downloads.py,sha256=
|
238
|
+
ultralytics/utils/downloads.py,sha256=IvHng2-bApoyi-QMvesGwMmFNqEFiXPIKiiW16Q-U4M,22220
|
239
239
|
ultralytics/utils/errors.py,sha256=vY9h2evFSrHnZdHJVVrmm8Zzw4qVDLyo9DeYW5g0dFk,1573
|
240
|
-
ultralytics/utils/export.py,sha256=
|
240
|
+
ultralytics/utils/export.py,sha256=1MgT6rSuofvLRR-J01EQvfHylzyO_b5BDM13imypQzA,8814
|
241
241
|
ultralytics/utils/files.py,sha256=0K4O1cgqRiXaDw7EQK13TqA5SME_RrvfDVQSPetNr5w,8042
|
242
242
|
ultralytics/utils/instance.py,sha256=UOEsXR9V-bXNRk6BTonASBEgeMqvzzAk4S7VdXZJUAM,18090
|
243
|
-
ultralytics/utils/loss.py,sha256=
|
243
|
+
ultralytics/utils/loss.py,sha256=zIDWS_0AOH-yEYLcsfmFRUkApPIZhu2ENsB0UwJYIuw,37607
|
244
244
|
ultralytics/utils/metrics.py,sha256=uv5O-2Ft8wYfTvDedFxiUqMZ6Nr2CL6I9ybGZiK3e2s,53773
|
245
245
|
ultralytics/utils/ops.py,sha256=YFwPrKlPcgEmgAWqnJVR0Ccx5NQgp5e3P-YYHwVSP0k,34779
|
246
246
|
ultralytics/utils/patches.py,sha256=6rVT-l8WDp_Py3O-gZdv9t3PnrYRRkrX_lF3mZ1XS8c,4928
|
@@ -260,9 +260,9 @@ ultralytics/utils/callbacks/neptune.py,sha256=JaI95Cj2kIjUhlEEOiDN0-Drc-fDelLhNI
|
|
260
260
|
ultralytics/utils/callbacks/raytune.py,sha256=A8amUGpux7dYES-L1iSeMoMXBySGWCD1aUqT7vcG-pU,1284
|
261
261
|
ultralytics/utils/callbacks/tensorboard.py,sha256=jgYnym3cUQFAgN1GzTyO7l3jINtfAh8zhrllDvnLuVQ,5339
|
262
262
|
ultralytics/utils/callbacks/wb.py,sha256=iDRFXI4IIDm8R5OI89DMTmjs8aHLo1HRCLkOFKdaMG4,7507
|
263
|
-
ultralytics-8.3.
|
264
|
-
ultralytics-8.3.
|
265
|
-
ultralytics-8.3.
|
266
|
-
ultralytics-8.3.
|
267
|
-
ultralytics-8.3.
|
268
|
-
ultralytics-8.3.
|
263
|
+
ultralytics-8.3.122.dist-info/licenses/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
|
264
|
+
ultralytics-8.3.122.dist-info/METADATA,sha256=Ie20iTid09rrSu0IDpyAHcgvr6MlwsZqZ5ciNuwfWmM,37180
|
265
|
+
ultralytics-8.3.122.dist-info/WHEEL,sha256=wXxTzcEDnjrTwFYjLPcsW_7_XihufBwmpiBeiXNBGEA,91
|
266
|
+
ultralytics-8.3.122.dist-info/entry_points.txt,sha256=YM_wiKyTe9yRrsEfqvYolNO5ngwfoL4-NwgKzc8_7sI,93
|
267
|
+
ultralytics-8.3.122.dist-info/top_level.txt,sha256=XP49TwiMw4QGsvTLSYiJhz1xF_k7ev5mQ8jJXaXi45Q,12
|
268
|
+
ultralytics-8.3.122.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|