ultralytics 8.3.153__py3-none-any.whl → 8.3.154__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.
Files changed (30) hide show
  1. tests/test_python.py +1 -0
  2. ultralytics/__init__.py +1 -1
  3. ultralytics/cfg/__init__.py +2 -0
  4. ultralytics/engine/predictor.py +1 -1
  5. ultralytics/engine/validator.py +0 -6
  6. ultralytics/models/fastsam/val.py +0 -2
  7. ultralytics/models/rtdetr/val.py +28 -16
  8. ultralytics/models/yolo/classify/val.py +26 -23
  9. ultralytics/models/yolo/detect/train.py +4 -7
  10. ultralytics/models/yolo/detect/val.py +88 -90
  11. ultralytics/models/yolo/obb/val.py +52 -44
  12. ultralytics/models/yolo/pose/train.py +1 -35
  13. ultralytics/models/yolo/pose/val.py +77 -176
  14. ultralytics/models/yolo/segment/train.py +1 -41
  15. ultralytics/models/yolo/segment/val.py +64 -176
  16. ultralytics/models/yolo/yoloe/val.py +2 -1
  17. ultralytics/nn/autobackend.py +2 -2
  18. ultralytics/solutions/ai_gym.py +2 -3
  19. ultralytics/solutions/solutions.py +2 -0
  20. ultralytics/solutions/templates/similarity-search.html +31 -0
  21. ultralytics/utils/callbacks/comet.py +1 -1
  22. ultralytics/utils/metrics.py +146 -317
  23. ultralytics/utils/ops.py +4 -4
  24. ultralytics/utils/plotting.py +31 -56
  25. {ultralytics-8.3.153.dist-info → ultralytics-8.3.154.dist-info}/METADATA +1 -1
  26. {ultralytics-8.3.153.dist-info → ultralytics-8.3.154.dist-info}/RECORD +30 -30
  27. {ultralytics-8.3.153.dist-info → ultralytics-8.3.154.dist-info}/WHEEL +0 -0
  28. {ultralytics-8.3.153.dist-info → ultralytics-8.3.154.dist-info}/entry_points.txt +0 -0
  29. {ultralytics-8.3.153.dist-info → ultralytics-8.3.154.dist-info}/licenses/LICENSE +0 -0
  30. {ultralytics-8.3.153.dist-info → ultralytics-8.3.154.dist-info}/top_level.txt +0 -0
