ultralytics 8.3.112__py3-none-any.whl → 8.3.113__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 🚀 AGPL-3.0 License - https://ultralytics.com/license
2
2
 
3
- __version__ = "8.3.112"
3
+ __version__ = "8.3.113"
4
4
 
5
5
  import os
6
6
 
@@ -0,0 +1,38 @@
1
+ # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
2
+
3
+ # DOTA8-Multispectral dataset (DOTA8 interpolated across 10 channels in the visual spectrum) by Ultralytics
4
+ # Documentation: https://docs.ultralytics.com/datasets/obb/dota8/
5
+ # Example usage: yolo train model=yolov8n-obb.pt data=dota8-multispectral.yaml
6
+ # parent
7
+ # ├── ultralytics
8
+ # └── datasets
9
+ # └── dota8-multispectral ← downloads here (1MB)
10
+
11
+ # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
12
+ path: ../datasets/dota8-multispectral # dataset root dir
13
+ train: images/train # train images (relative to 'path') 4 images
14
+ val: images/val # val images (relative to 'path') 4 images
15
+
16
+ # Number of multispectral image channels
17
+ channels: 10
18
+
19
+ # Classes for DOTA 1.0
20
+ names:
21
+ 0: plane
22
+ 1: ship
23
+ 2: storage tank
24
+ 3: baseball diamond
25
+ 4: tennis court
26
+ 5: basketball court
27
+ 6: ground track field
28
+ 7: harbor
29
+ 8: bridge
30
+ 9: large vehicle
31
+ 10: small vehicle
32
+ 11: helicopter
33
+ 12: roundabout
34
+ 13: soccer ball field
35
+ 14: swimming pool
36
+
37
+ # Download script/URL (optional)
38
+ download: https://github.com/ultralytics/assets/releases/download/v0.0.0/dota8-multispectral.zip
@@ -2117,7 +2117,7 @@ class Format:
2117
2117
  if len(img.shape) < 3:
2118
2118
  img = np.expand_dims(img, -1)
2119
2119
  img = img.transpose(2, 0, 1)
2120
- img = np.ascontiguousarray(img[::-1] if random.uniform(0, 1) > self.bgr else img)
2120
+ img = np.ascontiguousarray(img[::-1] if random.uniform(0, 1) > self.bgr and img.shape[0] == 3 else img)
2121
2121
  img = torch.from_numpy(img)
2122
2122
  return img
2123
2123
 
@@ -718,7 +718,9 @@ def convert_to_multispectral(path, n_channels=10, replace=False, zip=False):
718
718
 
719
719
  Examples:
720
720
  >>> # Convert a single image
