dgenerate-ultralytics-headless 8.3.144__py3-none-any.whl → 8.3.145__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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dgenerate-ultralytics-headless
3
- Version: 8.3.144
3
+ Version: 8.3.145
4
4
  Summary: Automatically built Ultralytics package with python-opencv-headless dependency instead of python-opencv
5
5
  Author-email: Glenn Jocher <glenn.jocher@ultralytics.com>, Jing Qiu <jing.qiu@ultralytics.com>
6
6
  Maintainer-email: Ultralytics <hello@ultralytics.com>
@@ -55,7 +55,7 @@ Requires-Dist: coverage[toml]; extra == "dev"
55
55
  Requires-Dist: mkdocs>=1.6.0; extra == "dev"
56
56
  Requires-Dist: mkdocs-material>=9.5.9; extra == "dev"
57
57
  Requires-Dist: mkdocstrings[python]; extra == "dev"
58
- Requires-Dist: mkdocs-ultralytics-plugin>=0.1.17; extra == "dev"
58
+ Requires-Dist: mkdocs-ultralytics-plugin>=0.1.19; extra == "dev"
59
59
  Requires-Dist: mkdocs-macros-plugin>=1.0.5; extra == "dev"
60
60
  Provides-Extra: export
61
61
  Requires-Dist: onnx<1.18.0,>=1.12.0; extra == "export"
@@ -1,4 +1,4 @@
1
- dgenerate_ultralytics_headless-8.3.144.dist-info/licenses/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
1
+ dgenerate_ultralytics_headless-8.3.145.dist-info/licenses/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
2
2
  tests/__init__.py,sha256=xnMhv3O_DF1YrW4zk__ZywQzAaoTDjPKPoiI1Ktss1w,670
3
3
  tests/conftest.py,sha256=JjgKSs36ZaGmmtqGmAapmFSoFF1YwyV3IZsOgqt2IVM,2593
4
4
  tests/test_cli.py,sha256=T0HWw0aws8WFlrdVl1NnUnQKROQCRGbjR010iYUN1Sw,5852
@@ -8,7 +8,7 @@ tests/test_exports.py,sha256=HmMKOTCia9ZDC0VYc_EPmvBTM5LM5eeI1NF_pKjLpd8,9677
8
8
  tests/test_integrations.py,sha256=cQfgueFhEZ8Xs-tF0uiIEhvn0DlhOH-Wqrx96LXp3D0,6303
9
9
  tests/test_python.py,sha256=Zx9OlPN11_D1WSLpi9nPFqORNHNz0lEn6mxVNL2ZHjE,25852
10
10
  tests/test_solutions.py,sha256=tuf6n_fsI8KvSdJrnc-cqP2qYdiYqCWuVrx0z9dOz3Q,13213
11
- ultralytics/__init__.py,sha256=3-pT6fFmi4jAduO28YsWFpL3KKxYvrl1kQhs2qaQLiI,730
11
+ ultralytics/__init__.py,sha256=u3QffN3nHEJosKs8D2yFToSRrI9sa77PqqJoQ1T2Fms,730
12
12
  ultralytics/assets/bus.jpg,sha256=wCAZxJecGR63Od3ZRERe9Aja1Weayrb9Ug751DS_vGM,137419
13
13
  ultralytics/assets/zidane.jpg,sha256=Ftc4aeMmen1O0A3o6GCDO9FlfBslLpTAw0gnetx7bts,50427
14
14
  ultralytics/cfg/__init__.py,sha256=a2jQYIUoTwYRNUddLWE_TWxD7LQOczveM_BV7qVbork,39655
@@ -120,9 +120,9 @@ ultralytics/data/scripts/get_coco128.sh,sha256=qmRQl_hOKrsdHrTrnyQuFIH01oDz3lfaz
120
120
  ultralytics/data/scripts/get_imagenet.sh,sha256=hr42H16bM47iT27rgS7MpEo-GeOZAYUQXgr0B2cwn48,1705
121
121
  ultralytics/engine/__init__.py,sha256=lm6MckFYCPTbqIoX7w0s_daxdjNeBeKW6DXppv1-QUM,70
