ultralytics 8.3.32__py3-none-any.whl → 8.3.34__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 CHANGED
@@ -1,6 +1,6 @@
1
1
  # Ultralytics YOLO 🚀, AGPL-3.0 license
2
2
 
3
- __version__ = "8.3.32"
3
+ __version__ = "8.3.34"
4
4
 
5
5
  import os
6
6
 
@@ -2280,7 +2280,7 @@ def v8_transforms(dataset, imgsz, hyp, stretch=False):
2280
2280
  Args:
2281
2281
  dataset (Dataset): The dataset object containing image data and annotations.
2282
2282
  imgsz (int): The target image size for resizing.
2283
- hyp (Dict): A dictionary of hyperparameters controlling various aspects of the transformations.
2283
+ hyp (Namespace): A dictionary of hyperparameters controlling various aspects of the transformations.
2284
2284
  stretch (bool): If True, applies stretching to the image. If False, uses LetterBox resizing.
2285
2285
 
2286
2286
  Returns:
@@ -2288,8 +2288,9 @@ def v8_transforms(dataset, imgsz, hyp, stretch=False):
2288
2288
 
2289
2289
  Examples:
2290
2290
  >>> from ultralytics.data.dataset import YOLODataset
2291
+ >>> from ultralytics.utils import IterableSimpleNamespace
2291
2292
  >>> dataset = YOLODataset(img_path="path/to/images", imgsz=640)
2292
- >>> hyp = {"mosaic": 1.0, "copy_paste": 0.5, "degrees": 10.0, "translate": 0.2, "scale": 0.9}
2293
+ >>> hyp = IterableSimpleNamespace(mosaic=1.0, copy_paste=0.5, degrees=10.0, translate=0.2, scale=0.9)
2293
2294
  >>> transforms = v8_transforms(dataset, imgsz=640, hyp=hyp)
2294
2295
  >>> augmented_data = transforms(dataset[0])
2295
2296
  """
@@ -79,7 +79,6 @@ from ultralytics.utils import (
79
79
  ARM64,
80
80
  DEFAULT_CFG,
81
81
  IS_JETSON,
82
- IS_RASPBERRYPI,
83
82
  LINUX,
84
83
  LOGGER,
85
84
  MACOS,
@@ -265,8 +264,6 @@ class Exporter:
265
264
  "WARNING ⚠️ INT8 export requires a missing 'data' arg for calibration. "
266
265
  f"Using default 'data={self.args.data}'."
267
266
  )
268
- if mnn and (IS_RASPBERRYPI or IS_JETSON):
269
- raise SystemError("MNN export not supported on Raspberry Pi and NVIDIA Jetson")
270
267
 
271
268
  # Input
272
269
  im = torch.zeros(self.args.batch, 3, *self.imgsz).to(self.device)
@@ -64,6 +64,9 @@ class FastSAMPredictor(SegmentationPredictor):
64
64
  if not isinstance(results, list):
65
65
  results = [results]
66
66
  for result in results:
67
+ if len(result) == 0:
68
+ prompt_results.append(result)
69
+ continue
67
70
  masks = result.masks.data
68
71
  if masks.shape[1:] != result.orig_shape:
69
72
  masks = scale_masks(masks[None], result.orig_shape)[0]
@@ -68,8 +68,11 @@ class RTDETRTrainer(DetectionTrainer):
68
68
  hyp=self.args,
69
69
  rect=False,
70
70
  cache=self.args.cache or None,
71
+ single_cls=self.args.single_cls or False,
71
72
  prefix=colorstr(f"{mode}: "),
73
+ classes=self.args.classes,
72
74
  data=self.data,
75
+ fraction=self.args.fraction if mode == "train" else 1.0,
73
76
  )
74
77
 
75
78
  def get_validator(self):
@@ -104,12 +104,12 @@ class Heatmap(ObjectCounter):
104
104
  self.annotator.draw_region(reg_pts=self.region, color=(104, 0, 123), thickness=self.line_width * 2)
105
105
  self.store_tracking_history(track_id, box) # Store track history
106
106
  self.store_classwise_counts(cls) # store classwise counts in dict
107
-
107
+ current_centroid = ((box[0] + box[2]) / 2, (box[1] + box[3]) / 2)
108
108
  # Store tracking previous position and perform object counting
109
109
  prev_position = None
110
110
  if len(self.track_history[track_id]) > 1:
111
111
  prev_position = self.track_history[track_id][-2]
112
- self.count_objects(self.track_line, box, track_id, prev_position, cls) # Perform object counting
112
+ self.count_objects(current_centroid, track_id, prev_position, cls) # Perform object counting
113
113
 
114
114
  if self.region is not None:
115
115
  self.display_counts(im0) # Display the counts on the frame
@@ -46,13 +46,12 @@ class ObjectCounter(BaseSolution):
46
46
  self.show_in = self.CFG["show_in"]
47
47
  self.show_out = self.CFG["show_out"]
48
48
 
49
- def count_objects(self, track_line, box, track_id, prev_position, cls):
49
+ def count_objects(self, current_centroid, track_id, prev_position, cls):
50
50
  """