721
- >>> convert_to_multispectral("path/to/image.jpg", n_channels=12)
721
+ >>> convert_to_multispectral("path/to/image.jpg", n_channels=10)
722
+ >>> # Convert a dataset
723
+ >>> convert_to_multispectral("../datasets/coco8", n_channels=10)
722
724
  """
723
725
  from scipy.interpolate import interp1d
724
726
 
@@ -492,7 +492,7 @@ class LoadPilAndNumpy:
492
492
  if isinstance(im, Image.Image):
493
493
  if im.mode != "RGB":
494
494
  im = im.convert("RGB")
495
- im = np.asarray(im)[:, :, ::-1]
495
+ im = np.asarray(im)[:, :, ::-1] # RGB to BGR
496
496
  im = np.ascontiguousarray(im) # contiguous
497
497
  return im
498
498
 
@@ -151,7 +151,9 @@ class BasePredictor:
151
151
  not_tensor = not isinstance(im, torch.Tensor)
152
152
  if not_tensor:
153
153
  im = np.stack(self.pre_transform(im))
154
- im = im[..., ::-1].transpose((0, 3, 1, 2)) # BGR to RGB, BHWC to BCHW, (n, 3, h, w)
154
+ if im.shape[-1] == 3:
155
+ im = im[..., ::-1] # BGR to RGB
156
+ im = im.transpose((0, 3, 1, 2)) # BHWC to BCHW, (n, 3, h, w)
155
157
  im = np.ascontiguousarray(im) # contiguous
156
158
  im = torch.from_numpy(im)
157
159
 
@@ -148,7 +148,7 @@ class AutoBackend(nn.Module):
148
148
  model, metadata, task = None, None, None
149
149
 
150
150
  # Set device
151
- cuda = torch.cuda.is_available() and device.type != "cpu" # use CUDA
151
+ cuda = isinstance(device, torch.device) and torch.cuda.is_available() and device.type != "cpu" # use CUDA
152
152
  if cuda and not any([nn_module, pt, jit, engine, onnx, paddle]): # GPU dataloader formats
153
153
  device = torch.device("cpu")
154
154
  cuda = False
@@ -264,6 +264,13 @@ class AutoBackend(nn.Module):
264
264
  import openvino as ov
265
265
 
266
266
  core = ov.Core()
267
+ device_name = "AUTO"
268
+ if isinstance(device, str) and device.startswith("intel"):
269
+ device_name = device.split(":")[1].upper() # Intel OpenVINO device
270
+ device = torch.device("cpu")
271
+ if device_name not in core.available_devices:
272
+ LOGGER.warning(f"OpenVINO device '{device_name}' not available. Using 'AUTO' instead.")
273
+ device_name = "AUTO"
267
274
  w = Path(w)
268
275
  if not w.is_file(): # if not *.xml
269
276
  w = next(w.glob("*.xml")) # get *.xml file from *_openvino_model dir
@@ -276,7 +283,7 @@ class AutoBackend(nn.Module):
276
283
  LOGGER.info(f"Using OpenVINO {inference_mode} mode for batch={batch} inference...")
277
284
  ov_compiled_model = core.compile_model(
278
285
  ov_model,
279
- device_name="AUTO", # AUTO selects best available device, do not modify
286
+ device_name=device_name,
280
287
  config={"PERFORMANCE_HINT": inference_mode},
281
288
  )
282
289
  input_name = ov_compiled_model.input().get_any_name()
@@ -96,8 +96,8 @@ class RegionCounter(BaseSolution):
96
96
 
97
97
  # Process bounding boxes & check containment
98
98
  if points:
99
- for (point, cls), box in zip(zip(points, self.clss), self.boxes):
100
- annotator.box_label(box, label=self.names[cls], color=colors(cls))
99
+ for point, cls, track_id, box in zip(points, self.clss, self.track_ids, self.boxes):
100
+ annotator.box_label(box, label=self.names[cls], color=colors(track_id, True))
101
101
 
102
102
  for region in self.counting_regions:
103
103
  if region["prepared_polygon"].contains(point):
@@ -111,6 +111,7 @@ class RegionCounter(BaseSolution):
111
111
  label=str(region["counts"]),
112
112
  color=region["region_color"],
113
113
  txt_color=region["text_color"],
114
+ margin=self.line_width * 4,
114
115
  )
115
116
  region["counts"] = 0 # Reset for next frame
116
117
  plot_im = annotator.result()
@@ -161,7 +161,7 @@ def select_device(device="", batch=0, newline=False, verbose=True):
161
161
  Note:
162
162
  Sets the 'CUDA_VISIBLE_DEVICES' environment variable for specifying which GPUs to use.
163
163
  """
164
- if isinstance(device, torch.device) or str(device).startswith("tpu"):
164
+ if isinstance(device, torch.device) or str(device).startswith("tpu") or str(device).startswith("intel"):
165
165
  return device
166
166
 
167
167
  s = f"Ultralytics {__version__} 🚀 Python-{PYTHON_VERSION} torch-{torch.__version__} "
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ultralytics
3
- Version: 8.3.112
3
+ Version: 8.3.113
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>
@@ -1,4 +1,4 @@
1
- ultralytics/__init__.py,sha256=avtMuty6qUgSPAPMUS0xIZFolN5iYwbpEWOrZ9zcV5o,730
1
+ ultralytics/__init__.py,sha256=VTqTgGNRGJceBOt1vzSsy_E-AT4lpo3E0ME01yvryLU,730
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=-66Vtli1XqcRUJ9F_gYyEoKTO3gDMmOrDDnUEa5G84s,39646
@@ -25,6 +25,7 @@ ultralytics/cfg/datasets/coco8-seg.yaml,sha256=wpfFI-GfL5asbLtFyaHLE6593jdka7waE
25
25
  ultralytics/cfg/datasets/coco8.yaml,sha256=qJX2TSM7nMV-PpCMXCX4702yp3a-ZF1ubLatlGN5XOE,1901