122
122
  ultralytics/engine/exporter.py,sha256=Ug0HvQSseQA9k4jb_CUGXKPg9w082W1cocwPxxtXgkM,73902
123
- ultralytics/engine/model.py,sha256=JFouz4lZ4_1carHYjmpJc3ODNhs4OcEoDV96O8GGz_Y,53129
123
+ ultralytics/engine/model.py,sha256=hJNeSemchlecsyxd_Fuj-351z0AJIhOE4GN3W0tJGU8,53300
124
124
  ultralytics/engine/predictor.py,sha256=30fBpuwOuNT3hr8bju4coeOr-jqU_8hDYESugmowLBE,22151
125
- ultralytics/engine/results.py,sha256=NJ63EIHUxwip_azu1tykQD_WH7-tr9H4LWbzBlKfWRs,72323
125
+ ultralytics/engine/results.py,sha256=Mb8pBTOrBtQh0PQtGVbhRZ_C1VyqYFumjLggiKCRIJs,72295
126
126
  ultralytics/engine/trainer.py,sha256=zZ2Lm7VJOlBX-Ya52ec3n3IlSn9_yM5fbsRIWGeGOyo,39556
127
127
  ultralytics/engine/tuner.py,sha256=4ue7JbMFQp7JcWhhwCAY-b-xZsjm5VKVlPFDUTyxt_8,12789
128
128
  ultralytics/engine/validator.py,sha256=MMxH1TMKN32Y8MHaN4XOofQ1RkXNm867oM63eVtOtZA,16970
@@ -205,21 +205,21 @@ ultralytics/nn/modules/head.py,sha256=zTXFXc46ljPdP3mjgH7B3y2bPIjvbVPtgTu_rQCV8x
205
205
  ultralytics/nn/modules/transformer.py,sha256=PW5-6gzOP3_rZ_uAkmxvI42nU5bkrgbgLKCy5PC5px4,31415
206
206
  ultralytics/nn/modules/utils.py,sha256=rn8yTObZGkQoqVzjbZWLaHiytppG4ffjMME4Lw60glM,6092
207
207
  ultralytics/solutions/__init__.py,sha256=ZoeAQavTLp8aClnhZ9tbl6lxy86GxofyGvZWTx2aWkI,1209
208
- ultralytics/solutions/ai_gym.py,sha256=pOfuRFDt7q_AX4EtbZZKSWFLP63xZDnsRwBz9lCHkC0,5345
208
+ ultralytics/solutions/ai_gym.py,sha256=A8vzdjTqOF2mFAiiy7zu3f8lzwqLJ07dk5aqZ8p-x_w,5256
209
209
  ultralytics/solutions/analytics.py,sha256=e_uD6lVFdpVrpxSZzAt_zLh5GnoKpSDDZF16uz3nS0U,12252
210
210
  ultralytics/solutions/config.py,sha256=1HZvgWPt7duDxqAaOTyu4-TOBeRJeWx5EQgUwnyyO50,5394
211
211
  ultralytics/solutions/distance_calculation.py,sha256=e2Xa7dVOqiuk43JNakoxQlX48evEgZiEtxdtHTdlAsk,5931
212
- ultralytics/solutions/heatmap.py,sha256=FXHVJqdJxhB2yKABaoEQXEJGnmWYNptL5lnZjfHJIJ0,5427
213
- ultralytics/solutions/instance_segmentation.py,sha256=9fW9XoSpVHnXAg7q6VziQNq2Wq1SUuPGjxMiBkDUZco,3742
212
+ ultralytics/solutions/heatmap.py,sha256=IVnTOyIbxKrhmnzGbkncIqPakPHeJe4nrwQkOPJ00wY,5421
213
+ ultralytics/solutions/instance_segmentation.py,sha256=HBWkCwmRa0jk84q4fhANzGpyirAtiCkAKRt0j9ED_Cw,3739
214
214
  ultralytics/solutions/object_blurrer.py,sha256=UVd9EGpyb_fJXFnPg3lbnhWxY1ntHVWmIJ2ragbZ6eY,3942