51
51
  Counts objects within a polygonal or linear region based on their tracks.
52
52
 
53
53
  Args:
54
- track_line (Dict): Last 30 frame track record for the object.
55
- box (List[float]): Bounding box coordinates [x1, y1, x2, y2] for the specific track in the current frame.
54
+ current_centroid (Tuple[float, float]): Current centroid values in the current frame.
56
55
  track_id (int): Unique identifier for the tracked object.
57
56
  prev_position (Tuple[float, float]): Last frame position coordinates (x, y) of the track.
58
57
  cls (int): Class index for classwise count updates.
@@ -64,34 +63,55 @@ class ObjectCounter(BaseSolution):
64
63
  >>> track_id = 1
65
64
  >>> prev_position = (120, 220)
66
65
  >>> cls = 0
67
- >>> counter.count_objects(track_line, box, track_id, prev_position, cls)
66
+ >>> counter.count_objects(current_centroid, track_id, prev_position, cls)
68
67
  """
69
68
  if prev_position is None or track_id in self.counted_ids:
70
69
  return
71
70
 
72
- centroid = self.r_s.centroid
73
- dx = (box[0] - prev_position[0]) * (centroid.x - prev_position[0])
74
- dy = (box[1] - prev_position[1]) * (centroid.y - prev_position[1])
75
-
76
- if len(self.region) >= 3 and self.r_s.contains(self.Point(track_line[-1])):
77
- self.counted_ids.append(track_id)
78
- # For polygon region
79
- if dx > 0:
80
- self.in_count += 1
81
- self.classwise_counts[self.names[cls]]["IN"] += 1
82
- else:
83
- self.out_count += 1
84
- self.classwise_counts[self.names[cls]]["OUT"] += 1
85
-
86
- elif len(self.region) < 3 and self.LineString([prev_position, box[:2]]).intersects(self.r_s):
87
- self.counted_ids.append(track_id)
88
- # For linear region
89
- if dx > 0 and dy > 0:
90
- self.in_count += 1
91
- self.classwise_counts[self.names[cls]]["IN"] += 1
92
- else:
93
- self.out_count += 1
94
- self.classwise_counts[self.names[cls]]["OUT"] += 1
71
+ if len(self.region) == 2: # Linear region (defined as a line segment)
72
+ line = self.LineString(self.region) # Check if the line intersects the trajectory of the object
73
+ if line.intersects(self.LineString([prev_position, current_centroid])):
74
+ # Determine orientation of the region (vertical or horizontal)
75
+ if abs(self.region[0][0] - self.region[1][0]) < abs(self.region[0][1] - self.region[1][1]):
76
+ # Vertical region: Compare x-coordinates to determine direction
77
+ if current_centroid[0] > prev_position[0]: # Moving right
78
+ self.in_count += 1
79
+ self.classwise_counts[self.names[cls]]["IN"] += 1
80
+ else: # Moving left
81
+ self.out_count += 1
82
+ self.classwise_counts[self.names[cls]]["OUT"] += 1
83
+ else:
84
+ # Horizontal region: Compare y-coordinates to determine direction
85
+ if current_centroid[1] > prev_position[1]: # Moving downward
86
+ self.in_count += 1
87
+ self.classwise_counts[self.names[cls]]["IN"] += 1
88
+ else: # Moving upward
89
+ self.out_count += 1
90
+ self.classwise_counts[self.names[cls]]["OUT"] += 1
91
+ self.counted_ids.append(track_id)
92
+
93
+ elif len(self.region) > 2: # Polygonal region
94
+ polygon = self.Polygon(self.region)
95
+ if polygon.contains(self.Point(current_centroid)):
96
+ # Determine motion direction for vertical or horizontal polygons
97
+ region_width = max([p[0] for p in self.region]) - min([p[0] for p in self.region])
98
+ region_height = max([p[1] for p in self.region]) - min([p[1] for p in self.region])
99
+
100
+ if region_width < region_height: # Vertical-oriented polygon
101
+ if current_centroid[0] > prev_position[0]: # Moving right
102
+ self.in_count += 1
103
+ self.classwise_counts[self.names[cls]]["IN"] += 1
104
+ else: # Moving left
105
+ self.out_count += 1
106
+ self.classwise_counts[self.names[cls]]["OUT"] += 1
107
+ else: # Horizontal-oriented polygon
108
+ if current_centroid[1] > prev_position[1]: # Moving downward
109
+ self.in_count += 1
110
+ self.classwise_counts[self.names[cls]]["IN"] += 1
111
+ else: # Moving upward
112
+ self.out_count += 1
113
+ self.classwise_counts[self.names[cls]]["OUT"] += 1
114
+ self.counted_ids.append(track_id)
95
115
 
96
116
  def store_classwise_counts(self, cls):
97
117
  """