26
26
  ultralytics/cfg/datasets/crack-seg.yaml,sha256=QEnxOouOKQ3TM6Cl8pBnX5QLPWdChZEBA28jaLkzxA4,852
27
27
  ultralytics/cfg/datasets/dog-pose.yaml,sha256=Cr-J7dPhHmNfW9TKH48L22WPYmJFtWH-lbOAxLHnjKU,907
28
+ ultralytics/cfg/datasets/dota8-multispectral.yaml,sha256=62euz96MV3wRos2w6lhhG0DsSpSWte3VxPz-1hLz7YQ,1226
28
29
  ultralytics/cfg/datasets/dota8.yaml,sha256=W43bp_6yUUVjs6vpogNrGI9vU7rLbEsSx6vyfIkDyj8,1073
29
30
  ultralytics/cfg/datasets/hand-keypoints.yaml,sha256=5vue4kvPrAdd6ZyB90rZgtGUUHvSi3s_ht7jBBqX7a4,989
30
31
  ultralytics/cfg/datasets/lvis.yaml,sha256=jD-z6cny0l_Cl7xN6RqiFAc7a7odcVwr3E8_jmH-wzA,29716
@@ -94,12 +95,12 @@ ultralytics/cfg/trackers/botsort.yaml,sha256=D9doE5GQUe6HrAFzr7OfQFIGPFk0M_vJ0B_
94
95
  ultralytics/cfg/trackers/bytetrack.yaml,sha256=6u-tiZlk16EqEwkNXaMrza6PAQmWj_ypgv26LGCtPDg,886
95
96
  ultralytics/data/__init__.py,sha256=nAXaL1puCc7z_NjzQNlJnhbVhT9Fla2u7Dsqo7q1dAc,644
96
97
  ultralytics/data/annotator.py,sha256=VEwb11FsEZm75qlEp8XDHFGKW0_rGsEaFDaBVd771Kw,2902
97
- ultralytics/data/augment.py,sha256=4XtuwM7SWG-mGqcWy-A9SZ-BO3ybge1vBFg3vZE1EM0,125258
98
+ ultralytics/data/augment.py,sha256=WBVuxXW1Mzu7V-LaSopoFEiu8S2r0kM5zMpFVyzcWF0,125280
98
99
  ultralytics/data/base.py,sha256=efummc7-4ha3O2J-ZoUOK9-HO-8Glh3h0W2oEwh4WBg,18503
99
100
  ultralytics/data/build.py,sha256=56pavLie6PDFEVYChMxnGQGtGsxozYZRpFqC70DRGls,9650
100
- ultralytics/data/converter.py,sha256=K-XQwBMovTDvGMlUStq933HEIgRCRWViI6WUbnJ-3Rc,26785
101
+ ultralytics/data/converter.py,sha256=znXH2XTdo0Q4NDHMny1ydVBvrxKn2kbbwI-X5bn1MlQ,26890
101
102
  ultralytics/data/dataset.py,sha256=3hcnCBBb5C_m4l5E1m2uf_2hQFhMv31FmvTfvWed8ek,34760
102
- ultralytics/data/loaders.py,sha256=LjVOpqGtR4sijOqk2dLRObuW9fuOPp7UtAsrC3v9xnk,28480
103
+ ultralytics/data/loaders.py,sha256=kl3gHkcIcNHqLKuQ5fyAlDo9WYBsCPjLcnFbRpk6KVw,28494
103
104
  ultralytics/data/split.py,sha256=6LHB1z8woXurWjXfM-Zm2thRr1KXvzR18CFJA-SDUvE,4677
104
105
  ultralytics/data/split_dota.py,sha256=p8eVGht9tABSVbf9vwvxA_AQYEva3IGHePKlMeNrn64,11872
105
106
  ultralytics/data/utils.py,sha256=yzYHZor0E1JU5RjC5dKYSqQx1uYHorDtzZK_Qi2dz6E,35124
@@ -110,7 +111,7 @@ ultralytics/data/scripts/get_imagenet.sh,sha256=hr42H16bM47iT27rgS7MpEo-GeOZAYUQ
110
111
  ultralytics/engine/__init__.py,sha256=lm6MckFYCPTbqIoX7w0s_daxdjNeBeKW6DXppv1-QUM,70
