ultralytics 8.2.61__py3-none-any.whl → 8.2.63__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.

Potentially problematic release.


This version of ultralytics might be problematic. Click here for more details.

@@ -1,86 +1,31 @@
1
1
  # Ultralytics YOLO 🚀, AGPL-3.0 license
2
-
3
2
  import torch
4
3
 
5
- from ultralytics.engine.results import Results
6
- from ultralytics.models.fastsam.utils import bbox_iou
7
- from ultralytics.models.yolo.detect.predict import DetectionPredictor
8
- from ultralytics.utils import DEFAULT_CFG, ops
4
+ from ultralytics.models.yolo.segment import SegmentationPredictor
5
+ from ultralytics.utils.metrics import box_iou
6
+
7
+ from .utils import adjust_bboxes_to_image_border
9
8
 
10
9
 
11
- class FastSAMPredictor(DetectionPredictor):
10
+ class FastSAMPredictor(SegmentationPredictor):
12
11
  """
13
12
  FastSAMPredictor is specialized for fast SAM (Segment Anything Model) segmentation prediction tasks in Ultralytics
14
13
  YOLO framework.
15
14
 
16
- This class extends the DetectionPredictor, customizing the prediction pipeline specifically for fast SAM.
17
- It adjusts post-processing steps to incorporate mask prediction and non-max suppression while optimizing
18
- for single-class segmentation.
19
-
20
- Attributes:
21
- cfg (dict): Configuration parameters for prediction.
22
- overrides (dict, optional): Optional parameter overrides for custom behavior.
23
- _callbacks (dict, optional): Optional list of callback functions to be invoked during prediction.
15
+ This class extends the SegmentationPredictor, customizing the prediction pipeline specifically for fast SAM. It
16
+ adjusts post-processing steps to incorporate mask prediction and non-max suppression while optimizing for single-
17
+ class segmentation.
24
18
  """
25
19
 
26
- def __init__(self, cfg=DEFAULT_CFG, overrides=None, _callbacks=None):
27
- """
28
- Initializes the FastSAMPredictor class, inheriting from DetectionPredictor and setting the task to 'segment'.
29
-
30
- Args:
31
- cfg (dict): Configuration parameters for prediction.
32
- overrides (dict, optional): Optional parameter overrides for custom behavior.
33
- _callbacks (dict, optional): Optional list of callback functions to be invoked during prediction.
34
- """
35
- super().__init__(cfg, overrides, _callbacks)
36
- self.args.task = "segment"
37
-
38
20
  def postprocess(self, preds, img, orig_imgs):
39
- """
40
- Perform post-processing steps on predictions, including non-max suppression and scaling boxes to original image
41
- size, and returns the final results.
42
-
43
- Args:
44
- preds (list): The raw output predictions from the model.
45
- img (torch.Tensor): The processed image tensor.
46
- orig_imgs (list | torch.Tensor): The original image or list of images.
47
-
48
- Returns:
49
- (list): A list of Results objects, each containing processed boxes, masks, and other metadata.
50
- """
51
- p = ops.non_max_suppression(
52
- preds[0],
53
- self.args.conf,
54
- self.args.iou,
55
- agnostic=self.args.agnostic_nms,
56
- max_det=self.args.max_det,
57
- nc=1, # set to 1 class since SAM has no class predictions
58
- classes=self.args.classes,
59
- )
60
- full_box = torch.zeros(p[0].shape[1], device=p[0].device)
61
- full_box[2], full_box[3], full_box[4], full_box[6:] = img.shape[3], img.shape[2], 1.0, 1.0
62
- full_box = full_box.view(1, -1)
63
- critical_iou_index = bbox_iou(full_box[0][:4], p[0][:, :4], iou_thres=0.9, image_shape=img.shape[2:])
64
- if critical_iou_index.numel() != 0:
65
- full_box[0][4] = p[0][critical_iou_index][:, 4]
66
- full_box[0][6:] = p[0][critical_iou_index][:, 6:]
67
- p[0][critical_iou_index] = full_box
68
-
69
- if not isinstance(orig_imgs, list): # input images are a torch.Tensor, not a list
70
- orig_imgs = ops.convert_torch2numpy_batch(orig_imgs)
71
-
72
- results = []
73
- proto = preds[1][-1] if len(preds[1]) == 3 else preds[1] # second output is len 3 if pt, but only 1 if exported
74
- for i, pred in enumerate(p):
75
- orig_img = orig_imgs[i]
76
- img_path = self.batch[0][i]
77
- if not len(pred): # save empty boxes
78
- masks = None
79
- elif self.args.retina_masks:
80
- pred[:, :4] = ops.scale_boxes(img.shape[2:], pred[:, :4], orig_img.shape)
81
- masks = ops.process_mask_native(proto[i], pred[:, 6:], pred[:, :4], orig_img.shape[:2]) # HWC
82
- else:
83
- masks = ops.process_mask(proto[i], pred[:, 6:], pred[:, :4], img.shape[2:], upsample=True) # HWC
84
- pred[:, :4] = ops.scale_boxes(img.shape[2:], pred[:, :4], orig_img.shape)
85
- results.append(Results(orig_img, path=img_path, names=self.model.names, boxes=pred[:, :6], masks=masks))
21
+ """Applies box postprocess for FastSAM predictions."""
22
+ results = super().postprocess(preds, img, orig_imgs)
23
+ for result in results:
24
+ full_box = torch.tensor(
25
+ [0, 0, result.orig_shape[1], result.orig_shape[0]], device=preds[0].device, dtype=torch.float32
26
+ )
27
+ boxes = adjust_bboxes_to_image_border(result.boxes.xyxy, result.orig_shape)
28
+ idx = torch.nonzero(box_iou(full_box[None], boxes) > 0.9).flatten()
29
+ if idx.numel() != 0:
30
+ result.boxes.xyxy[idx] = full_box
86
31
  return results
