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 +1 -1
- ultralytics/cfg/datasets/dota8-multispectral.yaml +38 -0
- ultralytics/data/augment.py +1 -1
- ultralytics/data/converter.py +3 -1
- ultralytics/data/loaders.py +1 -1
- ultralytics/engine/predictor.py +3 -1
- ultralytics/nn/autobackend.py +9 -2
- ultralytics/solutions/region_counter.py +3 -2
- ultralytics/utils/torch_utils.py +1 -1
- {ultralytics-8.3.112.dist-info → ultralytics-8.3.113.dist-info}/METADATA +1 -1
- {ultralytics-8.3.112.dist-info → ultralytics-8.3.113.dist-info}/RECORD +15 -14
- {ultralytics-8.3.112.dist-info → ultralytics-8.3.113.dist-info}/WHEEL +0 -0
- {ultralytics-8.3.112.dist-info → ultralytics-8.3.113.dist-info}/entry_points.txt +0 -0
- {ultralytics-8.3.112.dist-info → ultralytics-8.3.113.dist-info}/licenses/LICENSE +0 -0
- {ultralytics-8.3.112.dist-info → ultralytics-8.3.113.dist-info}/top_level.txt +0 -0
ultralytics/__init__.py
CHANGED
@@ -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
|
ultralytics/data/augment.py
CHANGED
@@ -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
|
|
ultralytics/data/converter.py
CHANGED
@@ -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=
|
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
|
|
ultralytics/data/loaders.py
CHANGED
@@ -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
|
|
ultralytics/engine/predictor.py
CHANGED
@@ -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
|
-
|
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
|
|
ultralytics/nn/autobackend.py
CHANGED
@@ -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=
|
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
|
100
|
-
annotator.box_label(box, label=self.names[cls], color=colors(
|
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()
|
ultralytics/utils/torch_utils.py
CHANGED
@@ -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.
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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.
|
254
|
-
ultralytics-8.3.
|
255
|
-
ultralytics-8.3.
|
256
|
-
ultralytics-8.3.
|
257
|
-
ultralytics-8.3.
|
258
|
-
ultralytics-8.3.
|
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,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|