215
- ultralytics/solutions/object_counter.py,sha256=F4naCZOx4YrA6avC6RYJkX61hjz-Ayse7f2p94RBMNY,9749
215
+ ultralytics/solutions/object_counter.py,sha256=8wLAGv3DYFHvVgGGaEVaYj2WtdCSspuxInX-T78rwLs,9505
216
216
  ultralytics/solutions/object_cropper.py,sha256=SVB9fflB7-juZWUARpi-kndSZDVI-oXjHg4WUnOuA9A,3470
217
217
  ultralytics/solutions/parking_management.py,sha256=IHWK48DZa6PwaOKUu3XTJAZCxF6WtTlCno7N8W6VR4k,13481
218
218
  ultralytics/solutions/queue_management.py,sha256=_K6ugLMDfpp37S-LFV36K3QXf3vqjfxji8BPP_-6iqc,4337
219
219
  ultralytics/solutions/region_counter.py,sha256=8vNrr0SnEBJ7ngD_whWpD7jMlrzuYGWxUuZx3WOv0ys,5739
220
220
  ultralytics/solutions/security_alarm.py,sha256=HXoPFlTOVp5eUecPuGIl_DXLKuN8-M32BCvCOd_vRac,6279
221
221
  ultralytics/solutions/similarity_search.py,sha256=GdrPEpfBwLpM5Mx4XQiTrahgdQgiSIeGdHWWTLQl5xU,9926
222
- ultralytics/solutions/solutions.py,sha256=0KIjRelx283v5XdKd9ucjDpU654xRSpSo5KY6X52y9w,37317
222
+ ultralytics/solutions/solutions.py,sha256=3JGuGGzEvgKHw_XYNv11yo_PxZlSqduIuW8fyrNeZ4E,37407
223
223
  ultralytics/solutions/speed_estimation.py,sha256=_4tIfWPI7O_hYRQAvNrALMzdy2sBR5_0BxnPdJb0Gks,5823
224
224
  ultralytics/solutions/streamlit_inference.py,sha256=menjJLsuP7AsQJSnBo7gRHfMlYE8HzMp0YNGqCU64n0,9986
225
225
  ultralytics/solutions/trackzone.py,sha256=LRCG5HhcZb9PiYWbkUPeWuIOnNskPE4FEDY6a3Y4ctA,3850
@@ -237,7 +237,7 @@ ultralytics/trackers/utils/matching.py,sha256=uSYtywqi1lE_uNN1FwuBFPyISfDQXHMu8K
237
237
  ultralytics/utils/__init__.py,sha256=Z2-2V5jKe4psJ1IH8FwPK2U-2f40m4iKa3YJN7kBqx8,59563
238
238
  ultralytics/utils/autobatch.py,sha256=33m8YgggLIhltDqMXZ5OE-FGs2QiHrl2-LfgY1mI4cw,5119
239
239
  ultralytics/utils/autodevice.py,sha256=AvgXFt8c1Cg4icKh0Hbhhz8UmVQ2Wjyfdfkeb2C8zck,8855
240
- ultralytics/utils/benchmarks.py,sha256=QlfYzkGFhy_eP0DRCscdcpN-2TwvQFcM7zfR1Mc9WK4,30795
240
+ ultralytics/utils/benchmarks.py,sha256=YYsSSQfoe1HzHLEz-OR2z3XcrcMlFG_hef6kvaS3fwQ,30886
241
241
  ultralytics/utils/checks.py,sha256=qykHykHYl5ceWX3EYW06qRpIQw1HB2JgIvbFBFrXWns,33762
242
242
  ultralytics/utils/dist.py,sha256=A9lDGtGefTjSVvVS38w86GOdbtLzNBDZuDGK0MT4PRI,4170
243
243
  ultralytics/utils/downloads.py,sha256=aKbQJVJqRFSpLXPWW8bZXNmAA19naa-SMGH8hiSA_38,22048
@@ -265,8 +265,8 @@ ultralytics/utils/callbacks/neptune.py,sha256=j8pecmlcsM8FGzLKWoBw5xUsi5t8E5HuxY
265
265
  ultralytics/utils/callbacks/raytune.py,sha256=S6Bq16oQDQ8BQgnZzA0zJHGN_BBr8iAM_WtGoLiEcwg,1283
266
266
  ultralytics/utils/callbacks/tensorboard.py,sha256=MDPBW7aDes-66OE6YqKXXvqA_EocjzEMHWGM-8z9vUQ,5281