@@ -174,12 +194,12 @@ class ObjectCounter(BaseSolution):
174
194
  self.annotator.draw_centroid_and_tracks(
175
195
  self.track_line, color=colors(int(cls), True), track_thickness=self.line_width
176
196
  )
177
-
197
+ current_centroid = ((box[0] + box[2]) / 2, (box[1] + box[3]) / 2)
178
198
  # store previous position of track for object counting
179
199
  prev_position = None
180
200
  if len(self.track_history[track_id]) > 1:
181
201
  prev_position = self.track_history[track_id][-2]
182
- self.count_objects(self.track_line, box, track_id, prev_position, cls) # Perform object counting
202
+ self.count_objects(current_centroid, track_id, prev_position, cls) # Perform object counting
183
203
 
184
204
  self.display_counts(im0) # Display the counts on the frame
185
205
  self.display_output(im0) # display output with base class function
@@ -114,8 +114,6 @@ def benchmark(
114
114
  assert LINUX or MACOS, "Windows Paddle exports not supported yet"
115
115
  if i == 12: # MNN
116
116
  assert not isinstance(model, YOLOWorld), "YOLOWorldv2 MNN exports not supported yet"
117
- assert not IS_RASPBERRYPI, "MNN export not supported on Raspberry Pi"
118
- assert not IS_JETSON, "MNN export not supported on NVIDIA Jetson"
119
117
  if i == 13: # NCNN
120
118
  assert not isinstance(model, YOLOWorld), "YOLOWorldv2 NCNN exports not supported yet"
121
119
  if i == 14: # IMX
@@ -109,7 +109,12 @@ def _log_plots(plots, step):
109
109
 
110
110
  def on_pretrain_routine_start(trainer):
111
111
  """Initiate and start project if module is present."""
112
- wb.run or wb.init(project=trainer.args.project or "Ultralytics", name=trainer.args.name, config=vars(trainer.args))
112
+ if not wb.run:
113
+ wb.init(
114
+ project=str(trainer.args.project).replace("/", "-") if trainer.args.project else "Ultralytics",
115
+ name=str(trainer.args.name).replace("/", "-"),
116
+ config=vars(trainer.args),
117
+ )
113
118
 
114
119
 
115
120
  def on_fit_epoch_end(trainer):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ultralytics
3
- Version: 8.3.32
3
+ Version: 8.3.34
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>
@@ -7,7 +7,7 @@ tests/test_exports.py,sha256=1MvhcQ2qHdbJImHII-bFarcaIcm-kPlEK-OdFLxnj7o,8769
7
7
  tests/test_integrations.py,sha256=f5-QCUk1SU_-qn4mBCZwS3GN3tXEBIIXo4z2EhExbHw,6126
8
8
  tests/test_python.py,sha256=I1RRdCwLdrc3jX06huVxct8HX8ccQOmQgVpuEflRl0U,23560
9
9
  tests/test_solutions.py,sha256=sPYhy2d814mIVvojQeVxeZPu0IVy01_Y8zuMcu_9GF0,3790
10
- ultralytics/__init__.py,sha256=rd6CX0OXbEa7frUNO-AjgAr5WcslP8Pk2u4v8EiLDnc,681
10
+ ultralytics/__init__.py,sha256=ng3e9IODWqPPX2BUjNwY_KtVXnAlZSqM7YIcJ7HcEsA,681
11
11
  ultralytics/assets/bus.jpg,sha256=wCAZxJecGR63Od3ZRERe9Aja1Weayrb9Ug751DS_vGM,137419
12
12
  ultralytics/assets/zidane.jpg,sha256=Ftc4aeMmen1O0A3o6GCDO9FlfBslLpTAw0gnetx7bts,50427
13
13
  ultralytics/cfg/__init__.py,sha256=ArJow4-pOPN3y6aKOv5KcVXimikI6vAQvQlSRb7IdWE,38743
@@ -91,7 +91,7 @@ ultralytics/cfg/trackers/botsort.yaml,sha256=FDIrZ3hAhRtMfDl654pt1HIexmPqlFQK-3l
91
91
  ultralytics/cfg/trackers/bytetrack.yaml,sha256=rBWY4RjjX6PTO2o6TUJFYHVgXNZHCN5TuBuzwuPYVjA,723
92
92
  ultralytics/data/__init__.py,sha256=VGe-ATG7j35F4A4r8Jmzffjlhve4JAJPgRa5ahKTU18,616
93
93
  ultralytics/data/annotator.py,sha256=JNmS6uELlEABrU5ViVJiPnjt44v-Us7j39Bwoug_73Y,3117
94
- ultralytics/data/augment.py,sha256=YCLrwx1mRGeidggo_7GeINay8KdxACqREHJofZeaTHA,120430
94
+ ultralytics/data/augment.py,sha256=1yBz98EO0uVvzVEk6rvuO8YwmxwyYZfe5NV0mNIsHkI,120509
95
95
  ultralytics/data/base.py,sha256=ZCIhAyFfxXVp5fVnYD8mwbksNALJTayBKIR5FKGV7ZM,15168
96
96
  ultralytics/data/build.py,sha256=AfMmz0sHIYmwry_90tEJFRk_kz0S3SolScVXqYHiT08,7261
97
97
  ultralytics/data/converter.py,sha256=RIfTXNrazwZqmTYOYoJtupDMtNzm8dxsrVp6q2m8gyg,24388
@@ -100,7 +100,7 @@ ultralytics/data/loaders.py,sha256=Fr70Q9p9t7buLW_8R2_lI_nyCMG033gWSxvwy1M-a-U,2
100
100
  ultralytics/data/split_dota.py,sha256=eFafJ7Vg52wj6KDCHFJAf1tKzyPD5YaPB8kM4VX5Aeg,10688
101
101
  ultralytics/data/utils.py,sha256=bmWEIrdogj4kssZQSJdSbIF8QsJU00lo-EY-Mgcqv4M,31073
102
102
  ultralytics/engine/__init__.py,sha256=mHtJuK4hwF8cuV-VHDc7tp6u6D1gHz2Z7JI8grmQDTs,42
103
- ultralytics/engine/exporter.py,sha256=DH67LwNDr3fiWxaES-lhSLvm5pCuasXLbQv4FSLCi_M,67171
103
+ ultralytics/engine/exporter.py,sha256=USEnyGvaTrF6JZtbMPct2LqyiaQHX_Ddt5kO1BbDmRo,67009
104
104
  ultralytics/engine/model.py,sha256=TfuTczFjNJ3GW0E_qWVH6OaJ_2I-_Srx7i_4GQebDoo,51472
105
105
  ultralytics/engine/predictor.py,sha256=aS4yJdTK2kYq-TTpzIlWxqnAcBz38zIECZoMb_yOPMY,17597
106
106
  ultralytics/engine/results.py,sha256=a1XFZRPwqgKDBOEAibHuT9nP2xefLiWVsMoBJbcr4iA,75058
@@ -115,7 +115,7 @@ ultralytics/hub/google/__init__.py,sha256=uclNs-_5vAzQMgQKgl8eBvml1cx6IZYXRUhrF5
115
115
  ultralytics/models/__init__.py,sha256=TT9iLCL_n9Y80dcUq0Fo-p-GRZCSU2vrWXM3CoMwqqE,265
116
116
  ultralytics/models/fastsam/__init__.py,sha256=W0rRSJM3vdxcsneuiN6_ajkUw86k6-opUKdLxVhKOoQ,203
117
117
  ultralytics/models/fastsam/model.py,sha256=ikqOUoRbcTYH00YqA7WKdGXnrff1R8OdBi2OG0n9uaA,2008
118
- ultralytics/models/fastsam/predict.py,sha256=z73WeIQNtSDAdoZE8In6jzbdMk6wlAmVNHdmOrdApsM,7377
118
+ ultralytics/models/fastsam/predict.py,sha256=cBtR56iIpZ2e5IHzMeqWZgfXpiGdYcy-Yjg7pebaB20,7481
119
119
  ultralytics/models/fastsam/utils.py,sha256=wH6pEjR2G45LYKqms5e8cJr5-Q-0bKyU8YcytDAn7d4,714
120
120
  ultralytics/models/fastsam/val.py,sha256=ILKmw3U8FYmmQsO9wk9-bJ9Pyp_ZthJM36b61L75s3Y,1967
121
121
  ultralytics/models/nas/__init__.py,sha256=d6-WTrYLXvbPs58ebA0-583ODi-VyzXc-t4aGIDQK6M,179
@@ -125,7 +125,7 @@ ultralytics/models/nas/val.py,sha256=6lt1wf8JCYO-rc0G0DjYUVDggvTAXks2eu5QnwL08S4
125
125
  ultralytics/models/rtdetr/__init__.py,sha256=AZga1C3qlGTtgpAupDW4doijq5aZlQeF8e55_DP2Uas,197
126
126
  ultralytics/models/rtdetr/model.py,sha256=2VkppF1_581XmQ0UI7lo8fX7MqhAJPXVMr2jyMHXtbk,1988
127
127
  ultralytics/models/rtdetr/predict.py,sha256=cxULdJAzL9RM11Y24tIguKcNJZXwynNsrWRCW-jUYEQ,3568
128
- ultralytics/models/rtdetr/train.py,sha256=3QjchAvLM3gh1sNTOVSVvpyqqsZSYprUQ12e4oAQs_A,3685
128
+ ultralytics/models/rtdetr/train.py,sha256=m8S9Z94kNaH0HN9TR51iQpToIDV8AUoXpkI5qMdLB7Q,3847
129
129
  ultralytics/models/rtdetr/val.py,sha256=xVjZShZ1AvES97wVekl2q_1g20Pq-IIHhkJdWtxMncs,5566
130
130
  ultralytics/models/sam/__init__.py,sha256=o4_D6y8YJlOXIK7Lwo9RHnIJJ9xoFNi4zK99QSc1kdM,176
131
131
  ultralytics/models/sam/amg.py,sha256=GrmO_8YfIDt_QkPEMF_WFjPZkhwhf7iwx7ig8JgOUnE,8709
@@ -183,8 +183,8 @@ ultralytics/solutions/__init__.py,sha256=4i8QCABfxRWPYUEdb58Pbg1xvR_Ra1u-ifB9fx2
183
183
  ultralytics/solutions/ai_gym.py,sha256=Jb9Rbd9gOOj2ox4Q5mqalCdvg3RMXA6Cxe5kS18IFgA,5232
184
184
  ultralytics/solutions/analytics.py,sha256=C57pIghXeKN8hul8QOV7W9YDMpfFfSfPTBb-lE9HeAc,11535
185
185
  ultralytics/solutions/distance_calculation.py,sha256=KN3CC-dm2dTQylj79IrifCJT8ZhE7hc2EweH3KK31mE,5461
186
- ultralytics/solutions/heatmap.py,sha256=If9rosSCmE7pAL1HtVnLkx05gQp6nP1K6HzATMcaEEE,5372
187
- ultralytics/solutions/object_counter.py,sha256=vKB7riRm8NjHA6IXyf557FpmV-b0_XoKbXHqMHziXSM,8264
186
+ ultralytics/solutions/heatmap.py,sha256=-1VtMCJRmpHnLqgna0i2HOBsxNoqFernzpKQnICngUM,5449
187
+ ultralytics/solutions/object_counter.py,sha256=-U6l9-2in5MDrex7C_qRa6vDOIEIAWPI40HjLZtfotc,9976
188
188
  ultralytics/solutions/parking_management.py,sha256=1DsEE94eauqcnnFxUYI-BX9eA1GbJVNt7oncj1okYpI,11198
189
189
  ultralytics/solutions/queue_management.py,sha256=D9TqwJSVrZQFxp_M8O62WfBAxkAuDWWnXe7FFmnp7_w,4881
190
190
  ultralytics/solutions/region_counter.py,sha256=w0c0Sz9XG6rwzr5nA6nb1zFW8IVkTQuatfZNBtOik68,4947
@@ -202,7 +202,7 @@ ultralytics/trackers/utils/kalman_filter.py,sha256=cH9zD3fwkuezP97H9mw8cSBN7a8hH
202
202
  ultralytics/trackers/utils/matching.py,sha256=3Ie1WNNRZ4_q3365F03XD7Nr9juZB_08mw4yUKC3w74,7162
203
203
  ultralytics/utils/__init__.py,sha256=08pFkzKn1eR9xdIFhx8tx_8MO-gqXjt2n0HGwDeUlWE,49159
204
204
  ultralytics/utils/autobatch.py,sha256=nt0nSNNhrQqvtaxeNBBYpU2OkZnI3ihNEAa3jF4pybo,4594
205
- ultralytics/utils/benchmarks.py,sha256=aEW28iVIMj-8bwOgISDphOJExDmaGi5bz3G2PJlRjcc,25793
205
+ ultralytics/utils/benchmarks.py,sha256=Ub--iTq2hL_oHkG2R3HXmZXQ6qcBC-P9MabUv60bMLE,25625
206
206
  ultralytics/utils/checks.py,sha256=KXQSeauhzecy9tSjyDVy8oXbTDkHSSB9lOTYrqRWpok,29582
207
207
  ultralytics/utils/dist.py,sha256=NDFga-uKxkBX2zLxFHSene_cCiGQJoyOeCXcN9JIOIk,2358
208
208
  ultralytics/utils/downloads.py,sha256=fh7I5toTSowAOXtmx5zIzCEDREfTFG45cLIHmsDmuYw,21974
@@ -228,10 +228,10 @@ ultralytics/utils/callbacks/mlflow.py,sha256=mkl_rK0Gy02cXnQUYmzmLE5W97fMgfEb7Il
228
228
  ultralytics/utils/callbacks/neptune.py,sha256=IbGQfEltamUKXJt93uSLQFn8c2rYh3DMTgVE1xsnmUI,3813
229
229
  ultralytics/utils/callbacks/raytune.py,sha256=Ck_yFzg7UZXiDWrLHaltjQybzVWSFDfzpdrx9ZYTRfI,700
230
230
  ultralytics/utils/callbacks/tensorboard.py,sha256=SHlE58Fb-sg-uZKtgy-ybIO3SAIfK55aj8kTYGA0Cyg,4167
231
- ultralytics/utils/callbacks/wb.py,sha256=5MIG29usEhkc6OmbWFEqxQ9D4Xhe5xvB8TXujK1d5MI,6926
232
- ultralytics-8.3.32.dist-info/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
233
- ultralytics-8.3.32.dist-info/METADATA,sha256=AIsSmmHQnFM9c8PKAWm-YJdJzLwM40ZSJyoQLxy_VqE,35213
234
- ultralytics-8.3.32.dist-info/WHEEL,sha256=R06PA3UVYHThwHvxuRWMqaGcr-PuniXahwjmQRFMEkY,91
235
- ultralytics-8.3.32.dist-info/entry_points.txt,sha256=YM_wiKyTe9yRrsEfqvYolNO5ngwfoL4-NwgKzc8_7sI,93
236
- ultralytics-8.3.32.dist-info/top_level.txt,sha256=XP49TwiMw4QGsvTLSYiJhz1xF_k7ev5mQ8jJXaXi45Q,12
237
- ultralytics-8.3.32.dist-info/RECORD,,
231
+ ultralytics/utils/callbacks/wb.py,sha256=sizfTa-xI9k2pnDSP_Q9pHZEFwcl__gSFM0AcneuRpY,7058
232
+ ultralytics-8.3.34.dist-info/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
233
+ ultralytics-8.3.34.dist-info/METADATA,sha256=CZ_k4Txr1bB5iOCzlyTo-GaRuPcBcXCLSNWzsG61RlU,35213
234
+ ultralytics-8.3.34.dist-info/WHEEL,sha256=R06PA3UVYHThwHvxuRWMqaGcr-PuniXahwjmQRFMEkY,91
235
+ ultralytics-8.3.34.dist-info/entry_points.txt,sha256=YM_wiKyTe9yRrsEfqvYolNO5ngwfoL4-NwgKzc8_7sI,93
236
+ ultralytics-8.3.34.dist-info/top_level.txt,sha256=XP49TwiMw4QGsvTLSYiJhz1xF_k7ev5mQ8jJXaXi45Q,12
237
+ ultralytics-8.3.34.dist-info/RECORD,,