111
112
  ultralytics/engine/exporter.py,sha256=qdJ2uXGASnEvpcddoNstiLBaO4ljUsjqFC6oFQtB8mk,73662
112
113
  ultralytics/engine/model.py,sha256=wS1cwgv0iyhsslMAZYMGlYDWitDIRW96d7MxwW-Sw5o,52817
113
- ultralytics/engine/predictor.py,sha256=8SGBk9WKyOtt7_bRbdY4_0uFylMw1wOP_V1u8De4gEY,21692
114
+ ultralytics/engine/predictor.py,sha256=YJ5l-0qIpr6JAJxowswtZ0IqmXBqVTvAA9vR40v0sCM,21752
114
115
  ultralytics/engine/results.py,sha256=C3j-kyjoMxn7bb8tK_kaYrOWB8-7qDYZ-_hSh1LPWMA,79742
115
116
  ultralytics/engine/trainer.py,sha256=O6Cl-27Wd8w7WJGfG3rIx7LDgF-_qb9gF_j8oBeUV24,38839
116
117
  ultralytics/engine/tuner.py,sha256=oyjnbAExddGTBN-sm7tXFtxSgjZOZ5M81EIJSzpmqno,12581
@@ -183,7 +184,7 @@ ultralytics/models/yolo/yoloe/train.py,sha256=JF_QxJUU3_w8yhmTfKFTpI7rVRJL1g7z7w
183
184
  ultralytics/models/yolo/yoloe/train_seg.py,sha256=6nN9DbP-AJKlJ3nIlvNn8VXFwFLQEVjSOgdN5aA817M,5309
184
185
  ultralytics/models/yolo/yoloe/val.py,sha256=utdt8wZvvW9OPxO5rx8KsFlkLG0FXj0YMD7Jhyk54D8,8440
185
186
  ultralytics/nn/__init__.py,sha256=rjociYD9lo_K-d-1s6TbdWklPLjTcEHk7OIlRDJstIE,615
186
- ultralytics/nn/autobackend.py,sha256=5AFOupiznw0weF_orWE4OFGzR2yDwO3WF1XP0StEiuk,38769
187
+ ultralytics/nn/autobackend.py,sha256=_Pcqui3HykJx2o5ez1a9goV_jzFg-d1LmGm_P4As0y4,39202
187
188
  ultralytics/nn/tasks.py,sha256=EwRC70qA3eP8Xp-gGP8OuN-q8LCGDrq1iRue7ncRSV4,62916
188
189
  ultralytics/nn/text_model.py,sha256=H6OiLe0FOyZY4pd7-ixRTxaBgx3lOc2GmGTmrFnoJd0,10136
189
190
  ultralytics/nn/modules/__init__.py,sha256=dXLtIk9rt944WfsTdpgEdWOg3HQEHdwQztuZ6WNJygs,3144
@@ -204,7 +205,7 @@ ultralytics/solutions/object_counter.py,sha256=QXBRBEv_a0uiOYYzsNdu0VAH62rg97v1E
204
205
  ultralytics/solutions/object_cropper.py,sha256=RNk_v_XRXm9Ye2TsKG5CPd3TDsRaiODWpy8MvYqkSLs,3382
205
206
  ultralytics/solutions/parking_management.py,sha256=SiVxRl44OxxYUXIzNOxOBqtaFJSRRpD_gTsNyvB1n5o,13277
206
207
  ultralytics/solutions/queue_management.py,sha256=cUzAMMeWijowkdiuaSUZRr0S3I5MTHkCQOLjOqS0JN0,4299
207
- ultralytics/solutions/region_counter.py,sha256=LKZuykgmnevKKzYifyeHQwQroF7tJJIPI6HVXi5mb9M,5299
208
+ ultralytics/solutions/region_counter.py,sha256=5CFtrWxQC8a-6puaxjYXaJAmYE9vTFUxNSd-XYeiRkU,5373
208
209
  ultralytics/solutions/security_alarm.py,sha256=mbUtqoLgjAWz9k3pjMoEZY_PR-lhjiic1NK90FhEJkw,6250
209
210
  ultralytics/solutions/solutions.py,sha256=UaDZN_wAmV-XeRh57ca9TuqX-7sZUU-TmrpL1BqYuEc,31522