267
267
  ultralytics/utils/callbacks/wb.py,sha256=Tm_-aRr2CN32MJkY9tylpMBJkb007-MSRNSQ7rDJ5QU,7521
268
- dgenerate_ultralytics_headless-8.3.144.dist-info/METADATA,sha256=pjfVH2kxPAOCVzy-QREsKjWhDgQczOJFFRisrYolbpw,38296
269
- dgenerate_ultralytics_headless-8.3.144.dist-info/WHEEL,sha256=zaaOINJESkSfm_4HQVc5ssNzHCPXhJm0kEUakpsEHaU,91
270
- dgenerate_ultralytics_headless-8.3.144.dist-info/entry_points.txt,sha256=YM_wiKyTe9yRrsEfqvYolNO5ngwfoL4-NwgKzc8_7sI,93
271
- dgenerate_ultralytics_headless-8.3.144.dist-info/top_level.txt,sha256=XP49TwiMw4QGsvTLSYiJhz1xF_k7ev5mQ8jJXaXi45Q,12
272
- dgenerate_ultralytics_headless-8.3.144.dist-info/RECORD,,
268
+ dgenerate_ultralytics_headless-8.3.145.dist-info/METADATA,sha256=n8Fow7ULHvi2K6YDlvPvAVJlZMdKGdi3LxczHqDx_QQ,38296
269
+ dgenerate_ultralytics_headless-8.3.145.dist-info/WHEEL,sha256=zaaOINJESkSfm_4HQVc5ssNzHCPXhJm0kEUakpsEHaU,91
270
+ dgenerate_ultralytics_headless-8.3.145.dist-info/entry_points.txt,sha256=YM_wiKyTe9yRrsEfqvYolNO5ngwfoL4-NwgKzc8_7sI,93
271
+ dgenerate_ultralytics_headless-8.3.145.dist-info/top_level.txt,sha256=XP49TwiMw4QGsvTLSYiJhz1xF_k7ev5mQ8jJXaXi45Q,12
272
+ dgenerate_ultralytics_headless-8.3.145.dist-info/RECORD,,
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.144"
3
+ __version__ = "8.3.145"
4
4
 
5
5
  import os
6
6
 
@@ -634,10 +634,7 @@ class Model(torch.nn.Module):
634
634
  self.metrics = validator.metrics
635
635
  return validator.metrics
636
636
 
