ultralytics 8.2.20__py3-none-any.whl → 8.2.22__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.
- tests/__init__.py +22 -0
- tests/conftest.py +71 -0
- tests/test_cli.py +128 -0
- tests/test_cuda.py +134 -0
- tests/test_engine.py +132 -0
- tests/test_explorer.py +61 -0
- tests/test_exports.py +186 -0
- tests/test_integrations.py +145 -0
- tests/test_python.py +576 -0
- ultralytics/__init__.py +1 -1
- ultralytics/data/augment.py +67 -10
- ultralytics/engine/exporter.py +14 -19
- ultralytics/solutions/__init__.py +1 -1
- ultralytics/solutions/analytics.py +2 -0
- ultralytics/solutions/parking_management.py +24 -20
- ultralytics/utils/checks.py +4 -3
- {ultralytics-8.2.20.dist-info → ultralytics-8.2.22.dist-info}/METADATA +1 -1
- {ultralytics-8.2.20.dist-info → ultralytics-8.2.22.dist-info}/RECORD +22 -13
- {ultralytics-8.2.20.dist-info → ultralytics-8.2.22.dist-info}/LICENSE +0 -0
- {ultralytics-8.2.20.dist-info → ultralytics-8.2.22.dist-info}/WHEEL +0 -0
- {ultralytics-8.2.20.dist-info → ultralytics-8.2.22.dist-info}/entry_points.txt +0 -0
- {ultralytics-8.2.20.dist-info → ultralytics-8.2.22.dist-info}/top_level.txt +0 -0
ultralytics/engine/exporter.py
CHANGED
|
@@ -83,6 +83,7 @@ from ultralytics.utils import (
|
|
|
83
83
|
WINDOWS,
|
|
84
84
|
__version__,
|
|
85
85
|
callbacks,
|
|
86
|
+
checks,
|
|
86
87
|
colorstr,
|
|
87
88
|
get_default_args,
|
|
88
89
|
yaml_save,
|
|
@@ -184,6 +185,7 @@ class Exporter:
|
|
|
184
185
|
if sum(flags) != 1:
|
|
185
186
|
raise ValueError(f"Invalid export format='{fmt}'. Valid formats are {fmts}")
|
|
186
187
|
jit, onnx, xml, engine, coreml, saved_model, pb, tflite, edgetpu, tfjs, paddle, ncnn = flags # export booleans
|
|
188
|
+
is_tf_format = any((saved_model, pb, tflite, edgetpu, tfjs))
|
|
187
189
|
|
|
188
190
|
# Device
|
|
189
191
|
if fmt == "engine" and self.args.device is None:
|
|
@@ -243,7 +245,7 @@ class Exporter:
|
|
|
243
245
|
m.dynamic = self.args.dynamic
|
|
244
246
|
m.export = True
|
|
245
247
|
m.format = self.args.format
|
|
246
|
-
elif isinstance(m, C2f) and not
|
|
248
|
+
elif isinstance(m, C2f) and not is_tf_format:
|
|
247
249
|
# EdgeTPU does not support FlexSplitV while split provides cleaner ONNX graph
|
|
248
250
|
m.forward = m.forward_split
|
|
249
251
|
|
|
@@ -303,7 +305,7 @@ class Exporter:
|
|
|
303
305
|
f[3], _ = self.export_openvino()
|
|
304
306
|
if coreml: # CoreML
|
|
305
307
|
f[4], _ = self.export_coreml()
|
|
306
|
-
if
|
|
308
|
+
if is_tf_format: # TensorFlow formats
|
|
307
309
|
self.args.int8 |= edgetpu
|
|
308
310
|
f[5], keras_model = self.export_saved_model()
|
|
309
311
|
if pb or tfjs: # pb prerequisite to tfjs
|
|
@@ -777,11 +779,10 @@ class Exporter:
|
|
|
777
779
|
_ = self.cache.write_bytes(cache)
|
|
778
780
|
|
|
779
781
|
# Load dataset w/ builder (for batching) and calibrate
|
|
780
|
-
dataset = self.get_int8_calibration_dataloader(prefix)
|
|
781
782
|
config.int8_calibrator = EngineCalibrator(
|
|
782
|
-
dataset=
|
|
783
|
+
dataset=self.get_int8_calibration_dataloader(prefix),
|
|
783
784
|
batch=2 * self.args.batch,
|
|
784
|
-
cache=self.file.with_suffix(".cache"),
|
|
785
|
+
cache=str(self.file.with_suffix(".cache")),
|
|
785
786
|
)
|
|
786
787
|
|
|
787
788
|
elif half:
|
|
@@ -813,7 +814,7 @@ class Exporter:
|
|
|
813
814
|
except ImportError:
|
|
814
815
|
suffix = "-macos" if MACOS else "-aarch64" if ARM64 else "" if cuda else "-cpu"
|
|
815
816
|
version = "" if ARM64 else "<=2.13.1"
|
|
816
|
-
check_requirements(f"tensorflow{suffix}{version}")
|
|
817
|
+
check_requirements((f"tensorflow{suffix}{version}", "keras"))
|
|
817
818
|
import tensorflow as tf # noqa
|
|
818
819
|
if ARM64:
|
|
819
820
|
check_requirements("cmake") # 'cmake' is needed to build onnxsim on aarch64
|
|
@@ -828,8 +829,8 @@ class Exporter:
|
|
|
828
829
|
"flatbuffers>=23.5.26,<100", # update old 'flatbuffers' included inside tensorflow package
|
|
829
830
|
"onnxruntime-gpu" if cuda else "onnxruntime",
|
|
830
831
|
),
|
|
831
|
-
cmds="--extra-index-url https://pypi.ngc.nvidia.com",
|
|
832
|
-
)
|
|
832
|
+
cmds="--extra-index-url https://pypi.ngc.nvidia.com", # onnx_graphsurgeon only on NVIDIA
|
|
833
|
+
)
|
|
833
834
|
|
|
834
835
|
LOGGER.info(f"\n{prefix} starting export with tensorflow {tf.__version__}...")
|
|
835
836
|
check_version(
|
|
@@ -855,24 +856,17 @@ class Exporter:
|
|
|
855
856
|
f_onnx, _ = self.export_onnx()
|
|
856
857
|
|
|
857
858
|
# Export to TF
|
|
858
|
-
tmp_file = f / "tmp_tflite_int8_calibration_images.npy" # int8 calibration images file
|
|
859
859
|
np_data = None
|
|
860
860
|
if self.args.int8:
|
|
861
|
+
tmp_file = f / "tmp_tflite_int8_calibration_images.npy" # int8 calibration images file
|
|
861
862
|
verbosity = "info"
|
|
862
863
|
if self.args.data:
|
|
863
|
-
# Generate calibration data for integer quantization
|
|
864
|
-
dataloader = self.get_int8_calibration_dataloader(prefix)
|
|
865
|
-
images = []
|
|
866
|
-
for i, batch in enumerate(dataloader):
|
|
867
|
-
if i >= 100: # maximum number of calibration images
|
|
868
|
-
break
|
|
869
|
-
im = batch["img"].permute(1, 2, 0)[None] # list to nparray, CHW to BHWC
|
|
870
|
-
images.append(im)
|
|
871
864
|
f.mkdir()
|
|
865
|
+
images = [batch["img"].permute(0, 2, 3, 1) for batch in self.get_int8_calibration_dataloader(prefix)]
|
|
872
866
|
images = torch.cat(images, 0).float()
|
|
873
867
|
# mean = images.view(-1, 3).mean(0) # imagenet mean [123.675, 116.28, 103.53]
|
|
874
868
|
# std = images.view(-1, 3).std(0) # imagenet std [58.395, 57.12, 57.375]
|
|
875
|
-
np.save(str(tmp_file), images.numpy()) # BHWC
|
|
869
|
+
np.save(str(tmp_file), images.numpy().astype(np.float32)) # BHWC
|
|
876
870
|
np_data = [["images", tmp_file, [[[[0, 0, 0]]]], [[[[255, 255, 255]]]]]]
|
|
877
871
|
else:
|
|
878
872
|
verbosity = "error"
|
|
@@ -1017,10 +1011,11 @@ class Exporter:
|
|
|
1017
1011
|
"""Add metadata to *.tflite models per https://www.tensorflow.org/lite/models/convert/metadata."""
|
|
1018
1012
|
import flatbuffers
|
|
1019
1013
|
|
|
1020
|
-
if
|
|
1014
|
+
if ARM64:
|
|
1021
1015
|
from tflite_support import metadata # noqa
|
|
1022
1016
|
from tflite_support import metadata_schema_py_generated as schema # noqa
|
|
1023
1017
|
else:
|
|
1018
|
+
# TFLite Support bug https://github.com/tensorflow/tflite-support/issues/954#issuecomment-2108570845
|
|
1024
1019
|
from tensorflow_lite_support.metadata import metadata_schema_py_generated as schema # noqa
|
|
1025
1020
|
from tensorflow_lite_support.metadata.python import metadata # noqa
|
|
1026
1021
|
|
|
@@ -5,7 +5,7 @@ from .analytics import Analytics
|
|
|
5
5
|
from .distance_calculation import DistanceCalculation
|
|
6
6
|
from .heatmap import Heatmap
|
|
7
7
|
from .object_counter import ObjectCounter
|
|
8
|
-
from .parking_management import ParkingManagement
|
|
8
|
+
from .parking_management import ParkingManagement, ParkingPtsSelection
|
|
9
9
|
from .queue_management import QueueManager
|
|
10
10
|
from .speed_estimation import SpeedEstimator
|
|
11
11
|
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# Ultralytics YOLO 🚀, AGPL-3.0 license
|
|
2
|
+
|
|
1
3
|
import json
|
|
2
4
|
from tkinter import filedialog, messagebox
|
|
3
5
|
|
|
@@ -10,32 +12,31 @@ from ultralytics.utils.plotting import Annotator
|
|
|
10
12
|
|
|
11
13
|
|
|
12
14
|
class ParkingPtsSelection:
|
|
13
|
-
def __init__(self
|
|
14
|
-
"""
|
|
15
|
-
Initializes the UI for selecting parking zone points in a tkinter window.
|
|
16
|
-
|
|
17
|
-
Args:
|
|
18
|
-
master (tk.Tk): The main tkinter window object.
|
|
19
|
-
"""
|
|
15
|
+
def __init__(self):
|
|
16
|
+
"""Initializes the UI for selecting parking zone points in a tkinter window."""
|
|
20
17
|
check_requirements("tkinter")
|
|
18
|
+
|
|
21
19
|
import tkinter as tk
|
|
22
20
|
|
|
23
|
-
self.
|
|
24
|
-
master.
|
|
21
|
+
self.tk = tk
|
|
22
|
+
self.master = tk.Tk()
|
|
23
|
+
self.master.title("Ultralytics Parking Zones Points Selector")
|
|
25
24
|
|
|
26
25
|
# Disable window resizing
|
|
27
|
-
master.resizable(False, False)
|
|
26
|
+
self.master.resizable(False, False)
|
|
28
27
|
|
|
29
28
|
# Setup canvas for image display
|
|
30
|
-
self.canvas = tk.Canvas(master, bg="white")
|
|
29
|
+
self.canvas = self.tk.Canvas(self.master, bg="white")
|
|
31
30
|
|
|
32
31
|
# Setup buttons
|
|
33
|
-
button_frame = tk.Frame(master)
|
|
34
|
-
button_frame.pack(side=tk.TOP)
|
|
32
|
+
button_frame = self.tk.Frame(self.master)
|
|
33
|
+
button_frame.pack(side=self.tk.TOP)
|
|
35
34
|
|
|
36
|
-
tk.Button(button_frame, text="Upload Image", command=self.upload_image).grid(row=0, column=0)
|
|
37
|
-
tk.Button(button_frame, text="Remove Last BBox", command=self.remove_last_bounding_box).grid(
|
|
38
|
-
|
|
35
|
+
self.tk.Button(button_frame, text="Upload Image", command=self.upload_image).grid(row=0, column=0)
|
|
36
|
+
self.tk.Button(button_frame, text="Remove Last BBox", command=self.remove_last_bounding_box).grid(
|
|
37
|
+
row=0, column=1
|
|
38
|
+
)
|
|
39
|
+
self.tk.Button(button_frame, text="Save", command=self.save_to_json).grid(row=0, column=2)
|
|
39
40
|
|
|
40
41
|
# Initialize properties
|
|
41
42
|
self.image_path = None
|
|
@@ -50,6 +51,8 @@ class ParkingPtsSelection:
|
|
|
50
51
|
self.canvas_max_width = 1280
|
|
51
52
|
self.canvas_max_height = 720
|
|
52
53
|
|
|
54
|
+
self.master.mainloop()
|
|
55
|
+
|
|
53
56
|
def upload_image(self):
|
|
54
57
|
"""Upload an image and resize it to fit canvas."""
|
|
55
58
|
self.image_path = filedialog.askopenfilename(filetypes=[("Image Files", "*.png;*.jpg;*.jpeg")])
|
|
@@ -74,12 +77,12 @@ class ParkingPtsSelection:
|
|
|
74
77
|
if self.canvas:
|
|
75
78
|
self.canvas.destroy() # Destroy previous canvas
|
|
76
79
|
|
|
77
|
-
self.canvas = tk.Canvas(self.master, bg="white", width=canvas_width, height=canvas_height)
|
|
80
|
+
self.canvas = self.tk.Canvas(self.master, bg="white", width=canvas_width, height=canvas_height)
|
|
78
81
|
resized_image = self.image.resize((canvas_width, canvas_height), Image.LANCZOS)
|
|
79
82
|
self.canvas_image = ImageTk.PhotoImage(resized_image)
|
|
80
|
-
self.canvas.create_image(0, 0, anchor=tk.NW, image=self.canvas_image)
|
|
83
|
+
self.canvas.create_image(0, 0, anchor=self.tk.NW, image=self.canvas_image)
|
|
81
84
|
|
|
82
|
-
self.canvas.pack(side=tk.BOTTOM)
|
|
85
|
+
self.canvas.pack(side=self.tk.BOTTOM)
|
|
83
86
|
self.canvas.bind("<Button-1>", self.on_canvas_click)
|
|
84
87
|
|
|
85
88
|
# Reset bounding boxes and current box
|
|
@@ -115,7 +118,7 @@ class ParkingPtsSelection:
|
|
|
115
118
|
if self.bounding_boxes:
|
|
116
119
|
self.bounding_boxes.pop() # Remove the last bounding box
|
|
117
120
|
self.canvas.delete("all") # Clear the canvas
|
|
118
|
-
self.canvas.create_image(0, 0, anchor=tk.NW, image=self.canvas_image) # Redraw the image
|
|
121
|
+
self.canvas.create_image(0, 0, anchor=self.tk.NW, image=self.canvas_image) # Redraw the image
|
|
119
122
|
|
|
120
123
|
# Redraw all bounding boxes
|
|
121
124
|
for box in self.bounding_boxes:
|
|
@@ -210,6 +213,7 @@ class ParkingManagement:
|
|
|
210
213
|
im0 (ndarray): inference image
|
|
211
214
|
boxes (list): bounding boxes data
|
|
212
215
|
clss (list): bounding boxes classes list
|
|
216
|
+
|
|
213
217
|
Returns:
|
|
214
218
|
filled_slots (int): total slots that are filled in parking lot
|
|
215
219
|
empty_slots (int): total slots that are available in parking lot
|
ultralytics/utils/checks.py
CHANGED
|
@@ -23,7 +23,6 @@ from ultralytics.utils import (
|
|
|
23
23
|
ASSETS,
|
|
24
24
|
AUTOINSTALL,
|
|
25
25
|
IS_COLAB,
|
|
26
|
-
IS_DOCKER,
|
|
27
26
|
IS_JUPYTER,
|
|
28
27
|
IS_KAGGLE,
|
|
29
28
|
IS_PIP_PACKAGE,
|
|
@@ -322,17 +321,18 @@ def check_font(font="Arial.ttf"):
|
|
|
322
321
|
return file
|
|
323
322
|
|
|
324
323
|
|
|
325
|
-
def check_python(minimum: str = "3.8.0") -> bool:
|
|
324
|
+
def check_python(minimum: str = "3.8.0", hard: bool = True) -> bool:
|
|
326
325
|
"""
|
|
327
326
|
Check current python version against the required minimum version.
|
|
328
327
|
|
|
329
328
|
Args:
|
|
330
329
|
minimum (str): Required minimum version of python.
|
|
330
|
+
hard (bool, optional): If True, raise an AssertionError if the requirement is not met.
|
|
331
331
|
|
|
332
332
|
Returns:
|
|
333
333
|
(bool): Whether the installed Python version meets the minimum constraints.
|
|
334
334
|
"""
|
|
335
|
-
return check_version(PYTHON_VERSION, minimum, name="Python
|
|
335
|
+
return check_version(PYTHON_VERSION, minimum, name="Python", hard=hard)
|
|
336
336
|
|
|
337
337
|
|
|
338
338
|
@TryExcept()
|
|
@@ -735,4 +735,5 @@ def cuda_is_available() -> bool:
|
|
|
735
735
|
|
|
736
736
|
|
|
737
737
|
# Define constants
|
|
738
|
+
IS_PYTHON_MINIMUM_3_10 = check_python("3.10", hard=False)
|
|
738
739
|
IS_PYTHON_3_12 = PYTHON_VERSION.startswith("3.12")
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: ultralytics
|
|
3
|
-
Version: 8.2.
|
|
3
|
+
Version: 8.2.22
|
|
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,13 @@
|
|
|
1
|
-
|
|
1
|
+
tests/__init__.py,sha256=9evx3lOdKZeY1iWXvH-FkMkgf8jLucWICoabzeD6aYg,626
|
|
2
|
+
tests/conftest.py,sha256=WOrMDmrxdYskt1nQmbPPhZ6zo1cJzS4vO7gVcKuEo2k,2545
|
|
3
|
+
tests/test_cli.py,sha256=BOvCGdTxYEKb5hPeKkDtfN2sX2FxjfmUYq9mbPKL7hU,4866
|
|
4
|
+
tests/test_cuda.py,sha256=Ga_fRdcfhKXwy3_C5x0a9P8MdsoIo1ko73IwaOqwtX0,4799
|
|
5
|
+
tests/test_engine.py,sha256=GA3igv3CTEMb4YYwZDlYPESv5RAuaZ-t3BscvBpQ5AY,4706
|
|
6
|
+
tests/test_explorer.py,sha256=r1pWer2y290Y0DqsM-La7egfEY0497YCdC4rwq3URV4,2178
|
|
7
|
+
tests/test_exports.py,sha256=TTmwlY3FAcVPffUFP9La0vpzNnfKYjej5nKqurCbwZg,6863
|
|
8
|
+
tests/test_integrations.py,sha256=J3D_LAy5gaawoLEMDrCj4HO8965o4kK1t4UBRot6EEw,5848
|
|
9
|
+
tests/test_python.py,sha256=invyej59wozoSZV4Rb7zwkgyVkRZrL149e-xb-c7xew,20086
|
|
10
|
+
ultralytics/__init__.py,sha256=dfT25agEhxx4fmylSQF8MO-vmCllbHmQne6L3UMxsv0,633
|
|
2
11
|
ultralytics/assets/bus.jpg,sha256=wCAZxJecGR63Od3ZRERe9Aja1Weayrb9Ug751DS_vGM,137419
|
|
3
12
|
ultralytics/assets/zidane.jpg,sha256=Ftc4aeMmen1O0A3o6GCDO9FlfBslLpTAw0gnetx7bts,50427
|
|
4
13
|
ultralytics/cfg/__init__.py,sha256=lR6jykSO_0cigsjrqSyFj_8JG_LvYi796viasyWhcfs,21358
|
|
@@ -65,7 +74,7 @@ ultralytics/cfg/trackers/botsort.yaml,sha256=YrPmj18p1UU40kJH5NRdL_4S8f7knggkk_q
|
|
|
65
74
|
ultralytics/cfg/trackers/bytetrack.yaml,sha256=QvHmtuwulK4X6j3T5VEqtCm0sbWWBUVmWPcCcM20qe0,688
|
|
66
75
|
ultralytics/data/__init__.py,sha256=VGe-ATG7j35F4A4r8Jmzffjlhve4JAJPgRa5ahKTU18,616
|
|
67
76
|
ultralytics/data/annotator.py,sha256=evXQzARVerc0hb9ol-n_GrrHf-dlXO4lCMMWEZoJ2UM,2117
|
|
68
|
-
ultralytics/data/augment.py,sha256=
|
|
77
|
+
ultralytics/data/augment.py,sha256=XOcVRcc1qx3b98YdvrpwNPgNBeJAx2fpC06Y7XLAdkw,59600
|
|
69
78
|
ultralytics/data/base.py,sha256=C3teLnw97ZTbpJHT9P7yYWosAKocMzgJjRe1rxgfpls,13524
|
|
70
79
|
ultralytics/data/build.py,sha256=nFdshVSDqU-tY9luH1T-cYnWHEdh9PtxRkwrs2UahMo,7268
|
|
71
80
|
ultralytics/data/converter.py,sha256=NLDiV67RshbKQnMJUiQQF11boVzEqgi2Hz39nKVAI4U,17528
|
|
@@ -79,7 +88,7 @@ ultralytics/data/explorer/utils.py,sha256=EvvukQiQUTBrsZznmMnyEX2EqTuwZo_Geyc8yf
|
|
|
79
88
|
ultralytics/data/explorer/gui/__init__.py,sha256=mHtJuK4hwF8cuV-VHDc7tp6u6D1gHz2Z7JI8grmQDTs,42
|
|
80
89
|
ultralytics/data/explorer/gui/dash.py,sha256=2oAbNroR2lfS45v53M1sRqZklLXbbj6qXqNxvplulC0,10087
|
|
81
90
|
ultralytics/engine/__init__.py,sha256=mHtJuK4hwF8cuV-VHDc7tp6u6D1gHz2Z7JI8grmQDTs,42
|
|
82
|
-
ultralytics/engine/exporter.py,sha256=
|
|
91
|
+
ultralytics/engine/exporter.py,sha256=c5Ky8_cElAjPm8y3-2-pJgn0bMGyqivvC2XhFH5gDsY,58222
|
|
83
92
|
ultralytics/engine/model.py,sha256=IE6HE9VIzqO3DscxSLexub0LUR673eiPFrCPCt6ozEE,40103
|
|
84
93
|
ultralytics/engine/predictor.py,sha256=wQRKdWGDTP5A6CS0gTC6U3RPDMhP3QkEzWSPm6eqCkU,17022
|
|
85
94
|
ultralytics/engine/results.py,sha256=zRuEIrBtpoCQ3M6a_YscnyXrWSP-zpL3ACv0gTdrDaw,30987
|
|
@@ -154,13 +163,13 @@ ultralytics/nn/modules/conv.py,sha256=Ywe87IhuaS22mR2JJ9xjnW8Sb-m7WTjxuqIxV_Dv8l
|
|
|
154
163
|
ultralytics/nn/modules/head.py,sha256=3N_4zW1UvhI1jCrIxIkNYxQDdiW6HxtxpaNAAudq6NU,22236
|
|
155
164
|
ultralytics/nn/modules/transformer.py,sha256=AxD9uURpCl-EqvXe3DiG6JW-pBzB16G-AahLdZ7yayo,17909
|
|
156
165
|
ultralytics/nn/modules/utils.py,sha256=779QnnKp9v8jv251ESduTXJ0ol8HkIOLbGQWwEGQjhU,3196
|
|
157
|
-
ultralytics/solutions/__init__.py,sha256=
|
|
166
|
+
ultralytics/solutions/__init__.py,sha256=S4m7p_rpg2pk9PdnqqD-6Sk--wDHxZSo7cUZjSwj_iQ,561
|
|
158
167
|
ultralytics/solutions/ai_gym.py,sha256=HDzzvBVFqWgQw2IgtEx5Eo3tEKbFRY3gkiVqax-4j2w,4683
|
|
159
|
-
ultralytics/solutions/analytics.py,sha256=
|
|
168
|
+
ultralytics/solutions/analytics.py,sha256=qJihaifoNLGKEq_6kpMzkz_6a2tvzbO9WlYPzYsZtuk,7093
|
|
160
169
|
ultralytics/solutions/distance_calculation.py,sha256=pSIkyytHGRAaNzIrkkNkiOnSVWU1PYvURlCIV_jRORA,6505
|
|
161
170
|
ultralytics/solutions/heatmap.py,sha256=AHXnmXhoQ95ph74zsdrvX_Lfy3wF0SsH0MIeTixE7Qg,10386
|
|
162
171
|
ultralytics/solutions/object_counter.py,sha256=htcQGWJX1y-vXVV1yUiTDT3sm8ByItjSNfu2Rl2IEmk,10808
|
|
163
|
-
ultralytics/solutions/parking_management.py,sha256=
|
|
172
|
+
ultralytics/solutions/parking_management.py,sha256=Bd7FU3WZ8mRBWq81Z5c8jH5WloF4jPKo8TycqU_AcEI,9786
|
|
164
173
|
ultralytics/solutions/queue_management.py,sha256=ECm6gLZplmE9Cm-zdOazHBBDcW-vvr8nx2M28fcPbts,6787
|
|
165
174
|
ultralytics/solutions/speed_estimation.py,sha256=kjqMSHGTHMZaNgTKNKWULxnJQNsvhq4WMUphMVlBjsc,6768
|
|
166
175
|
ultralytics/trackers/__init__.py,sha256=j72IgH2dZHQArMPK4YwcV5ieIw94fYvlGdQjB9cOQKw,227
|
|
@@ -175,7 +184,7 @@ ultralytics/trackers/utils/matching.py,sha256=UxhSGa5pN6WoYwYSBAkkt-O7xMxUR47VuU
|
|
|
175
184
|
ultralytics/utils/__init__.py,sha256=AjzSdFGfEPMPyFFX9JaONkmI5xgWLHFMO77aBA0ghpM,39518
|
|
176
185
|
ultralytics/utils/autobatch.py,sha256=ygZ3f2ByIkcujB89ENcTnGWWnAQw5Pbg6nBuShg-5t4,3863
|
|
177
186
|
ultralytics/utils/benchmarks.py,sha256=PlnUqhl2Om7jp7bKICDj9a2ABpJSl31VFI3ESnGdme8,23552
|
|
178
|
-
ultralytics/utils/checks.py,sha256=
|
|
187
|
+
ultralytics/utils/checks.py,sha256=VRZH50Spdx1OVaPaUxgEArpF2iI1Re6bVBdMhvFUPoE,28280
|
|
179
188
|
ultralytics/utils/dist.py,sha256=3HeNbY2gp7vYhcvVhsrvTrQXpQmgT8tpmnzApf3eQRA,2267
|
|
180
189
|
ultralytics/utils/downloads.py,sha256=cmO2Ev1DV1m_lYgQ2yGDG5xVRIBVS_z9nS_Frec_NeU,21496
|
|
181
190
|
ultralytics/utils/errors.py,sha256=GqP_Jgj_n0paxn8OMhn3DTCgoNkB2WjUcUaqs-M6SQk,816
|
|
@@ -201,9 +210,9 @@ ultralytics/utils/callbacks/neptune.py,sha256=5Z3ua5YBTUS56FH8VQKQG1aaIo9fH8GEyz
|
|
|
201
210
|
ultralytics/utils/callbacks/raytune.py,sha256=ODVYzy-CoM4Uge0zjkh3Hnh9nF2M0vhDrSenXnvcizw,705
|
|
202
211
|
ultralytics/utils/callbacks/tensorboard.py,sha256=Z1veCVcn9THPhdplWuIzwlsW2yF7y-On9IZIk3khM0Y,4135
|
|
203
212
|
ultralytics/utils/callbacks/wb.py,sha256=DViD0KeXH_i3eVT_CLR4bZFs1TMMUZBVBBYIS3aUfp0,6745
|
|
204
|
-
ultralytics-8.2.
|
|
205
|
-
ultralytics-8.2.
|
|
206
|
-
ultralytics-8.2.
|
|
207
|
-
ultralytics-8.2.
|
|
208
|
-
ultralytics-8.2.
|
|
209
|
-
ultralytics-8.2.
|
|
213
|
+
ultralytics-8.2.22.dist-info/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
|
|
214
|
+
ultralytics-8.2.22.dist-info/METADATA,sha256=yGRHf0twNJq8pZiVky6jN2QLl01kpiRsc9p9o-YCuqI,40694
|
|
215
|
+
ultralytics-8.2.22.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
|
216
|
+
ultralytics-8.2.22.dist-info/entry_points.txt,sha256=YM_wiKyTe9yRrsEfqvYolNO5ngwfoL4-NwgKzc8_7sI,93
|
|
217
|
+
ultralytics-8.2.22.dist-info/top_level.txt,sha256=XP49TwiMw4QGsvTLSYiJhz1xF_k7ev5mQ8jJXaXi45Q,12
|
|
218
|
+
ultralytics-8.2.22.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|