ultralytics 8.1.33__py3-none-any.whl → 8.1.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.

Potentially problematic release.


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

ultralytics/__init__.py CHANGED
@@ -1,6 +1,6 @@
1
1
  # Ultralytics YOLO 🚀, AGPL-3.0 license
2
2
 
3
- __version__ = "8.1.33"
3
+ __version__ = "8.1.34"
4
4
 
5
5
  from ultralytics.data.explorer.explorer import Explorer
6
6
  from ultralytics.models import RTDETR, SAM, YOLO, YOLOWorld
@@ -385,10 +385,10 @@ class Results(SimpleClass):
385
385
  BGR=True,
386
386
  )
387
387
 
388
- def summary(self, normalize=False):
388
+ def summary(self, normalize=False, decimals=5):
389
389
  """Convert the results to a summarized format."""
390
390
  if self.probs is not None:
391
- LOGGER.warning("Warning: Classify task do not support `summary` and `tojson` yet.")
391
+ LOGGER.warning("Warning: Classify results do not support the `summary()` method yet.")
392
392
  return
393
393
 
394
394
  # Create list of detection dictionaries
@@ -396,28 +396,38 @@ class Results(SimpleClass):
396
396
  data = self.boxes.data.cpu().tolist()
397
397
  h, w = self.orig_shape if normalize else (1, 1)
398
398
  for i, row in enumerate(data): # xyxy, track_id if tracking, conf, class_id
399
- box = {"x1": row[0] / w, "y1": row[1] / h, "x2": row[2] / w, "y2": row[3] / h}
400
- conf = row[-2]
399
+ box = {
400
+ "x1": round(row[0] / w, decimals),
401
+ "y1": round(row[1] / h, decimals),
402
+ "x2": round(row[2] / w, decimals),
403
+ "y2": round(row[3] / h, decimals),
404
+ }
405
+ conf = round(row[-2], decimals)
401
406
  class_id = int(row[-1])
402
- name = self.names[class_id]
403
- result = {"name": name, "class": class_id, "confidence": conf, "box": box}
407
+ result = {"name": self.names[class_id], "class": class_id, "confidence": conf, "box": box}
404
408
  if self.boxes.is_track:
405
409
  result["track_id"] = int(row[-3]) # track ID
406
410
  if self.masks:
407
- x, y = self.masks.xy[i][:, 0], self.masks.xy[i][:, 1] # numpy array
408
- result["segments"] = {"x": (x / w).tolist(), "y": (y / h).tolist()}
411
+ result["segments"] = {
412
+ "x": (self.masks.xy[i][:, 0] / w).round(decimals).tolist(),
413
+ "y": (self.masks.xy[i][:, 1] / h).round(decimals).tolist(),
414
+ }
409
415
  if self.keypoints is not None:
410
416
  x, y, visible = self.keypoints[i].data[0].cpu().unbind(dim=1) # torch Tensor
411
- result["keypoints"] = {"x": (x / w).tolist(), "y": (y / h).tolist(), "visible": visible.tolist()}
417
+ result["keypoints"] = {
418
+ "x": (x / w).numpy().round(decimals).tolist(), # decimals named argument required
419
+ "y": (y / h).numpy().round(decimals).tolist(),
420
+ "visible": visible.numpy().round(decimals).tolist(),
421
+ }
412
422
  results.append(result)
413
423
 
414
424
  return results
415
425
 
416
- def tojson(self, normalize=False):
426
+ def tojson(self, normalize=False, decimals=5):
417
427
  """Convert the results to JSON format."""
418
428
  import json
419
429
 
420
- return json.dumps(self.summary(normalize=normalize), indent=2)
430
+ return json.dumps(self.summary(normalize=normalize, decimals=decimals), indent=2)
421
431
 
422
432
 
423
433
  class Boxes(BaseTensor):
@@ -80,14 +80,6 @@ class AIGym:
80
80
  self.keypoints = results[0].keypoints.data
81
81
  self.annotator = Annotator(im0, line_width=2)
82
82
 
83
- num_keypoints = len(results[0])
84
-
85
- # Resize self.angle, self.count, and self.stage if the number of keypoints has changed
86
- if len(self.angle) != num_keypoints:
87
- self.angle = [0] * num_keypoints
88
- self.count = [0] * num_keypoints
89
- self.stage = ["-" for _ in range(num_keypoints)]
90
-
91
83
  for ind, k in enumerate(reversed(self.keypoints)):
92
84
  if self.pose_type in ["pushup", "pullup"]:
93
85
  self.angle[ind] = self.annotator.estimate_pose_angle(
@@ -171,7 +171,7 @@ class ObjectCounter:
171
171
  # Extract tracks
172
172
  for box, track_id, cls in zip(boxes, track_ids, clss):
173
173
  # Draw bounding box
174
- self.annotator.box_label(box, label=f"{track_id}:{self.names[cls]}", color=colors(int(cls), True))
174
+ self.annotator.box_label(box, label=f"{track_id}:{self.names[cls]}", color=colors(int(track_id), True))
175
175
 
176
176
  # Draw Tracks
177
177
  track_line = self.track_history[track_id]
@@ -142,6 +142,8 @@ def check_imgsz(imgsz, stride=32, min_dim=1, max_dim=2, floor=0):
142
142
  imgsz = [imgsz]
143
143
  elif isinstance(imgsz, (list, tuple)):
144
144
  imgsz = list(imgsz)
145
+ elif isinstance(imgsz, str): # i.e. '640' or '[640,640]'
146
+ imgsz = [int(imgsz)] if imgsz.isnumeric() else eval(imgsz)
145
147
  else:
146
148
  raise TypeError(
147
149
  f"'imgsz={imgsz}' is of invalid type {type(imgsz).__name__}. "
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ultralytics
3
- Version: 8.1.33
3
+ Version: 8.1.34
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
@@ -1,4 +1,4 @@
1
- ultralytics/__init__.py,sha256=nSJaKs51Mt6vlyRUP0OTpfUYjkjmRpOu1eukiArzyqo,625
1
+ ultralytics/__init__.py,sha256=IMD6-azLvBn3uZcJVCpVQ8HmUsqkOnmY-Ih5trpM16M,625
2
2
  ultralytics/assets/bus.jpg,sha256=wCAZxJecGR63Od3ZRERe9Aja1Weayrb9Ug751DS_vGM,137419
3
3
  ultralytics/assets/zidane.jpg,sha256=Ftc4aeMmen1O0A3o6GCDO9FlfBslLpTAw0gnetx7bts,50427
4
4
  ultralytics/cfg/__init__.py,sha256=4DFeQcRmsOUUJtP49MezHhWKlE52mUSHI7bKFglOq4k,21273
@@ -78,7 +78,7 @@ ultralytics/engine/__init__.py,sha256=mHtJuK4hwF8cuV-VHDc7tp6u6D1gHz2Z7JI8grmQDT
78
78
  ultralytics/engine/exporter.py,sha256=pwTQCo88Sd41NqYKx5Jp15fSqhFgaY3Z5gfLm8uzLR0,53882
79
79
  ultralytics/engine/model.py,sha256=uemH3-CTwKTMbbiJnIqtReCNy-5TEK9VD737v3VIqxg,39435
80
80
  ultralytics/engine/predictor.py,sha256=wQRKdWGDTP5A6CS0gTC6U3RPDMhP3QkEzWSPm6eqCkU,17022
81
- ultralytics/engine/results.py,sha256=njylLUuhZQE0ry9IPH0uN8zXV_q89ZfRqghNEF5PQw0,30246
81
+ ultralytics/engine/results.py,sha256=D4wZ9OsmBrEQWCkfOeUn_oagXLqu3SxRZYlpYkDDLH8,30667
82
82
  ultralytics/engine/trainer.py,sha256=C04cEN9v-kvR2dIIjgAN8dBAx8XSTChlQkDxAxfwTlU,34527
83
83
  ultralytics/engine/tuner.py,sha256=zttHrQkvXuUVTB7jmM4Z85GgIsQ2hjpW9YrMccrQ4wo,11829
84
84
  ultralytics/engine/validator.py,sha256=rcmJSGrsAfj-ryQktv6-fe0hAT7Z8CLNhUUUf0VsPYI,14645
@@ -148,10 +148,10 @@ ultralytics/nn/modules/head.py,sha256=LonV2b7TrLx-zKhHQ2fCpKg7BfC-tUBtPlS5NNcfT_
148
148
  ultralytics/nn/modules/transformer.py,sha256=AxD9uURpCl-EqvXe3DiG6JW-pBzB16G-AahLdZ7yayo,17909
149
149
  ultralytics/nn/modules/utils.py,sha256=779QnnKp9v8jv251ESduTXJ0ol8HkIOLbGQWwEGQjhU,3196
150
150
  ultralytics/solutions/__init__.py,sha256=mHtJuK4hwF8cuV-VHDc7tp6u6D1gHz2Z7JI8grmQDTs,42
151
- ultralytics/solutions/ai_gym.py,sha256=AZruOCqBEuAZLG1Mg-OelbD_HgJIAmBkPGwHKs-DqwE,6029
151
+ ultralytics/solutions/ai_gym.py,sha256=LqOg7XKxuDlBAXFhSLQAIVTMxsQxoj7BumiHeVrjLMc,5696
152
152
  ultralytics/solutions/distance_calculation.py,sha256=N1QB5uDG_6sp8jD5uSwp_NTPmyP4UCqJm9G2lNrgpr8,6334
153
153
  ultralytics/solutions/heatmap.py,sha256=nOoAcXkJd1bhw8SNbqVTweVwIKrgdrZeUhMrvkNPhes,10928
154
- ultralytics/solutions/object_counter.py,sha256=yJzdLarrdnTMSJdpBf8mCVOJUvN-C_zzvkgTH23Fi3o,11262
154
+ ultralytics/solutions/object_counter.py,sha256=GGerPvjZ3Bzd53rUTWKwZ-GB8UX9DlW_Rki1PMUwVEc,11267
155
155
  ultralytics/solutions/speed_estimation.py,sha256=lvaU-F8f3V4KFVKFaNS7isIdYtMSFjh_zF9gl0Mals8,6714
156
156
  ultralytics/trackers/__init__.py,sha256=j72IgH2dZHQArMPK4YwcV5ieIw94fYvlGdQjB9cOQKw,227
157
157
  ultralytics/trackers/basetrack.py,sha256=-vBDD-Q9lsxfTMK2w9kuqWGrYbRMmaBCCEbGGyR53gE,3675
@@ -165,7 +165,7 @@ ultralytics/trackers/utils/matching.py,sha256=c_pthBfu9sWeMVYe-dSecdWcQxUey-mQT2
165
165
  ultralytics/utils/__init__.py,sha256=SN7wyoJP8zaDzqUoDIHTyV3tqprIgCTfT738kge0EPI,37500
166
166
  ultralytics/utils/autobatch.py,sha256=ygZ3f2ByIkcujB89ENcTnGWWnAQw5Pbg6nBuShg-5t4,3863
167
167
  ultralytics/utils/benchmarks.py,sha256=cj_sztcI-hzfvRX8vzfXo4wmQe2CuQUcDHBO9THBbco,18285
168
- ultralytics/utils/checks.py,sha256=ENayYz6TIb7Uuf6fLYoPuZC5ITLcbCabbpwpLBoT89c,27811
168
+ ultralytics/utils/checks.py,sha256=nzWNEfNci6rKC9x9ZYXRPJtK2vvvI7YKKZHROMUSsb0,27940
169
169
  ultralytics/utils/dist.py,sha256=3HeNbY2gp7vYhcvVhsrvTrQXpQmgT8tpmnzApf3eQRA,2267
170
170
  ultralytics/utils/downloads.py,sha256=IVuwBodagj7GOGnzy868TBq4TC8O2d9TlV94_Uzi_KA,21496
171
171
  ultralytics/utils/errors.py,sha256=GqP_Jgj_n0paxn8OMhn3DTCgoNkB2WjUcUaqs-M6SQk,816
@@ -191,9 +191,9 @@ ultralytics/utils/callbacks/neptune.py,sha256=5Z3ua5YBTUS56FH8VQKQG1aaIo9fH8GEyz
191
191
  ultralytics/utils/callbacks/raytune.py,sha256=6OgGNuC35F29lw8Dl_d0lue4-iBR6dqrBVQnIRQDx4E,632
192
192
  ultralytics/utils/callbacks/tensorboard.py,sha256=hRmWjbqdA4RNaLuSZznuDcpOBW-_-_Ga0u-B8UU-7ZI,4134
193
193
  ultralytics/utils/callbacks/wb.py,sha256=4QI81nHdzgwhXHlmTiRxLqunvkKakLXYUhHTUY1ZeHA,6635
194
- ultralytics-8.1.33.dist-info/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
195
- ultralytics-8.1.33.dist-info/METADATA,sha256=dmv1kbJLjGfIZXm0bAPxZVYRC0NZa9KZhO0Pn2HK9Zc,40330
196
- ultralytics-8.1.33.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
197
- ultralytics-8.1.33.dist-info/entry_points.txt,sha256=YM_wiKyTe9yRrsEfqvYolNO5ngwfoL4-NwgKzc8_7sI,93
198
- ultralytics-8.1.33.dist-info/top_level.txt,sha256=XP49TwiMw4QGsvTLSYiJhz1xF_k7ev5mQ8jJXaXi45Q,12
199
- ultralytics-8.1.33.dist-info/RECORD,,
194
+ ultralytics-8.1.34.dist-info/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
195
+ ultralytics-8.1.34.dist-info/METADATA,sha256=6o1wyHfX25Agzzj4ZWF9xQaYX8aPleKXhw6pNgufjZ0,40330
196
+ ultralytics-8.1.34.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
197
+ ultralytics-8.1.34.dist-info/entry_points.txt,sha256=YM_wiKyTe9yRrsEfqvYolNO5ngwfoL4-NwgKzc8_7sI,93
198
+ ultralytics-8.1.34.dist-info/top_level.txt,sha256=XP49TwiMw4QGsvTLSYiJhz1xF_k7ev5mQ8jJXaXi45Q,12
199
+ ultralytics-8.1.34.dist-info/RECORD,,