ultralytics/utils/ops.py CHANGED
@@ -255,7 +255,7 @@ def non_max_suppression(
255
255
 
256
256
  bs = prediction.shape[0] # batch size (BCN, i.e. 1,84,6300)
257
257
  nc = nc or (prediction.shape[1] - 4) # number of classes
258
- nm = prediction.shape[1] - nc - 4 # number of masks
258
+ extra = prediction.shape[1] - nc - 4 # number of extra info
259
259
  mi = 4 + nc # mask start index
260
260
  xc = prediction[:, 4:mi].amax(1) > conf_thres # candidates
261
261
  xinds = torch.stack([torch.arange(len(i), device=prediction.device) for i in xc])[..., None] # to track idxs
@@ -273,7 +273,7 @@ def non_max_suppression(
273
273
  prediction = torch.cat((xywh2xyxy(prediction[..., :4]), prediction[..., 4:]), dim=-1) # xywh to xyxy
274
274
 
275
275
  t = time.time()
276
- output = [torch.zeros((0, 6 + nm), device=prediction.device)] * bs
276
+ output = [torch.zeros((0, 6 + extra), device=prediction.device)] * bs
277
277
  keepi = [torch.zeros((0, 1), device=prediction.device)] * bs # to store the kept idxs
278
278
  for xi, (x, xk) in enumerate(zip(prediction, xinds)): # image index, (preds, preds indices)
279
279
  # Apply constraints
@@ -284,7 +284,7 @@ def non_max_suppression(
284
284
  # Cat apriori labels if autolabelling
285
285
  if labels and len(labels[xi]) and not rotated:
286
286
  lb = labels[xi]
287
- v = torch.zeros((len(lb), nc + nm + 4), device=x.device)
287
+ v = torch.zeros((len(lb), nc + extra + 4), device=x.device)
288
288
  v[:, :4] = xywh2xyxy(lb[:, 1:5]) # box
289
289
  v[range(len(lb)), lb[:, 0].long() + 4] = 1.0 # cls
290
290
  x = torch.cat((x, v), 0)
@@ -294,7 +294,7 @@ def non_max_suppression(
294
294
  continue
295
295
 
296
296
  # Detections matrix nx6 (xyxy, conf, cls)
297
- box, cls, mask = x.split((4, nc, nm), 1)
297
+ box, cls, mask = x.split((4, nc, extra), 1)
298
298
 
299
299
  if multi_label:
300
300
  i, j = torch.where(cls > conf_thres)
@@ -3,7 +3,7 @@
3
3
  import math
4
4
  import warnings
5
5
  from pathlib import Path
6
- from typing import Callable, Dict, List, Optional, Union
6
+ from typing import Any, Callable, Dict, List, Optional, Union
7
7
 
8
8
  import cv2
9
9
  import numpy as np
@@ -678,13 +678,8 @@ def save_one_box(
678
678
 
679
679
  @threaded
680
680
  def plot_images(
681
- images: Union[torch.Tensor, np.ndarray],
682
- batch_idx: Union[torch.Tensor, np.ndarray],
683
- cls: Union[torch.Tensor, np.ndarray],
684
- bboxes: Union[torch.Tensor, np.ndarray] = np.zeros(0, dtype=np.float32),
685
- confs: Optional[Union[torch.Tensor, np.ndarray]] = None,
686
- masks: Union[torch.Tensor, np.ndarray] = np.zeros(0, dtype=np.uint8),
687
- kpts: Union[torch.Tensor, np.ndarray] = np.zeros((0, 51), dtype=np.float32),
681
+ labels: Dict[str, Any],
682
+ images: Union[torch.Tensor, np.ndarray] = np.zeros((0, 3, 640, 640), dtype=np.float32),
688
683
  paths: Optional[List[str]] = None,
689
684
  fname: str = "images.jpg",
690
685
  names: Optional[Dict[int, str]] = None,
@@ -698,21 +693,16 @@ def plot_images(
698
693
  Plot image grid with labels, bounding boxes, masks, and keypoints.
699
694
 
700
695
  Args:
701
- images: Batch of images to plot. Shape: (batch_size, channels, height, width).
702
- batch_idx: Batch indices for each detection. Shape: (num_detections,).
703
- cls: Class labels for each detection. Shape: (num_detections,).
704
- bboxes: Bounding boxes for each detection. Shape: (num_detections, 4) or (num_detections, 5) for rotated boxes.
705
- confs: Confidence scores for each detection. Shape: (num_detections,).
706
- masks: Instance segmentation masks. Shape: (num_detections, height, width) or (1, height, width).
707
- kpts: Keypoints for each detection. Shape: (num_detections, 51).
708
- paths: List of file paths for each image in the batch.
709
- fname: Output filename for the plotted image grid.
710
- names: Dictionary mapping class indices to class names.
711
- on_plot: Optional callback function to be called after saving the plot.
712
- max_size: Maximum size of the output image grid.
713
- max_subplots: Maximum number of subplots in the image grid.
714
- save: Whether to save the plotted image grid to a file.
715
- conf_thres: Confidence threshold for displaying detections.
696
+ labels (Dict[str, Any]): Dictionary containing detection data with keys like 'cls', 'bboxes', 'conf', 'masks', 'keypoints', 'batch_idx', 'img'.
697
+ images (Union[torch.Tensor, np.ndarray]): Batch of images to plot. Shape: (batch_size, channels, height, width).
698
+ paths (Optional[List[str]]): List of file paths for each image in the batch.
699
+ fname (str): Output filename for the plotted image grid.
700
+ names (Optional[Dict[int, str]]): Dictionary mapping class indices to class names.
701
+ on_plot (Optional[Callable]): Optional callback function to be called after saving the plot.
702
+ max_size (int): Maximum size of the output image grid.
703
+ max_subplots (int): Maximum number of subplots in the image grid.
704
+ save (bool): Whether to save the plotted image grid to a file.
705
+ conf_thres (float): Confidence threshold for displaying detections.
716
706
 
717
707
  Returns:
718
708
  (np.ndarray): Plotted image grid as a numpy array if save is False, None otherwise.
@@ -721,18 +711,24 @@ def plot_images(
721
711
  This function supports both tensor and numpy array inputs. It will automatically
722
712
  convert tensor inputs to numpy arrays for processing.
723
713
  """
724
- if isinstance(images, torch.Tensor):
714
+ for k in {"cls", "bboxes", "conf", "masks", "keypoints", "batch_idx", "images"}:
715
+ if k not in labels:
716
+ continue
717
+ if k == "cls" and labels[k].ndim == 2:
718
+ labels[k] = labels[k].squeeze(1) # squeeze if shape is (n, 1)
719
+ if isinstance(labels[k], torch.Tensor):
720
+ labels[k] = labels[k].cpu().numpy()
721
+
722
+ cls = labels.get("cls", np.zeros(0, dtype=np.int64))
723
+ batch_idx = labels.get("batch_idx", np.zeros(cls.shape, dtype=np.int64))
724
+ bboxes = labels.get("bboxes", np.zeros(0, dtype=np.float32))
725
+ confs = labels.get("conf", None)
726
+ masks = labels.get("masks", np.zeros(0, dtype=np.uint8))
727
+ kpts = labels.get("keypoints", np.zeros(0, dtype=np.float32))
728
+ images = labels.get("img", images) # default to input images
729
+
730
+ if len(images) and isinstance(images, torch.Tensor):
725
731
  images = images.cpu().float().numpy()
726
- if isinstance(cls, torch.Tensor):
727
- cls = cls.cpu().numpy()
728
- if isinstance(bboxes, torch.Tensor):
729
- bboxes = bboxes.cpu().numpy()
730
- if isinstance(masks, torch.Tensor):
731
- masks = masks.cpu().numpy().astype(int)
732
- if isinstance(kpts, torch.Tensor):
733
- kpts = kpts.cpu().numpy()
734
- if isinstance(batch_idx, torch.Tensor):
735
- batch_idx = batch_idx.cpu().numpy()
736
732
  if images.shape[1] > 3:
737
733
  images = images[:, :3] # crop multispectral images to first 3 channels
738
734
 
@@ -781,6 +777,7 @@ def plot_images(
781
777
  boxes[..., 0] += x
782
778
  boxes[..., 1] += y
783
779
  is_obb = boxes.shape[-1] == 5 # xywhr
780
+ # TODO: this transformation might be unnecessary
784
781
  boxes = ops.xywhr2xyxyxyxy(boxes) if is_obb else ops.xywh2xyxy(boxes)
785
782
  for j, box in enumerate(boxes.astype(np.int64).tolist()):
786
783
  c = classes[j]
@@ -1004,28 +1001,6 @@ def plot_tune_results(csv_file: str = "tune_results.csv"):
1004
1001
  _save_one_file(csv_file.with_name("tune_fitness.png"))
1005
1002
 
1006
1003
 
1007
- def output_to_target(output, max_det: int = 300):
1008
- """Convert model output to target format [batch_id, class_id, x, y, w, h, conf] for plotting."""
1009
- targets = []
1010
- for i, o in enumerate(output):
1011
- box, conf, cls = o[:max_det, :6].cpu().split((4, 1, 1), 1)
1012
- j = torch.full((conf.shape[0], 1), i)
1013
- targets.append(torch.cat((j, cls, ops.xyxy2xywh(box), conf), 1))
1014
- targets = torch.cat(targets, 0).numpy()
1015
- return targets[:, 0], targets[:, 1], targets[:, 2:-1], targets[:, -1]
1016
-
1017
-
1018
- def output_to_rotated_target(output, max_det: int = 300):
1019
- """Convert model output to target format [batch_id, class_id, x, y, w, h, conf] for plotting."""
1020
- targets = []
1021
- for i, o in enumerate(output):
1022
- box, conf, cls, angle = o[:max_det].cpu().split((4, 1, 1, 1), 1)
1023
- j = torch.full((conf.shape[0], 1), i)
1024
- targets.append(torch.cat((j, cls, box, angle, conf), 1))
1025
- targets = torch.cat(targets, 0).numpy()
1026
- return targets[:, 0], targets[:, 1], targets[:, 2:-1], targets[:, -1]
1027
-
1028
-
1029
1004
  def feature_visualization(x, module_type: str, stage: int, n: int = 32, save_dir: Path = Path("runs/detect/exp")):
1030
1005
  """
1031
1006
  Visualize feature maps of a given model module during inference.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ultralytics
3
- Version: 8.3.153
3
+ Version: 8.3.154
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>
@@ -5,12 +5,12 @@ tests/test_cuda.py,sha256=-nQsfF3lGfqLm6cIeu_BCiXqLj7HzpL7R1GzPEc6z2I,8128
5
5
  tests/test_engine.py,sha256=Jpt2KVrltrEgh2-3Ykouz-2Z_2fza0eymL5ectRXadM,4922
6
6
  tests/test_exports.py,sha256=HmMKOTCia9ZDC0VYc_EPmvBTM5LM5eeI1NF_pKjLpd8,9677
7
7
  tests/test_integrations.py,sha256=cQfgueFhEZ8Xs-tF0uiIEhvn0DlhOH-Wqrx96LXp3D0,6303
8
- tests/test_python.py,sha256=_7xc7mqQxw3OsLhAdx-P85u9sqkfIXVhIloxmhBXph4,27800
8
+ tests/test_python.py,sha256=nOoaPDg-0j7ZPRz9-uGFny3uocxjUM1ze5wA3BpGxKQ,27865
9
9
  tests/test_solutions.py,sha256=tuf6n_fsI8KvSdJrnc-cqP2qYdiYqCWuVrx0z9dOz3Q,13213
10
- ultralytics/__init__.py,sha256=fu3pXj_pKbQkQLoO5_R33dMQb2zU7wQvWuMBWxVHQIk,730
10
+ ultralytics/__init__.py,sha256=0ApCLr1tPm8ret7Z-tWq7TY1z-OfOAvVVTXYnqjw5Fk,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=H19EalaxuIa44J_nVBrNxMj8EAPmlZl3ecbX0-xK8y8,39600
13
+ ultralytics/cfg/__init__.py,sha256=ds63URbbeRj5UxkCSyl62OrNw6HQy7xeit5-0wGDEKg,39699
14
14
  ultralytics/cfg/default.yaml,sha256=oFG6llJO-Py5H-cR9qs-7FieJamroDLwpbrkhmfROOM,8307
15
15
  ultralytics/cfg/datasets/Argoverse.yaml,sha256=_xlEDIJ9XkUo0v_iNL7FW079BoSeZtKSuLteKTtGbA8,3275
16
16
  ultralytics/cfg/datasets/DOTAv1.5.yaml,sha256=SHND_CFkojxw5iQD5Mcgju2kCZIl0gW2ajuzv1cqoL0,1224
@@ -121,11 +121,11 @@ ultralytics/data/scripts/get_imagenet.sh,sha256=hr42H16bM47iT27rgS7MpEo-GeOZAYUQ
121
121
  ultralytics/engine/__init__.py,sha256=lm6MckFYCPTbqIoX7w0s_daxdjNeBeKW6DXppv1-QUM,70
122
122
  ultralytics/engine/exporter.py,sha256=rcLRaEWzPGGtAarfasw14HwQAypNng-QnsHj8U1vz_k,73909
123
123
  ultralytics/engine/model.py,sha256=DwugtVxUbCGzpY2pStFMcEloim0ai6LrT6kTbwskSJ8,53302
124
- ultralytics/engine/predictor.py,sha256=e45PyndZDtR-JJ7Sm6HyKm9n_7h7RTWGEpo4jTCepg4,22428
124
+ ultralytics/engine/predictor.py,sha256=88zrgZP91ehwdeGl8BM_cQ_caeuwKIPDy3OzxcRBjTU,22474
125
125
  ultralytics/engine/results.py,sha256=Mb8pBTOrBtQh0PQtGVbhRZ_C1VyqYFumjLggiKCRIJs,72295
126
126
  ultralytics/engine/trainer.py,sha256=28FeqASvQRxCaK96SXDM-BfPJjqy5KNiWhf8v6GXTug,39785
127
127
  ultralytics/engine/tuner.py,sha256=4ue7JbMFQp7JcWhhwCAY-b-xZsjm5VKVlPFDUTyxt_8,12789
128
- ultralytics/engine/validator.py,sha256=IJcJBPJ_2y88HnHXwhC1mYmGqUWwh1HMUIvdFv_GUZQ,16822
128
+ ultralytics/engine/validator.py,sha256=qftJUomb4A-6rSThtST3TccEbc_zTmzovCBBCSpYm3k,16671
129
129
  ultralytics/hub/__init__.py,sha256=ulPtceI3hqud03mvqoXccBaa1e4nveYwC9cddyuBUlo,6599
130
130
  ultralytics/hub/auth.py,sha256=5uMPzZt8aO-YsnEWADzc1qBUt9c30RTIfrGo5SWTrv4,6271
131
131
  ultralytics/hub/session.py,sha256=UeUSRbdclSBPJQfpSNGeY13gb1O2Bhzh0Aj7cXum6P4,18518
@@ -136,7 +136,7 @@ ultralytics/models/fastsam/__init__.py,sha256=HGJ8EKlBAsdF-e2aIwQLjSDAFI_r0yHR0A
136
136
  ultralytics/models/fastsam/model.py,sha256=4Aazwv3tUYLxqyoEwZ2FLiZnOXwLlFEdSfqpltQwxzg,3439
137
137
  ultralytics/models/fastsam/predict.py,sha256=G-o8hs8W5XmqSN5G37zi6q9FglFnZSbD6qH_1KIIXwY,8965
138
138
  ultralytics/models/fastsam/utils.py,sha256=yuCXB4CVjRx8lDf61DP8B6qMx7TVf7AynQvdWREeFco,884
139
- ultralytics/models/fastsam/val.py,sha256=7t2fPpYhUbWLgcp4gPIc9woLmkPeoyeh_0d_Y5DWvN8,2156
139
+ ultralytics/models/fastsam/val.py,sha256=oLxB8vBKTfiT7eBbTzvpqq_xNSvDOjGdP1J7egHGsCA,2041
140
140
  ultralytics/models/nas/__init__.py,sha256=wybeHZuAXMNeXMjKTbK55FZmXJkA4K9IozDeFM9OB-s,207
141
141
  ultralytics/models/nas/model.py,sha256=kQeF3mkVHLLsoTL9F32CrYITNsdbTrYF6lEgHclhKN0,3824
142
142
  ultralytics/models/nas/predict.py,sha256=J4UT7nwi_h63lJ3a_gYac-Ws8wFYingZINxMqSoaX5E,2706
@@ -145,7 +145,7 @@ ultralytics/models/rtdetr/__init__.py,sha256=_jEHmOjI_QP_nT3XJXLgYHQ6bXG4EL8Gnvn
145
145
  ultralytics/models/rtdetr/model.py,sha256=e2u6kQEYawRXGGO6HbFDE1uyHfsIqvKk4IpVjjYN41k,2182
146
146
  ultralytics/models/rtdetr/predict.py,sha256=_jk9ZkIW0gNLUHYyRCz_n9UgGnMTtTkFZ3Pzmkbyjgw,4197
147
147
  ultralytics/models/rtdetr/train.py,sha256=6FA3nDEcH1diFQ8Ky0xENp9cOOYATHxU6f42z9npMvs,3766
148
- ultralytics/models/rtdetr/val.py,sha256=l8-6FyltxZlkjPDLJNA3Ja5dMcRQvXwoAaN1E3cSZS0,8438
148
+ ultralytics/models/rtdetr/val.py,sha256=MGzHWMfVDx9KPgaK09nvuHfXRQ6FagpzEyNO1R_8Xp8,9495
149
149
  ultralytics/models/sam/__init__.py,sha256=iR7B06rAEni21eptg8n4rLOP0Z_qV9y9PL-L93n4_7s,266
150
150
  ultralytics/models/sam/amg.py,sha256=IpcuIfC5KBRiF4sdrsPl1ecWEJy75axo1yG23r5BFsw,11783
151
151
  ultralytics/models/sam/build.py,sha256=J6n-_QOYLa63jldEZmhRe9D3Is_AJE8xyZLUjzfRyTY,12629
@@ -168,23 +168,23 @@ ultralytics/models/yolo/model.py,sha256=C0wInQC6rFuFOGpdAen1s2e5LIFDmqevto8uPbpm
168
168
  ultralytics/models/yolo/classify/__init__.py,sha256=9--HVaNOfI1K7rn_rRqclL8FUAnpfeBrRqEQIaQw2xM,383
169
169
  ultralytics/models/yolo/classify/predict.py,sha256=_GiN6muuZOBrMS1KER85FE4ktcw_Onn1bZdGvpbsGCE,4618
170
170
  ultralytics/models/yolo/classify/train.py,sha256=jXErkxnsC3pBFQBrFxObF8BJyqkckcw3C_qHMSWZrsY,10312
171
- ultralytics/models/yolo/classify/val.py,sha256=p_vs5uYT7n8BOHKS1nrZ2_mI4KeaPuQv05w2prjcyYY,9629
171
+ ultralytics/models/yolo/classify/val.py,sha256=YakPxBVZCd85Kp4wFKx8KH6JJFiU7nkFS3r9_ZSwFRM,10036
172
172
  ultralytics/models/yolo/detect/__init__.py,sha256=GIRsLYR-kT4JJx7lh4ZZAFGBZj0aebokuU0A7JbjDVA,257
173
173
  ultralytics/models/yolo/detect/predict.py,sha256=ySUsdIf8dw00bzWhcxN1jZwLWKPRT2M7-N7TNL3o4zo,5387
174
- ultralytics/models/yolo/detect/train.py,sha256=qCWz0nvU-pQofa-_F7UhUoLQe-U1ExW0mvE5ZHnav4o,9818
175
- ultralytics/models/yolo/detect/val.py,sha256=GGCm_yuWyukW8p7t4_NcXNDkupQq2eyw-neJf-SuUAU,19037
174
+ ultralytics/models/yolo/detect/train.py,sha256=o-CrBJMg8G-4eGuVv3ondR6gGvvpD7slPFJO_s2xJQc,9724
175
+ ultralytics/models/yolo/detect/val.py,sha256=1w7sP4GQEIdSq_D26fTtqD4t8K_YlAu_GhCUM6uw4_0,19323
176
176
  ultralytics/models/yolo/obb/__init__.py,sha256=tQmpG8wVHsajWkZdmD6cjGohJ4ki64iSXQT8JY_dydo,221
177
177
  ultralytics/models/yolo/obb/predict.py,sha256=4r1eSld6TNJlk9JG56e-DX6oPL8uBBqiuztyBpxWlHE,2888
178
178
  ultralytics/models/yolo/obb/train.py,sha256=bnYFAMur7Uvbw5Dc09-S2ge7B05iGX-t37Ksgc0ef6g,3921
179
- ultralytics/models/yolo/obb/val.py,sha256=FGiOiExqi-cZs_qDJaZtlcI8-TDQSyd06gs0bM5POvQ,14320
179
+ ultralytics/models/yolo/obb/val.py,sha256=nT82lKXewUw3bgX45Ms045rzcYn2A1j8g3Dxig2c-FU,14844
180
180
  ultralytics/models/yolo/pose/__init__.py,sha256=63xmuHZLNzV8I76HhVXAq4f2W0KTk8Oi9eL-Y204LyQ,227
181
181
  ultralytics/models/yolo/pose/predict.py,sha256=oePbV_IVRt0xPcTiycFAIixiX7bScth0d1uOOtdeErU,3773
182
- ultralytics/models/yolo/pose/train.py,sha256=6i1EQx-f112skBBBhCk6JIRKLjCoTEqw2ECJrc53Ku8,6862
183
- ultralytics/models/yolo/pose/val.py,sha256=Z0qsxtV6yOEXNRFME6zVkt26_yGzil13b5RhVHvUVlw,19509
182
+ ultralytics/models/yolo/pose/train.py,sha256=GyvNnDPJ3UFq_90HN8_FJ0dbwRkw3JJTVpkMFH0vC0o,5457
183
+ ultralytics/models/yolo/pose/val.py,sha256=1QI76KpwY6RBh-rrmBZRQC5uqb8nGMYYWT28dysrlaA,15390
184
184
  ultralytics/models/yolo/segment/__init__.py,sha256=3IThhZ1wlkY9FvmWm9cE-5-ZyE6F1FgzAtQ6jOOFzzw,275
185
185
  ultralytics/models/yolo/segment/predict.py,sha256=qlprQCZn4_bpjpI08U0MU9Q9_1gpHrw_7MXwtXE1l1Y,5377
186
- ultralytics/models/yolo/segment/train.py,sha256=026mRDOIjJ0ctMQQ2N9hRP6E5oLj2meGKO46u_MzrDk,5523
187
- ultralytics/models/yolo/segment/val.py,sha256=pEuX7kQE6Joq2tHO0Yye1xccQbyMaA-dtBcpbok8sSs,18931
186
+ ultralytics/models/yolo/segment/train.py,sha256=XrPkXUiNu1Jvhn8iDew_RaLLjZA3un65rK-QH9mtNIw,3802
187
+ ultralytics/models/yolo/segment/val.py,sha256=TogiMRQjT-_swxf3dnFghlN0UA8ZC383nkuBg04oJGw,14532
188
188
  ultralytics/models/yolo/world/__init__.py,sha256=nlh8I6t8hMGz_vZg8QSlsUW1R-2eKvn9CGUoPPQEGhA,131
189
189
  ultralytics/models/yolo/world/train.py,sha256=94_hgCluzsv39JkBVDmR2gjuycYjeJC8wVrCfrjpENk,7806
190
190
  ultralytics/models/yolo/world/train_world.py,sha256=YJm37ZTgr0CoE_sYrjxN45w9mICr2RMWfWZrriiHqbM,9022
@@ -192,9 +192,9 @@ ultralytics/models/yolo/yoloe/__init__.py,sha256=6SLytdJtwu37qewf7CobG7C7Wl1m-xt
192
192
  ultralytics/models/yolo/yoloe/predict.py,sha256=TAcT6fiWbV-jOewu9hx_shGI10VLF_6oSPf7jfatBWo,7041
193
193
  ultralytics/models/yolo/yoloe/train.py,sha256=Dt6orqXcQTzyoAqMVvleP1FQbXChMvEj3QtxIctr3A0,14047
194
194
  ultralytics/models/yolo/yoloe/train_seg.py,sha256=aCV7M8oQOvODFnU4piZdJh3tIrBJYAzZfRVRx1vRgxo,4956
195
- ultralytics/models/yolo/yoloe/val.py,sha256=Y0oCiqGvj8LHLrvnfPPUADSj_zNp68BVdpgcER4999E,9736
195
+ ultralytics/models/yolo/yoloe/val.py,sha256=yebPkxwKKt__cY05Zbh1YXg4_BKzzpcDc3Cv3FJ5SAA,9769
196
196
  ultralytics/nn/__init__.py,sha256=rjociYD9lo_K-d-1s6TbdWklPLjTcEHk7OIlRDJstIE,615
197
- ultralytics/nn/autobackend.py,sha256=uTOQyQ4v0_IZvvqAHnDsAxJv3QKe9-L2ozsZWSlZpPU,41287
197
+ ultralytics/nn/autobackend.py,sha256=smyYoozUOtXPNKW9Rd24dZX-EY36CDvXMr7xH-uLEs0,41256
198
198
  ultralytics/nn/tasks.py,sha256=epmYC6psquUnmsAantY9j7O6EnIyeSVjbqkQtKSnpCQ,72484
199
199
  ultralytics/nn/text_model.py,sha256=m4jDB5bzOLOS8XNmFi9oQk-skzRHiIpJy4K-_SIARR0,13498
200
200
  ultralytics/nn/modules/__init__.py,sha256=2nY0X69Z5DD5SWt6v3CUTZa5gXSzC9TQr3VTVqhyGho,3158
@@ -205,7 +205,7 @@ ultralytics/nn/modules/head.py,sha256=zTXFXc46ljPdP3mjgH7B3y2bPIjvbVPtgTu_rQCV8x
205
205
  ultralytics/nn/modules/transformer.py,sha256=PW5-6gzOP3_rZ_uAkmxvI42nU5bkrgbgLKCy5PC5px4,31415
206
206
  ultralytics/nn/modules/utils.py,sha256=rn8yTObZGkQoqVzjbZWLaHiytppG4ffjMME4Lw60glM,6092
207
207
  ultralytics/solutions/__init__.py,sha256=ZoeAQavTLp8aClnhZ9tbl6lxy86GxofyGvZWTx2aWkI,1209
208
- ultralytics/solutions/ai_gym.py,sha256=A8vzdjTqOF2mFAiiy7zu3f8lzwqLJ07dk5aqZ8p-x_w,5256
208
+ ultralytics/solutions/ai_gym.py,sha256=FM2JCRtqAIfOgUpvSsSER2XZsccZt0NmhUp2Si-_2gk,5162
209
209
  ultralytics/solutions/analytics.py,sha256=IfYlXV4vufpaOZz9h8cT1Vx9RjsqQYTCB7SbDlR0zv0,12784
210
210
  ultralytics/solutions/config.py,sha256=1HZvgWPt7duDxqAaOTyu4-TOBeRJeWx5EQgUwnyyO50,5394
211
211
  ultralytics/solutions/distance_calculation.py,sha256=e2Xa7dVOqiuk43JNakoxQlX48evEgZiEtxdtHTdlAsk,5931
@@ -219,12 +219,12 @@ ultralytics/solutions/queue_management.py,sha256=_K6ugLMDfpp37S-LFV36K3QXf3vqjfx
219
219
  ultralytics/solutions/region_counter.py,sha256=8vNrr0SnEBJ7ngD_whWpD7jMlrzuYGWxUuZx3WOv0ys,5739
220
220
  ultralytics/solutions/security_alarm.py,sha256=HXoPFlTOVp5eUecPuGIl_DXLKuN8-M32BCvCOd_vRac,6279
221
221
  ultralytics/solutions/similarity_search.py,sha256=GdrPEpfBwLpM5Mx4XQiTrahgdQgiSIeGdHWWTLQl5xU,9926
222
- ultralytics/solutions/solutions.py,sha256=3JGuGGzEvgKHw_XYNv11yo_PxZlSqduIuW8fyrNeZ4E,37407
222
+ ultralytics/solutions/solutions.py,sha256=_o7J31k-RNjyaLs_4GniHTAXGwBEJos7oAr7kAuTiuM,37467
223
223
  ultralytics/solutions/speed_estimation.py,sha256=_4tIfWPI7O_hYRQAvNrALMzdy2sBR5_0BxnPdJb0Gks,5823
224
224
  ultralytics/solutions/streamlit_inference.py,sha256=menjJLsuP7AsQJSnBo7gRHfMlYE8HzMp0YNGqCU64n0,9986
225
225
  ultralytics/solutions/trackzone.py,sha256=C51IgbNG_kGsTi04ZKUThLPYZXthP7Rad0ImSjKwa0g,3873
226
226
  ultralytics/solutions/vision_eye.py,sha256=LCb-2YPVvEks9e7xqZtNGftpAXNaZhEUb5yb3N0ni_U,2952
227
- ultralytics/solutions/templates/similarity-search.html,sha256=DPoAO-1H-KXNt_T8mGtSCsYUEi_5Nrx01p0cZfX-E8Q,3790
227
+ ultralytics/solutions/templates/similarity-search.html,sha256=vdz9XCH6VHbksvSW_sSg6Z2xVp82_EanaS_rY7xjZBE,4743
228
228
  ultralytics/trackers/__init__.py,sha256=Zlu_Ig5osn7hqch_g5Be_e4pwZUkeeTQiesJCi0pFGI,255
229
229
  ultralytics/trackers/basetrack.py,sha256=-skBFFatzgJFAPN9Frm1u1h_RDUg3WOlxG6eHQxp2Gw,4384
230
230
  ultralytics/trackers/bot_sort.py,sha256=knP5oo1LC45Lrato8LpcY_j4KBojQFP1lxT_NJxhEUo,12134
@@ -246,10 +246,10 @@ ultralytics/utils/export.py,sha256=ZmxiY5Y2MuL4iBFsLr8ykbUsnvT01DCs0Kg1w3_Ikac,9
246
246
  ultralytics/utils/files.py,sha256=ZCbLGleiF0f-PqYfaxMFAWop88w7U1hpreHXl8b2ko0,8238
247
247
  ultralytics/utils/instance.py,sha256=vhqaZRGT_4K9Q3oQH5KNNK4ISOzxlf1_JjauwhuFhu0,18408
248
248
  ultralytics/utils/loss.py,sha256=fbOWc3Iu0QOJiWbi-mXWA9-1otTYlehtmUsI7os7ydM,39799
249
- ultralytics/utils/metrics.py,sha256=6kU3tbGuUQSttAlaIJvKTK6Z9s1vlgN-Zwy5Opem1iU,67991
250
- ultralytics/utils/ops.py,sha256=KBzNssM46RbA15pzQhq5KWRi8nDzBKcZrsosqih7484,34528
249
+ ultralytics/utils/metrics.py,sha256=1XaTT3n3tfLms6LOCiEzg_QGHQJzjZmfjFoAYsCCc24,62646
250
+ ultralytics/utils/ops.py,sha256=Jkh80ujyi0XDQwNqCUYyomH8NQ145AH9doMUS8Vt8GE,34545
251
251
  ultralytics/utils/patches.py,sha256=GI7NXCJ5H22FGp3sIvj5rrGfwdYNRWlxFcW-Jhjgius,5181
252
- ultralytics/utils/plotting.py,sha256=QMwedj19XNHus5NbUY3cQI1PGDgriPhHOzGirBsxdK8,48277
252
+ ultralytics/utils/plotting.py,sha256=OzanAqs7Z02ddAd1LiXce0Jjjo8DSjAjbKViE6S5CKg,47176
253
253
  ultralytics/utils/tal.py,sha256=aXawOnhn8ni65tJWIW-PYqWr_TRvltbHBjrTo7o6lDQ,20924
254
254
  ultralytics/utils/torch_utils.py,sha256=iIAjf2g4hikzBeHvKN-EQK8QFlC_QtWWRuYQuBF2zIk,39184
255
255
  ultralytics/utils/triton.py,sha256=M7qe4RztiADBJQEWQKaIQsp94ERFJ_8_DUHDR6TXEOM,5410
@@ -257,7 +257,7 @@ ultralytics/utils/tuner.py,sha256=bHr09Fz-0-t0ei55gX5wJh-obyiAQoicP7HUVM2I8qA,68
257
257
  ultralytics/utils/callbacks/__init__.py,sha256=hzL63Rce6VkZhP4Lcim9LKjadixaQG86nKqPhk7IkS0,242
258
258
  ultralytics/utils/callbacks/base.py,sha256=OJ6z4AYVCtXO-w6PSDRiwo1Tc2RYes-BzwKTsr9g_h0,6821
259
259
  ultralytics/utils/callbacks/clearml.py,sha256=2_Iv-aJFD6oAlq2N3hOf1OhCQ7aAMpa5tBkSs1ZkruQ,6031
260
- ultralytics/utils/callbacks/comet.py,sha256=hGfSuqE1C7mcM_vr-ySKFm8l-TQeEy7IyRq1NAx0_tI,23962
260
+ ultralytics/utils/callbacks/comet.py,sha256=Fz0CTj3oMRVyl16Iu81Zs_VX-C0L8EKJrARWhMkxOQA,23914
261
261
  ultralytics/utils/callbacks/dvc.py,sha256=NV0DXMQ1B5Sk5fmh60QFUGkifrAz-vwit5qhdfsyqXc,7511
262
262
  ultralytics/utils/callbacks/hub.py,sha256=1RmGiCaog1GoTya9OAyGELbQ2Lk5X3EWh7RYMxns0so,4177
263
263
  ultralytics/utils/callbacks/mlflow.py,sha256=6K8I5zij1yq3TUW9c5BBQNqdzz3IXugQjwKoBOvV6ag,5344
@@ -265,9 +265,9 @@ ultralytics/utils/callbacks/neptune.py,sha256=j8pecmlcsM8FGzLKWoBw5xUsi5t8E5HuxY
265
265
  ultralytics/utils/callbacks/raytune.py,sha256=S6Bq16oQDQ8BQgnZzA0zJHGN_BBr8iAM_WtGoLiEcwg,1283
266
266
  ultralytics/utils/callbacks/tensorboard.py,sha256=MDPBW7aDes-66OE6YqKXXvqA_EocjzEMHWGM-8z9vUQ,5281
267
267
  ultralytics/utils/callbacks/wb.py,sha256=Tm_-aRr2CN32MJkY9tylpMBJkb007-MSRNSQ7rDJ5QU,7521
268
- ultralytics-8.3.153.dist-info/licenses/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
269
- ultralytics-8.3.153.dist-info/METADATA,sha256=VvKwuKSiR5IK7mUFeIPOhx-cnE03hjKT0DJZCqMvLkY,37200
270
- ultralytics-8.3.153.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
271
- ultralytics-8.3.153.dist-info/entry_points.txt,sha256=YM_wiKyTe9yRrsEfqvYolNO5ngwfoL4-NwgKzc8_7sI,93
272
- ultralytics-8.3.153.dist-info/top_level.txt,sha256=XP49TwiMw4QGsvTLSYiJhz1xF_k7ev5mQ8jJXaXi45Q,12
273
- ultralytics-8.3.153.dist-info/RECORD,,
268
+ ultralytics-8.3.154.dist-info/licenses/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
269
+ ultralytics-8.3.154.dist-info/METADATA,sha256=fKlFj0w4cIS5AB9XWpiM9GQEgIzo7B2E0x3oXwGABcs,37200
270
+ ultralytics-8.3.154.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
271
+ ultralytics-8.3.154.dist-info/entry_points.txt,sha256=YM_wiKyTe9yRrsEfqvYolNO5ngwfoL4-NwgKzc8_7sI,93
272
+ ultralytics-8.3.154.dist-info/top_level.txt,sha256=XP49TwiMw4QGsvTLSYiJhz1xF_k7ev5mQ8jJXaXi45Q,12
273
+ ultralytics-8.3.154.dist-info/RECORD,,