637
- def benchmark(
638
- self,
639
- **kwargs: Any,
640
- ):
637
+ def benchmark(self, data=None, format="", verbose=False, **kwargs: Any):
641
638
  """
642
639
  Benchmark the model across various export formats to evaluate performance.
643
640
 
@@ -647,14 +644,14 @@ class Model(torch.nn.Module):
647
644
  defaults, and any additional user-provided keyword arguments.
648
645
 
649
646
  Args:
647
+ data (str): Path to the dataset for benchmarking.
648
+ verbose (bool): Whether to print detailed benchmark information.
649
+ format (str): Export format name for specific benchmarking.
650
650
  **kwargs (Any): Arbitrary keyword arguments to customize the benchmarking process. Common options include:
651
- - data (str): Path to the dataset for benchmarking.
652
651
  - imgsz (int | List[int]): Image size for benchmarking.
653
652
  - half (bool): Whether to use half-precision (FP16) mode.
654
653
  - int8 (bool): Whether to use int8 precision mode.
655
654
  - device (str): Device to run the benchmark on (e.g., 'cpu', 'cuda').
656
- - verbose (bool): Whether to print detailed benchmark information.
657
- - format (str): Export format name for specific benchmarking.
658
655
 
659
656
  Returns:
660
657
  (dict): A dictionary containing the results of the benchmarking process, including metrics for
@@ -671,17 +668,21 @@ class Model(torch.nn.Module):
671
668
  self._check_is_pytorch_model()
672
669
  from ultralytics.utils.benchmarks import benchmark
673
670
 
671
+ from .exporter import export_formats
672
+
674
673
  custom = {"verbose": False} # method defaults
675
674
  args = {**DEFAULT_CFG_DICT, **self.model.args, **custom, **kwargs, "mode": "benchmark"}
675
+ fmts = export_formats()
676
+ export_args = set(dict(zip(fmts["Argument"], fmts["Arguments"])).get(format, []))
677
+ export_kwargs = {k: v for k, v in args.items() if k in export_args - set(["batch"])}
676
678
  return benchmark(
677
679
  model=self,
678
- data=kwargs.get("data"), # if no 'data' argument passed set data=None for default datasets
680
+ data=data, # if no 'data' argument passed set data=None for default datasets
679
681
  imgsz=args["imgsz"],
680
- half=args["half"],
681
- int8=args["int8"],
682
682
  device=args["device"],
683
- verbose=kwargs.get("verbose", False),
684
- format=kwargs.get("format", ""),
683
+ verbose=verbose,
684
+ format=format,
685
+ **export_kwargs,
685
686
  )
686
687
 
687
688
  def export(
@@ -558,7 +558,7 @@ class Results(SimpleClass, DataExportMixin):
558
558
  )
559
559
  idx = (
560
560
  pred_boxes.id
561
- if pred_boxes.id is not None and color_mode == "instance"
561
+ if pred_boxes.is_track and color_mode == "instance"
562
562
  else pred_boxes.cls
563
563
  if pred_boxes and color_mode == "class"
564
564
  else reversed(range(len(pred_masks)))
@@ -568,10 +568,10 @@ class Results(SimpleClass, DataExportMixin):
568
568
  # Plot Detect results
569
569
  if pred_boxes is not None and show_boxes:
570
570
  for i, d in enumerate(reversed(pred_boxes)):
571
- c, d_conf, id = int(d.cls), float(d.conf) if conf else None, None if d.id is None else int(d.id.item())
571
+ c, d_conf, id = int(d.cls), float(d.conf) if conf else None, int(d.id.item()) if d.is_track else None
572
572
  name = ("" if id is None else f"id:{id} ") + names[c]
573
573
  label = (f"{name} {d_conf:.2f}" if conf else name) if labels else None
574
- box = d.xyxyxyxy.reshape(-1, 4, 2).squeeze() if is_obb else d.xyxy.squeeze()
574
+ box = d.xyxyxyxy.squeeze() if is_obb else d.xyxy.squeeze()
575
575
  annotator.box_label(
576
576
  box,
577
577
  label,
@@ -733,7 +733,7 @@ class Results(SimpleClass, DataExportMixin):
733
733
  elif boxes:
734
734
  # Detect/segment/pose
735
735
  for j, d in enumerate(boxes):
736
- c, conf, id = int(d.cls), float(d.conf), None if d.id is None else int(d.id.item())
736
+ c, conf, id = int(d.cls), float(d.conf), int(d.id.item()) if d.is_track else None
737
737
  line = (c, *(d.xyxyxyxyn.view(-1) if is_obb else d.xywhn.view(-1)))
738
738
  if masks:
739
739
  seg = masks[j].xyn[0].copy().reshape(-1) # reversed mask.xyn, (n,2) to (n*2)
@@ -74,14 +74,12 @@ class AIGym(BaseSolution):
74
74
  annotator = SolutionAnnotator(im0, line_width=self.line_width) # Initialize annotator
75
75
 
76
76
  self.extract_tracks(im0) # Extract tracks (bounding boxes, classes, and masks)
77
- tracks = self.tracks[0]
78
77
 
79
- if tracks.boxes.id is not None:
80
- track_ids = tracks.boxes.id.cpu().tolist()
81
- kpt_data = tracks.keypoints.data.cpu() # Avoid repeated .cpu() calls
78
+ if len(self.boxes):
79
+ kpt_data = self.tracks.keypoints.data.cpu() # Avoid repeated .cpu() calls
82
80
 
83
81
  for i, k in enumerate(kpt_data):
84
- track_id = int(track_ids[i]) # get track id
82
+ track_id = int(self.track_ids[i]) # get track id
85
83
  state = self.states[track_id] # get state details
86
84
  # Get keypoints and estimate the angle
87
85
  state["angle"] = annotator.estimate_pose_angle(*[k[int(idx)] for idx in self.kpts])
@@ -110,7 +110,7 @@ class Heatmap(ObjectCounter):
110
110
  self.display_counts(plot_im) # Display the counts on the frame
111
111
 
112
112
  # Normalize, apply colormap to heatmap and combine with original image
113
- if self.track_data.id is not None:
113
+ if self.track_data.is_track:
114
114
  normalized_heatmap = cv2.normalize(self.heatmap, None, 0, 255, cv2.NORM_MINMAX).astype(np.uint8)
115
115
  colored_heatmap = cv2.applyColorMap(normalized_heatmap, self.colormap)
116
116
  plot_im = cv2.addWeighted(plot_im, 0.5, colored_heatmap, 0.5, 0)
@@ -65,7 +65,7 @@ class InstanceSegmentation(BaseSolution):
65
65
  >>> print(summary)
66
66
  """