210
211
  ultralytics/solutions/speed_estimation.py,sha256=3UFtGXKNUy1jt6GS4wg4hvkQoQ4KkOHXjzMpmSHodx0,5126
@@ -236,7 +237,7 @@ ultralytics/utils/ops.py,sha256=9QCSbEcgJPcBAp3lw4esof93aOHBadS3hN18gaMjC-M,3420
236
237
  ultralytics/utils/patches.py,sha256=qArRoYscf7jph-OwIYJAAkOB5bAM6pcktgXKc76A8HE,4860
237
238
  ultralytics/utils/plotting.py,sha256=5QPK1y-gm4T1mK3sjfRZhIUJAyP05D1cJ7h9wHPTifU,46616
238
239
  ultralytics/utils/tal.py,sha256=P5nPoR9qNnFuDIda0fsn8WP6m1V8r7EbvXUuhNRFFTA,20805
239
- ultralytics/utils/torch_utils.py,sha256=_HVbVpgzNcYerEZqZ6es6ufYA8-iTpHCwAyrVdPcuUg,38853
240
+ ultralytics/utils/torch_utils.py,sha256=OqH2yNSghs0JSq16Br_PDBnVed5ZRs0C58zDZDk_bqA,38888
240
241
  ultralytics/utils/triton.py,sha256=xK9Db_ZUVDnIK1u76S2G-6ulIBsLfj9HN_YOaSrnMuU,5304
241
242
  ultralytics/utils/tuner.py,sha256=R_TVIfsTA8qxEPiqHBCZgh1rzqAAOwQ1gImw-0IR13g,6682
242
243
  ultralytics/utils/callbacks/__init__.py,sha256=hzL63Rce6VkZhP4Lcim9LKjadixaQG86nKqPhk7IkS0,242
@@ -250,9 +251,9 @@ ultralytics/utils/callbacks/neptune.py,sha256=JaI95Cj2kIjUhlEEOiDN0-Drc-fDelLhNI
250
251
  ultralytics/utils/callbacks/raytune.py,sha256=A8amUGpux7dYES-L1iSeMoMXBySGWCD1aUqT7vcG-pU,1284
251
252
  ultralytics/utils/callbacks/tensorboard.py,sha256=jgYnym3cUQFAgN1GzTyO7l3jINtfAh8zhrllDvnLuVQ,5339
252
253
  ultralytics/utils/callbacks/wb.py,sha256=iDRFXI4IIDm8R5OI89DMTmjs8aHLo1HRCLkOFKdaMG4,7507
253
- ultralytics-8.3.112.dist-info/licenses/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
254
- ultralytics-8.3.112.dist-info/METADATA,sha256=UX-SAUTnCITX5u9VeAmWg5-0N7PqZ1d_Pih4p0m48WI,37354
255
- ultralytics-8.3.112.dist-info/WHEEL,sha256=pxyMxgL8-pra_rKaQ4drOZAegBVuX-G_4nRHjjgWbmo,91
256
- ultralytics-8.3.112.dist-info/entry_points.txt,sha256=YM_wiKyTe9yRrsEfqvYolNO5ngwfoL4-NwgKzc8_7sI,93
257
- ultralytics-8.3.112.dist-info/top_level.txt,sha256=XP49TwiMw4QGsvTLSYiJhz1xF_k7ev5mQ8jJXaXi45Q,12
258
- ultralytics-8.3.112.dist-info/RECORD,,
254
+ ultralytics-8.3.113.dist-info/licenses/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
255
+ ultralytics-8.3.113.dist-info/METADATA,sha256=GIjS16RqWNypO6Ub9fmk_Z8gzmTAmFubqpOUzi3ae-4,37354
256
+ ultralytics-8.3.113.dist-info/WHEEL,sha256=pxyMxgL8-pra_rKaQ4drOZAegBVuX-G_4nRHjjgWbmo,91
257
+ ultralytics-8.3.113.dist-info/entry_points.txt,sha256=YM_wiKyTe9yRrsEfqvYolNO5ngwfoL4-NwgKzc8_7sI,93
258
+ ultralytics-8.3.113.dist-info/top_level.txt,sha256=XP49TwiMw4QGsvTLSYiJhz1xF_k7ev5mQ8jJXaXi45Q,12
259
+ ultralytics-8.3.113.dist-info/RECORD,,