@@ -1,7 +1,5 @@
1
1
  # Ultralytics YOLO 🚀, AGPL-3.0 license
2
2
 
3
- import torch
4
-
5
3
 
6
4
  def adjust_bboxes_to_image_border(boxes, image_shape, threshold=20):
7
5
  """
@@ -25,43 +23,3 @@ def adjust_bboxes_to_image_border(boxes, image_shape, threshold=20):
25
23
  boxes[boxes[:, 2] > w - threshold, 2] = w # x2
26
24
  boxes[boxes[:, 3] > h - threshold, 3] = h # y2
27
25
  return boxes
28
-
29
-
30
- def bbox_iou(box1, boxes, iou_thres=0.9, image_shape=(640, 640), raw_output=False):
31
- """
32
- Compute the Intersection-Over-Union of a bounding box with respect to an array of other bounding boxes.
33
-
34
- Args:
35
- box1 (torch.Tensor): (4, )
36
- boxes (torch.Tensor): (n, 4)
37
- iou_thres (float): IoU threshold
38
- image_shape (tuple): (height, width)
39
- raw_output (bool): If True, return the raw IoU values instead of the indices
40
-
41
- Returns:
42
- high_iou_indices (torch.Tensor): Indices of boxes with IoU > thres
43
- """
44
- boxes = adjust_bboxes_to_image_border(boxes, image_shape)
45
- # Obtain coordinates for intersections
46
- x1 = torch.max(box1[0], boxes[:, 0])
47
- y1 = torch.max(box1[1], boxes[:, 1])
48
- x2 = torch.min(box1[2], boxes[:, 2])
49
- y2 = torch.min(box1[3], boxes[:, 3])
50
-
51
- # Compute the area of intersection
52
- intersection = (x2 - x1).clamp(0) * (y2 - y1).clamp(0)
53
-
54
- # Compute the area of both individual boxes
55
- box1_area = (box1[2] - box1[0]) * (box1[3] - box1[1])
56
- box2_area = (boxes[:, 2] - boxes[:, 0]) * (boxes[:, 3] - boxes[:, 1])
57
-
58
- # Compute the area of union
59
- union = box1_area + box2_area - intersection
60
-
61
- # Compute the IoU
62
- iou = intersection / union # Should be shape (n, )
63
- if raw_output:
64
- return 0 if iou.numel() == 0 else iou
65
-
66
- # return indices of boxes with IoU > thres
67
- return torch.nonzero(iou > iou_thres).flatten()
@@ -52,9 +52,7 @@ class NASPredictor(BasePredictor):
52
52
  orig_imgs = ops.convert_torch2numpy_batch(orig_imgs)
53
53
 
54
54
  results = []
55
- for i, pred in enumerate(preds):
56
- orig_img = orig_imgs[i]
55
+ for pred, orig_img, img_path in zip(preds, orig_imgs, self.batch[0]):
57
56
  pred[:, :4] = ops.scale_boxes(img.shape[2:], pred[:, :4], orig_img.shape)
58
- img_path = self.batch[0][i]
59
57
  results.append(Results(orig_img, path=img_path, names=self.model.names, boxes=pred))
60
58
  return results
@@ -56,18 +56,16 @@ class RTDETRPredictor(BasePredictor):
56
56
  orig_imgs = ops.convert_torch2numpy_batch(orig_imgs)
57
57
 
58
58
  results = []
59
- for i, bbox in enumerate(bboxes): # (300, 4)
59
+ for bbox, score, orig_img, img_path in zip(bboxes, scores, orig_imgs, self.batch[0]): # (300, 4)
60
60
  bbox = ops.xywh2xyxy(bbox)
61
- score, cls = scores[i].max(-1, keepdim=True) # (300, 1)
62
- idx = score.squeeze(-1) > self.args.conf # (300, )
61
+ max_score, cls = score.max(-1, keepdim=True) # (300, 1)
62
+ idx = max_score.squeeze(-1) > self.args.conf # (300, )
63
63
  if self.args.classes is not None:
64
64
  idx = (cls == torch.tensor(self.args.classes, device=cls.device)).any(1) & idx
65
- pred = torch.cat([bbox, score, cls], dim=-1)[idx] # filter
66
- orig_img = orig_imgs[i]
65
+ pred = torch.cat([bbox, max_score, cls], dim=-1)[idx] # filter
67
66
  oh, ow = orig_img.shape[:2]
68
67
  pred[..., [0, 2]] *= ow
69
68
  pred[..., [1, 3]] *= oh
70
- img_path = self.batch[0][i]
71
69
  results.append(Results(orig_img, path=img_path, names=self.model.names, boxes=pred))
72
70
  return results
73
71
 
@@ -372,8 +372,7 @@ class Predictor(BasePredictor):
372
372
  orig_imgs = ops.convert_torch2numpy_batch(orig_imgs)
373
373
 
374
374
  results = []
375
- for i, masks in enumerate([pred_masks]):
376
- orig_img = orig_imgs[i]
375
+ for masks, orig_img, img_path in zip([pred_masks], orig_imgs, self.batch[0]):
377
376
  if pred_bboxes is not None:
378
377
  pred_bboxes = ops.scale_boxes(img.shape[2:], pred_bboxes.float(), orig_img.shape, padding=False)
379
378
  cls = torch.arange(len(pred_masks), dtype=torch.int32, device=pred_masks.device)
@@ -381,7 +380,6 @@ class Predictor(BasePredictor):
381
380
 
382
381
  masks = ops.scale_masks(masks[None].float(), orig_img.shape[:2], padding=False)[0]
383
382
  masks = masks > self.model.mask_threshold # to bool
384
- img_path = self.batch[0][i]
385
383
  results.append(Results(orig_img, path=img_path, names=names, masks=masks, boxes=pred_bboxes))
386
384
  # Reset segment-all mode.
387
385
  self.segment_all = False
@@ -54,8 +54,6 @@ class ClassificationPredictor(BasePredictor):
54
54
  orig_imgs = ops.convert_torch2numpy_batch(orig_imgs)
55
55
 
56
56
  results = []
57
- for i, pred in enumerate(preds):
58
- orig_img = orig_imgs[i]
59
- img_path = self.batch[0][i]
57
+ for pred, orig_img, img_path in zip(preds, orig_imgs, self.batch[0]):
60
58
  results.append(Results(orig_img, path=img_path, names=self.model.names, probs=pred))
61
59
  return results
@@ -35,9 +35,7 @@ class DetectionPredictor(BasePredictor):
35
35
  orig_imgs = ops.convert_torch2numpy_batch(orig_imgs)
36
36
 
37
37
  results = []
38
- for i, pred in enumerate(preds):
39
- orig_img = orig_imgs[i]
38
+ for pred, orig_img, img_path in zip(preds, orig_imgs, self.batch[0]):
40
39
  pred[:, :4] = ops.scale_boxes(img.shape[2:], pred[:, :4], orig_img.shape)
41
- img_path = self.batch[0][i]
42
40
  results.append(Results(orig_img, path=img_path, names=self.model.names, boxes=pred))
43
41
  return results
@@ -46,12 +46,10 @@ class PosePredictor(DetectionPredictor):
46
46
  orig_imgs = ops.convert_torch2numpy_batch(orig_imgs)
47
47
 
48
48
  results = []
49
- for i, pred in enumerate(preds):
50
- orig_img = orig_imgs[i]
49
+ for pred, orig_img, img_path in zip(preds, orig_imgs, self.batch[0]):
51
50
  pred[:, :4] = ops.scale_boxes(img.shape[2:], pred[:, :4], orig_img.shape).round()
52
51
  pred_kpts = pred[:, 6:].view(len(pred), *self.model.kpt_shape) if len(pred) else pred[:, 6:]
53
52
  pred_kpts = ops.scale_coords(img.shape[2:], pred_kpts, orig_img.shape)
54
- img_path = self.batch[0][i]
55
53
  results.append(
56
54
  Results(orig_img, path=img_path, names=self.model.names, boxes=pred[:, :6], keypoints=pred_kpts)
57
55
  )
@@ -42,9 +42,7 @@ class SegmentationPredictor(DetectionPredictor):
42
42
 
43
43
  results = []
44
44
  proto = preds[1][-1] if isinstance(preds[1], tuple) else preds[1] # tuple if PyTorch model or array if exported
45
- for i, pred in enumerate(p):
46
- orig_img = orig_imgs[i]
47
- img_path = self.batch[0][i]
45
+ for i, (pred, orig_img, img_path) in enumerate(zip(p, orig_imgs, self.batch[0])):
48
46
  if not len(pred): # save empty boxes
49
47
  masks = None
50
48
  elif self.args.retina_masks:
@@ -10,7 +10,7 @@ from ultralytics.utils.checks import check_requirements
10
10
  from ultralytics.utils.downloads import GITHUB_ASSETS_STEMS
11
11
 
12
12
 
13
- def inference():
13
+ def inference(model=None):
14
14
  """Runs real-time object detection on video input using Ultralytics YOLOv8 in a Streamlit application."""
15
15
  check_requirements("streamlit>=1.29.0") # scope imports for faster ultralytics package load speeds
16
16
  import streamlit as st
@@ -67,7 +67,10 @@ def inference():
67
67
  vid_file_name = 0
68
68
 
69
69
  # Add dropdown menu for model selection
70
- available_models = (x.replace("yolo", "YOLO") for x in GITHUB_ASSETS_STEMS if x.startswith("yolov8"))
70
+ available_models = [x.replace("yolo", "YOLO") for x in GITHUB_ASSETS_STEMS if x.startswith("yolov8")]
71
+ if model:
72
+ available_models.insert(0, model)
73
+
71
74
  selected_model = st.sidebar.selectbox("Model", available_models)
72
75
  with st.spinner("Model is downloading..."):
73
76
  model = YOLO(f"{selected_model.lower()}.pt") # Load the YOLO model
@@ -199,7 +199,7 @@ def check_disk_space(url="https://ultralytics.com/assets/coco8.zip", path=Path.c
199
199
  Check if there is sufficient disk space to download and store a file.
200
200
 
201
201
  Args:
202
- url (str, optional): The URL to the file. Defaults to 'https://github.com/ultralytics/assets/releases/download/v0.0.0/coco8.zip'.
202
+ url (str, optional): The URL to the file. Defaults to 'https://ultralytics.com/assets/coco8.zip'.
203
203
  path (str | Path, optional): The path or drive to check the available free space on.
204
204
  sf (float, optional): Safety factor, the multiplier for the required free space. Defaults to 2.0.
205
205
  hard (bool, optional): Whether to throw an error or not on insufficient disk space. Defaults to True.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ultralytics
3
- Version: 8.2.61
3
+ Version: 8.2.63
4
4
  Summary: Ultralytics YOLOv8 for SOTA object detection, multi-object tracking, instance segmentation, pose estimation and image classification.
5
5
  Author: Glenn Jocher, Ayush Chaurasia, Jing Qiu
6
6
  Maintainer: Glenn Jocher, Ayush Chaurasia, Jing Qiu
@@ -8,10 +8,10 @@ tests/test_exports.py,sha256=Uezf3OatpPHlo5qoPw-2kqkZxuMCF9L4XF2riD4vmII,8225
8
8
  tests/test_integrations.py,sha256=xglcfMPjfVh346PV8WTpk6tBxraCXEFJEQyyJMr5tyU,6064
9
9
  tests/test_python.py,sha256=qhtSQ7NDfBChsVUxeSwfUIkoKq0S1Z-Rd9_MP023Y5k,21794
10
10
  tests/test_solutions.py,sha256=EACnPXbeJe2aVTOKfqMk5jclKKCWCVgFEzjpR6y7Sh8,3304
11
- ultralytics/__init__.py,sha256=-YRwpfkZ3p2rWo5AUHnmJ7_q4ZcNmoHJIyDsofxE1A4,694
11
+ ultralytics/__init__.py,sha256=_WFzbI-3Dv4xSPA2TrlMjV3n1LrQ7moyS-ONUMEL0wU,694
12
12
  ultralytics/assets/bus.jpg,sha256=wCAZxJecGR63Od3ZRERe9Aja1Weayrb9Ug751DS_vGM,137419
13
13
  ultralytics/assets/zidane.jpg,sha256=Ftc4aeMmen1O0A3o6GCDO9FlfBslLpTAw0gnetx7bts,50427
14
- ultralytics/cfg/__init__.py,sha256=LV6RYG3oJRbxasy4V0gpeFsxWvLNHQYI--Emc71XctM,29366
14
+ ultralytics/cfg/__init__.py,sha256=fD3Llw12sIkJo4g667t6b051je9nEpwdBLGgbbVEzHY,32973
15
15
  ultralytics/cfg/default.yaml,sha256=xRKVF-Z9E3imXTU9OCK94kj3jGgYoo67VJQwuYlHiUU,8228
16
16
  ultralytics/cfg/datasets/Argoverse.yaml,sha256=FyeuJT5CHq_9d4hlfAf0kpZlnbUMO0S--UJ1yIqcdKk,3134
17
17
  ultralytics/cfg/datasets/DOTAv1.5.yaml,sha256=QVfp_Qp-4rukuicaB4qx86NxSHM8Mrzym8l_fIDo8gw,1195
@@ -83,25 +83,25 @@ ultralytics/cfg/models/v9/yolov9t.yaml,sha256=qL__kr6GoefpQWP4jV0jdzwTp46bdFUcqt
83
83
  ultralytics/cfg/trackers/botsort.yaml,sha256=YrPmj18p1UU40kJH5NRdL_4S8f7knggkk_q2KYnVudo,883
84
84
  ultralytics/cfg/trackers/bytetrack.yaml,sha256=QvHmtuwulK4X6j3T5VEqtCm0sbWWBUVmWPcCcM20qe0,688
85
85
  ultralytics/data/__init__.py,sha256=VGe-ATG7j35F4A4r8Jmzffjlhve4JAJPgRa5ahKTU18,616
86
- ultralytics/data/annotator.py,sha256=evXQzARVerc0hb9ol-n_GrrHf-dlXO4lCMMWEZoJ2UM,2117
87
- ultralytics/data/augment.py,sha256=V0iyu_9q_mx-G_61sPA1FWt_6ErJY4SnY_W62uxKOqI,59866
86
+ ultralytics/data/annotator.py,sha256=1Hyu6ubrBL8KmRrt1keGn-K4XTqQdAVyIwTsQiBtzLU,2489
87
+ ultralytics/data/augment.py,sha256=NrcaGAB7aUbQRaggkxnBHHSKPd3GVaTxdVwcHsZs6xc,119151
88
88
  ultralytics/data/base.py,sha256=C3teLnw97ZTbpJHT9P7yYWosAKocMzgJjRe1rxgfpls,13524
89
89
  ultralytics/data/build.py,sha256=AfMmz0sHIYmwry_90tEJFRk_kz0S3SolScVXqYHiT08,7261
90
90
  ultralytics/data/converter.py,sha256=7640xKuf7LPeoTwoCvgbIXM5xbzyq72Hu2Rf2lrgjRY,17554
91
91
  ultralytics/data/dataset.py,sha256=2m_YOw73gO_mzvitel5OKuQpbkwFTDnpPNcUIz4cayI,22579
92
- ultralytics/data/loaders.py,sha256=XnwJsrejnigaG0wwivKccFUxq002czYa4cgVfGzsFms,24078
92
+ ultralytics/data/loaders.py,sha256=cAyGlSNonzYXU5eBXiDVFrDOlTeziXGyO7_UaToUGrc,24152
93
93
  ultralytics/data/split_dota.py,sha256=fWezt1Bo3jiZ6AyUWdBtTUuvLamPv1t7JD-DirM9gQ8,10142
94
94
  ultralytics/data/utils.py,sha256=GHmqx6e5yRfcUD2Qkwk-tQfhXCwtUMFD3Uf6d699nGo,31046
95
95
  ultralytics/data/explorer/__init__.py,sha256=-Y3m1ZedepOQUv_KW82zaGxvU_PSHcuwUTFqG9BhAr4,113
96
96
  ultralytics/data/explorer/explorer.py,sha256=3puHbDFgoEjiRkLzKOGc1CLTUNbqJrLrq8MeBYLeBFc,19222
97
97
  ultralytics/data/explorer/utils.py,sha256=EvvukQiQUTBrsZznmMnyEX2EqTuwZo_Geyc8yfi8NIA,7085
98
98
  ultralytics/data/explorer/gui/__init__.py,sha256=mHtJuK4hwF8cuV-VHDc7tp6u6D1gHz2Z7JI8grmQDTs,42
99
- ultralytics/data/explorer/gui/dash.py,sha256=CPlFIIhf53j_YVAqealsC3AbcztdPqZxfniQcBnlKK4,10042
99
+ ultralytics/data/explorer/gui/dash.py,sha256=vZ476NaUH4FKU08rAJ1K9WNyKtg0soMyJJxqg176yWc,10498
100
100
  ultralytics/engine/__init__.py,sha256=mHtJuK4hwF8cuV-VHDc7tp6u6D1gHz2Z7JI8grmQDTs,42
101
101
  ultralytics/engine/exporter.py,sha256=mJqo3TbYuVcNA26rN5Fc57a1uVAqYfT1P3GSSE5k4rU,58741
102
- ultralytics/engine/model.py,sha256=4oL9XhQlPSa0I6YqgGwS30KHg7dG55cGb1MVKGdQbMo,39337
102
+ ultralytics/engine/model.py,sha256=zeyyXy4dY3fTj0GjYeTuvJcKyNmlEX34ntSzLF3_T7E,52013
103
103
  ultralytics/engine/predictor.py,sha256=W58kDCFH2AfoFzpGbos3k8zUEVsLunBuM8sc2B64rPY,17449
104
- ultralytics/engine/results.py,sha256=5MevvBz0E-cpDf55FqweInlKdcQPb7sz0EgZSROJqw4,35817
104
+ ultralytics/engine/results.py,sha256=oNAzSKdKxxx_5QQd9opzCevvgPhspdY5BkWxoz5bQ8E,69882
105
105
  ultralytics/engine/trainer.py,sha256=vFdWN6I-DoAHZYmxjRDeYcc44B9i8tBtK8u6oMgyj9o,35476
106
106
  ultralytics/engine/tuner.py,sha256=iZrgMmXSDpfuDu4bdFRflmAsscys2-8W8qAGxSyOVJE,11844
107
107
  ultralytics/engine/validator.py,sha256=Y21Uo8_Zto4qjk_YqQk6k7tyfpq_Qk9cfjeXeyDRxs8,14643
@@ -112,24 +112,24 @@ ultralytics/hub/utils.py,sha256=tXfM3QbXBcf4Y6StgHI1pktT4OM7Ic9eF3xiBFHGlhY,9721
112
112
  ultralytics/models/__init__.py,sha256=TT9iLCL_n9Y80dcUq0Fo-p-GRZCSU2vrWXM3CoMwqqE,265
113
113
  ultralytics/models/fastsam/__init__.py,sha256=0dt65jZ_5b7Q-mdXN8MSEkgnFRA0FIwlel_LS2RaOlU,254
114
114
  ultralytics/models/fastsam/model.py,sha256=c7GGwaa9AXssJFwrcuytFHpPOlgSrS3n0utyf4JSL2o,1055
115
- ultralytics/models/fastsam/predict.py,sha256=0WHUFrqHUNy1cTNpLKsN0FKqLKCvr7fHU6pp91_QVg0,4121
115
+ ultralytics/models/fastsam/predict.py,sha256=_bOSU75qLK1XESxl-XW1SOxriCaX7nsvl5x4exG_c4Q,1324
116
116
  ultralytics/models/fastsam/prompt.py,sha256=4d9e1fEuGpTPWRfu3rG6HT8Bc0rtqJtRpNrlHkmkKcY,15860
117
- ultralytics/models/fastsam/utils.py,sha256=r-b362Wb7P2ZAlOwWckPJM6HLvg-eFDDz4wkA0ymLd0,2157
117
+ ultralytics/models/fastsam/utils.py,sha256=dCSm6l5yua_PTT5aNvyOvn1Q0h42Ta_NovO7sTbsBxM,715
118
118
  ultralytics/models/fastsam/val.py,sha256=ILKmw3U8FYmmQsO9wk9-bJ9Pyp_ZthJM36b61L75s3Y,1967
119
119
  ultralytics/models/nas/__init__.py,sha256=d6-WTrYLXvbPs58ebA0-583ODi-VyzXc-t4aGIDQK6M,179
120
120
  ultralytics/models/nas/model.py,sha256=nw7574loYfJHiEQx_ttemF9gpyehvWQVVYTIH0lsTSo,2865
121
- ultralytics/models/nas/predict.py,sha256=O7f92KE6hi5DENTRzXiMsm-qK-ndVoO1Bs3dugp8aLA,2136
121
+ ultralytics/models/nas/predict.py,sha256=uRtr9hLwkGG0w3lYDgiuqd0ataQ_RYR_BQdY0qMz5NI,2097
122
122
  ultralytics/models/nas/val.py,sha256=tVRfUEy1vEG67O5JZQzQO0gPHjt_WWiPvRvPlg_Btgg,1669
123
123
  ultralytics/models/rtdetr/__init__.py,sha256=AZga1C3qlGTtgpAupDW4doijq5aZlQeF8e55_DP2Uas,197
124
124
  ultralytics/models/rtdetr/model.py,sha256=2VkppF1_581XmQ0UI7lo8fX7MqhAJPXVMr2jyMHXtbk,1988
125
- ultralytics/models/rtdetr/predict.py,sha256=-NFBAv_4VIUcXycO7wA8IH6EHXrVyOir-5PZkd46qyo,3584
125
+ ultralytics/models/rtdetr/predict.py,sha256=GmeNiFszDajq9YNPi0jW89CqP0MRD5Gtmokh9z0JAQc,3568
126
126
  ultralytics/models/rtdetr/train.py,sha256=20AFYVW9NPxw0-cp-sRdIovWidFL0IIhJRv2oZjkPlM,3685
127
127
  ultralytics/models/rtdetr/val.py,sha256=4QQArdaGEY8rJsJuvyJ032f8GGVGdV2jURHK2EdMxyk,5566
128
128
  ultralytics/models/sam/__init__.py,sha256=9A1iyfPN_ncqq3TMExe_-uPoARjEX3psoHEI1xMG2VE,144
129
129
  ultralytics/models/sam/amg.py,sha256=He2c4nIoZ__F_pL18rRl278R8iBjWXBM2Z_vxfuVOkk,7971
130
130
  ultralytics/models/sam/build.py,sha256=-i-vj0egQ2idBZUf3Xf-H89QeToM3ky0HTxKP_KEXTs,4944
131
131
  ultralytics/models/sam/model.py,sha256=dkEhqJEZFuSoKubMaAjUx1U9Np49AII3nBScdH8rMBI,4707
132
- ultralytics/models/sam/predict.py,sha256=BuSaqMOkpwiM5H5sWOE1CDIwEDkz8uMKV6AMRysCZk4,23614
132
+ ultralytics/models/sam/predict.py,sha256=hachjdcJ175v_oOUPmu_jG_VSe2wCbpLpi4qymUJV34,23575
133
133
  ultralytics/models/sam/modules/__init__.py,sha256=mHtJuK4hwF8cuV-VHDc7tp6u6D1gHz2Z7JI8grmQDTs,42
134
134
  ultralytics/models/sam/modules/decoders.py,sha256=7NWnBNupxGYvH0S1N0R6NBHxdVFRUrrnL9EqAw09J4E,7816
135
135
  ultralytics/models/sam/modules/encoders.py,sha256=pRNZHzt2J2xD_D0Btu8pk4DcItfr6dRr9rcRfxoZZhU,24746
@@ -142,11 +142,11 @@ ultralytics/models/utils/ops.py,sha256=sn1vdwIK2LaCvxvuuP31Yw2HXEMAmQdo7KD9JVh4G
142
142
  ultralytics/models/yolo/__init__.py,sha256=e1cZr9pbSbf3Ya2OvkTjGRwD_E2YZpe610xskBM8gEk,247
143
143
  ultralytics/models/yolo/model.py,sha256=wOrJ6HWU9KhG7pVcgK4HdI8xe2GSShe8V4v4bJDVydM,4041
144
144
  ultralytics/models/yolo/classify/__init__.py,sha256=t-4pUHmgI2gjhc-l3bqNEcEtKD1dO40nD4Vc6Y2xD6o,355
145
- ultralytics/models/yolo/classify/predict.py,sha256=wFY4GIlWxe7idMndEw1RnDI63o53MTfiHKz0s2fOjAY,2513
145
+ ultralytics/models/yolo/classify/predict.py,sha256=L89AUwUi-G7Cj2PDsRqqJwr91pXoFue_8pXdI7KJdYY,2474
146
146
  ultralytics/models/yolo/classify/train.py,sha256=dNAUROnrS5LAbu6EKw29n6EUEoKYQaNjALoh3mo1Mm0,6291
147
147
  ultralytics/models/yolo/classify/val.py,sha256=MXdtWrBYVpfFuPfFPOTLKa_wBdTIA4dBZguT-EtldZ4,4909
148
148
  ultralytics/models/yolo/detect/__init__.py,sha256=JR8gZJWn7wMBbh-0j_073nxJVZTMFZVWTOG5Wnvk6w0,229
149
- ultralytics/models/yolo/detect/predict.py,sha256=_a9vH3DmKFY6eeztFTdj3nkfu_MKG6n7zb5rRKGjs9I,1510
149
+ ultralytics/models/yolo/detect/predict.py,sha256=HcbhWUEqF97b8IjIt_scanHvSy6vzyRgybFo08o1Eok,1471
150
150
  ultralytics/models/yolo/detect/train.py,sha256=8Ulq1SPNLrkOqXj0Yt5zNR1c_Xl_QnOjllCdqBHUMds,6353
151
151
  ultralytics/models/yolo/detect/val.py,sha256=WaCGB_B_TTIbeR8ZxKoC2YJrPdIgFJ-fP8EI7SoE4NA,15128
152
152
  ultralytics/models/yolo/obb/__init__.py,sha256=txWbPGLY1_M7ZwlLQjrwGjTBOlsv9P3yk5ZEgysTinU,193
@@ -154,11 +154,11 @@ ultralytics/models/yolo/obb/predict.py,sha256=prfDzhwuVHKF6CRwnFVBA-YFI5q7U7NEQw
154
154
  ultralytics/models/yolo/obb/train.py,sha256=tWpFtcasMwWq1A_9VdbEg5pIVHwuWwmeLOyj-S4_1sY,1473
155
155
  ultralytics/models/yolo/obb/val.py,sha256=fflxcpdAAYJBzao1TlEbNY0rWl-9irmCIdrXcAbvkQY,9303
156
156
  ultralytics/models/yolo/pose/__init__.py,sha256=OGvxN3LqJot2h8GX1csJ1KErsHnDKsm33Ce6ZBU9Lr4,199
157
- ultralytics/models/yolo/pose/predict.py,sha256=illk4qyZvybc_XMo9TKT54FIkizx91MYviE5c5OwBTQ,2404
157
+ ultralytics/models/yolo/pose/predict.py,sha256=jQXvcqdjgnOG1sRw7L-mVZ6HcVkE2pgnkPMo7xBYRtg,2365
158
158
  ultralytics/models/yolo/pose/train.py,sha256=ki8bkT8WfIFjTKf1ofeRDqeIqmk6A8a7AFog7nM-otM,2926
159
159
  ultralytics/models/yolo/pose/val.py,sha256=QnPrSnlHHN7UVoZ6tgtRjuJjwOZY8l-MEYxuQPYvJ-4,12364
160
160
  ultralytics/models/yolo/segment/__init__.py,sha256=mSbKOE8BnHL7PL2nCOVG7dRM7CI6hJezFPPwZFjEmy8,247
161
- ultralytics/models/yolo/segment/predict.py,sha256=xtA0ZZyuh9WVpX7zZFdAeCkWnxhQ30ADEzSud_H6N7E,2491
161
+ ultralytics/models/yolo/segment/predict.py,sha256=ETBXOZ4dw8i74SPRkt1xkKrpJb5ml_hacAjDNSE5LAY,2468
162
162
  ultralytics/models/yolo/segment/train.py,sha256=aOQpDIptZfKSl9mFa6B-3W3QccMRlmBINBkI9K8-3sQ,2298
163
163
  ultralytics/models/yolo/segment/val.py,sha256=kPnlAd5aA6kHsIPp5UCsGTy-ai5kyKx2QggVGCH_H6U,14034
164
164
  ultralytics/models/yolo/world/__init__.py,sha256=3VTH0q4NOt2EWRom15yCymvmvm0Etp2bmETJUhsVTBI,103
@@ -182,7 +182,7 @@ ultralytics/solutions/object_counter.py,sha256=C80ET_-tIKv7pfshO8DFwimCieBHV4Ns7
182
182
  ultralytics/solutions/parking_management.py,sha256=_cJ4kXIq4l56WVyNsq6RUVe_mv5oBy-fmt1vIyevPko,10139
183
183
  ultralytics/solutions/queue_management.py,sha256=CxFvHwSHq8OZ5aW7x2F10jcjkGAQ3LSJ5z69zusRVbs,6781
184
184
  ultralytics/solutions/speed_estimation.py,sha256=kjqMSHGTHMZaNgTKNKWULxnJQNsvhq4WMUphMVlBjsc,6768
185
- ultralytics/solutions/streamlit_inference.py,sha256=d4LIpexPv31o8WQ5xXUvUlZmEwmKlJQD3PdrMIJ8ISY,5566
185
+ ultralytics/solutions/streamlit_inference.py,sha256=znX2pHkaAd7CfTiQn6ieguBHAnlKqlEV0rlpF-TQMTQ,5633
186
186
  ultralytics/trackers/__init__.py,sha256=j72IgH2dZHQArMPK4YwcV5ieIw94fYvlGdQjB9cOQKw,227
187
187
  ultralytics/trackers/basetrack.py,sha256=-vBDD-Q9lsxfTMK2w9kuqWGrYbRMmaBCCEbGGyR53gE,3675
188
188
  ultralytics/trackers/bot_sort.py,sha256=39AvhYVbT7izF3--rX_e6Lhgb5czTA23gw6AgnNcRds,8601
@@ -197,7 +197,7 @@ ultralytics/utils/autobatch.py,sha256=gPFcREMsMHRAuTQiBnNZ9Mm1XNqmQW-uMPhveDFEQ_
197
197
  ultralytics/utils/benchmarks.py,sha256=nsoCJx755RWAZz0D6igTrM0FM2BoQXgLCMbXaMqvZlk,23664
198
198
  ultralytics/utils/checks.py,sha256=QIltfNxlZdMOTzXqU815MBIevMj_TKBU_VeVXqjXdOo,28411
199
199
  ultralytics/utils/dist.py,sha256=NDFga-uKxkBX2zLxFHSene_cCiGQJoyOeCXcN9JIOIk,2358
200
- ultralytics/utils/downloads.py,sha256=60GL4gZ3kIHvu-8_PrPY1WBNuXPMvL5si-6vCX_qbQ4,21929
200
+ ultralytics/utils/downloads.py,sha256=NB9UDas5f8Rzxt_PS1vDKkSgCxcJ0R_-pjNyZ8E3OUM,21897
201
201
  ultralytics/utils/errors.py,sha256=GqP_Jgj_n0paxn8OMhn3DTCgoNkB2WjUcUaqs-M6SQk,816
202
202
  ultralytics/utils/files.py,sha256=TVfY0Wi5IsUc4YdsDzC0dAg-jAP5exYvwqB3VmXhDLY,6761
203
203
  ultralytics/utils/instance.py,sha256=5daM5nkxBv9hr5QzyII8zmuFj24hHuNtcr4EMCHAtpY,15654
@@ -221,9 +221,9 @@ ultralytics/utils/callbacks/neptune.py,sha256=5Z3ua5YBTUS56FH8VQKQG1aaIo9fH8GEyz
221
221
  ultralytics/utils/callbacks/raytune.py,sha256=ODVYzy-CoM4Uge0zjkh3Hnh9nF2M0vhDrSenXnvcizw,705
222
222
  ultralytics/utils/callbacks/tensorboard.py,sha256=QEgOVhUqY9akOs5TJIwz1Rvn6l32xWLpOxlwEyWF0B8,4136
223
223
  ultralytics/utils/callbacks/wb.py,sha256=9-fjQIdLjr3b73DTE3rHO171KvbH1VweJ-bmbv-rqTw,6747
224
- ultralytics-8.2.61.dist-info/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
225
- ultralytics-8.2.61.dist-info/METADATA,sha256=aMYvs_rMSM8KBPCAlFM4_cy9cjs0Zi2DDSiKW4Ljjx4,41217
226
- ultralytics-8.2.61.dist-info/WHEEL,sha256=rWxmBtp7hEUqVLOnTaDOPpR-cZpCDkzhhcBce-Zyd5k,91
227
- ultralytics-8.2.61.dist-info/entry_points.txt,sha256=YM_wiKyTe9yRrsEfqvYolNO5ngwfoL4-NwgKzc8_7sI,93
228
- ultralytics-8.2.61.dist-info/top_level.txt,sha256=XP49TwiMw4QGsvTLSYiJhz1xF_k7ev5mQ8jJXaXi45Q,12
229
- ultralytics-8.2.61.dist-info/RECORD,,
224
+ ultralytics-8.2.63.dist-info/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
225
+ ultralytics-8.2.63.dist-info/METADATA,sha256=KIk6LQCwRNLtxbVHfsToCUjqXkypVGxbVObVQOcGpI8,41217
226
+ ultralytics-8.2.63.dist-info/WHEEL,sha256=Wyh-_nZ0DJYolHNn1_hMa4lM7uDedD_RGVwbmTjyItk,91
227
+ ultralytics-8.2.63.dist-info/entry_points.txt,sha256=YM_wiKyTe9yRrsEfqvYolNO5ngwfoL4-NwgKzc8_7sI,93
228
+ ultralytics-8.2.63.dist-info/top_level.txt,sha256=XP49TwiMw4QGsvTLSYiJhz1xF_k7ev5mQ8jJXaXi45Q,12
229
+ ultralytics-8.2.63.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (71.0.4)
2
+ Generator: setuptools (71.1.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5