67
67
  self.extract_tracks(im0) # Extract tracks (bounding boxes, classes, and masks)
68
- self.masks = getattr(self.tracks[0], "masks", None)
68
+ self.masks = getattr(self.tracks, "masks", None)
69
69
 
70
70
  # Iterate over detected classes, track IDs, and segmentation masks
71
71
  if self.masks is None:
@@ -167,10 +167,6 @@ class ObjectCounter(BaseSolution):
167
167
  self.extract_tracks(im0) # Extract tracks
168
168
  self.annotator = SolutionAnnotator(im0, line_width=self.line_width) # Initialize annotator
169
169
 
170
- is_obb = getattr(self.tracks[0], "obb", None) is not None # True if OBB results exist
171
- if is_obb and self.track_data and self.track_data.id is not None:
172
- self.boxes = self.track_data.xyxyxyxy.reshape(-1, 4, 2).cpu()
173
-
174
170
  self.annotator.draw_region(
175
171
  reg_pts=self.region, color=(104, 0, 123), thickness=self.line_width * 2
176
172
  ) # Draw region
@@ -169,11 +169,12 @@ class BaseSolution:
169
169
  with self.profilers[0]:
170
170
  self.tracks = self.model.track(
171
171
  source=im0, persist=True, classes=self.classes, verbose=False, **self.track_add_args
172
- )
173
- self.track_data = self.tracks[0].obb or self.tracks[0].boxes # Extract tracks for OBB or object detection
172
+ )[0]
173
+ is_obb = self.tracks.obb is not None
174
+ self.track_data = self.tracks.obb if is_obb else self.tracks.boxes # Extract tracks for OBB or object detection
174
175
 
175
- if self.track_data and self.track_data.id is not None:
176
- self.boxes = self.track_data.xyxy.cpu()
176
+ if self.track_data and self.track_data.is_track:
177
+ self.boxes = (self.track_data.xyxyxyxy if is_obb else self.track_data.xyxy).cpu()
177
178
  self.clss = self.track_data.cls.cpu().tolist()
178
179
  self.track_ids = self.track_data.id.int().cpu().tolist()
179
180
  self.confs = self.track_data.conf.cpu().tolist()
@@ -59,6 +59,7 @@ def benchmark(
59
59
  verbose=False,
60
60
  eps=1e-3,
61
61
  format="",
62
+ **kwargs,
62
63
  ):
63
64
  """
64
65
  Benchmark a YOLO model across different formats for speed and accuracy.
@@ -73,6 +74,7 @@ def benchmark(
73
74
  verbose (bool | float): If True or a float, assert benchmarks pass with given metric.
74
75
  eps (float): Epsilon value for divide by zero prevention.
75
76
  format (str): Export format for benchmarking. If not supplied all formats are benchmarked.
77
+ **kwargs (Any): Additional keyword arguments for exporter.
76
78
 
77
79
  Returns:
78
80
  (pandas.DataFrame): A pandas DataFrame with benchmark results for each format, including file size, metric,
@@ -154,7 +156,7 @@ def benchmark(
154
156
  exported_model = model # PyTorch format
155
157
  else:
156
158
  filename = model.export(
157
- imgsz=imgsz, format=format, half=half, int8=int8, data=data, device=device, verbose=False
159
+ imgsz=imgsz, format=format, half=half, int8=int8, data=data, device=device, verbose=False, **kwargs
158
160
  )
159
161
  exported_model = YOLO(filename, task=model.task)
160
162
  assert suffix in str(filename), "export failed"