Skip to content

Commit 3846356

Browse files
Bump ultralytics in examples (#3704)
### Changes Bump ultralytics==8.3.221 ### Reason for changes To use torch==2.9.0 ### Tests https://github.com/openvinotoolkit/nncf/actions/runs/18911508636
1 parent a8df402 commit 3846356

File tree

8 files changed

+28
-36
lines changed

8 files changed

+28
-36
lines changed

.github/workflows/examples.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,8 @@ jobs:
159159
defaults:
160160
run:
161161
shell: bash
162+
env:
163+
PYTHONIOENCODING: utf-8
162164
steps:
163165
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
164166
with:

examples/post_training_quantization/onnx/yolov8_quantize_with_accuracy_control/deploy.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ def validate_ov_model(
4444
validator.jdict = []
4545
validator.stats = dict(tp_m=[], tp=[], conf=[], pred_cls=[], target_cls=[], target_img=[])
4646
validator.batch_i = 1
47-
validator.confusion_matrix = ConfusionMatrix(nc=validator.nc)
47+
validator.confusion_matrix = ConfusionMatrix(names=validator.names)
4848
compiled_model = ov.compile_model(ov_model, device_name="CPU")
4949
num_outputs = len(compiled_model.outputs)
5050
for batch_i, batch in enumerate(track(data_loader, description="Validating")):
@@ -62,7 +62,7 @@ def validate_ov_model(
6262
preds = validator.postprocess(preds)
6363
validator.update_metrics(preds, batch)
6464
stats = validator.get_stats()
65-
return stats, validator.seen, validator.nt_per_class.sum()
65+
return stats, validator.seen, validator.metrics.nt_per_class.sum()
6666

6767

6868
def run_benchmark(model_path: Path, config) -> float:

examples/post_training_quantization/onnx/yolov8_quantize_with_accuracy_control/main.py

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,6 @@
3434
ROOT = Path(__file__).parent.resolve()
3535

3636

37-
# WA: to set default value for dynamo parameter to False
38-
# TODO(AlexanderDokuchaev): remove after update ultralytics
39-
torch.onnx.export = partial(torch.onnx.export, dynamo=False)
40-
41-
4237
def validate(
4338
model: onnx.ModelProto,
4439
data_loader: torch.utils.data.DataLoader,
@@ -49,7 +44,7 @@ def validate(
4944
validator.jdict = []
5045
validator.stats = dict(tp_m=[], tp=[], conf=[], pred_cls=[], target_cls=[], target_img=[])
5146
validator.batch_i = 1
52-
validator.confusion_matrix = ConfusionMatrix(nc=validator.nc)
47+
validator.confusion_matrix = ConfusionMatrix(names=validator.names)
5348

5449
input_name = model.graph.input[0].name
5550
serialized_model = model.SerializeToString()
@@ -77,7 +72,7 @@ def validate(
7772
validator.update_metrics(preds, batch)
7873
stats = validator.get_stats()
7974

80-
return stats, validator.seen, validator.nt_per_class.sum()
75+
return stats, validator.seen, validator.metrics.nt_per_class.sum()
8176

8277

8378
def print_statistics(stats: dict[str, float], total_images: int, total_objects: int) -> None:
@@ -108,7 +103,7 @@ def print_statistics(stats: dict[str, float], total_images: int, total_objects:
108103

109104

110105
def prepare_validation(model: YOLO, args: Any) -> tuple[SegmentationValidator, torch.utils.data.DataLoader]:
111-
validator: SegmentationValidator = model.task_map[model.task]["validator"](args=args)
106+
validator = SegmentationValidator(args=args)
112107
validator.data = check_det_dataset(args.data)
113108
validator.stride = 32
114109
validator.is_coco = True
@@ -117,7 +112,8 @@ def prepare_validation(model: YOLO, args: Any) -> tuple[SegmentationValidator, t
117112
validator.metrics.names = validator.names
118113
validator.nc = model.model.model[-1].nc
119114
validator.process = ops.process_mask
120-
validator.plot_masks = []
115+
validator.device = torch.device("cpu")
116+
validator.end2end = False
121117

122118
coco_data_path = DATASETS_DIR / "coco128-seg"
123119
data_loader = validator.get_dataloader(coco_data_path.as_posix(), 1)
@@ -153,7 +149,7 @@ def validation_ac(
153149
validator.jdict = []
154150
validator.stats = dict(tp_m=[], tp=[], conf=[], pred_cls=[], target_cls=[], target_img=[])
155151
validator.batch_i = 1
156-
validator.confusion_matrix = ConfusionMatrix(nc=validator.nc)
152+
validator.confusion_matrix = ConfusionMatrix(names=validator.names)
157153

158154
rt_session_options = {"providers": ["CPUExecutionProvider"]}
159155
serialized_model = val_model.SerializeToString()
@@ -220,7 +216,7 @@ def run_example():
220216
model = YOLO(ROOT / f"{MODEL_NAME}.pt")
221217
args = get_cfg(cfg=DEFAULT_CFG)
222218
args.data = "coco128-seg.yaml"
223-
219+
args.plots = False
224220
validator, data_loader = prepare_validation(model, args)
225221

226222
fp32_model, fp32_model_path = prepare_onnx_model(model, MODEL_NAME)
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
ultralytics==8.3.22
1+
ultralytics==8.3.221
22
onnx==1.17.0
33
onnxruntime==1.21.1
44
openvino==2025.3.0
5-
torch==2.8.0
5+
torch==2.9.0

examples/post_training_quantization/openvino/yolov8/main.py

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
# limitations under the License.
1111
import re
1212
import subprocess
13-
from functools import partial
1413
from pathlib import Path
1514
from typing import Any
1615

@@ -33,18 +32,13 @@
3332
ROOT = Path(__file__).parent.resolve()
3433

3534

36-
# WA: to set default value for dynamo parameter to False
37-
# TODO(AlexanderDokuchaev): remove after update ultralytics
38-
torch.onnx.export = partial(torch.onnx.export, dynamo=False)
39-
40-
4135
def validate(
4236
model: ov.Model, data_loader: torch.utils.data.DataLoader, validator: DetectionValidator, num_samples: int = None
4337
) -> tuple[dict, int, int]:
4438
validator.seen = 0
4539
validator.jdict = []
4640
validator.stats = dict(tp=[], conf=[], pred_cls=[], target_cls=[], target_img=[])
47-
validator.confusion_matrix = ConfusionMatrix(nc=validator.nc)
41+
validator.confusion_matrix = ConfusionMatrix(names=validator.names)
4842
model.reshape({0: [1, 3, -1, -1]})
4943
compiled_model = ov.compile_model(model, device_name="CPU")
5044
output_layer = compiled_model.output(0)
@@ -56,7 +50,7 @@ def validate(
5650
preds = validator.postprocess(preds)
5751
validator.update_metrics(preds, batch)
5852
stats = validator.get_stats()
59-
return stats, validator.seen, validator.nt_per_class.sum()
53+
return stats, validator.seen, validator.metrics.nt_per_class.sum()
6054

6155

6256
def print_statistics(stats: dict[str, float], total_images: int, total_objects: int) -> None:
@@ -73,14 +67,15 @@ def print_statistics(stats: dict[str, float], total_images: int, total_objects:
7367

7468

7569
def prepare_validation(model: YOLO, args: Any) -> tuple[DetectionValidator, torch.utils.data.DataLoader]:
76-
validator: DetectionValidator = model.task_map[model.task]["validator"](args=args)
70+
validator = DetectionValidator(args=args)
7771
validator.data = check_det_dataset(args.data)
7872
validator.stride = 32
7973
validator.is_coco = True
8074
validator.class_map = coco80_to_coco91_class()
8175
validator.names = model.model.names
8276
validator.metrics.names = validator.names
83-
validator.nc = model.model.model[-1].nc
77+
validator.device = torch.device("cpu")
78+
validator.end2end = False
8479

8580
coco_data_path = DATASETS_DIR / "coco128"
8681
data_loader = validator.get_dataloader(coco_data_path.as_posix(), 1)
@@ -150,6 +145,7 @@ def main():
150145
model = YOLO(ROOT / f"{MODEL_NAME}.pt")
151146
args = get_cfg(cfg=DEFAULT_CFG)
152147
args.data = "coco128.yaml"
148+
args.plots = False
153149

154150
# Prepare validation dataset and helper
155151
validator, data_loader = prepare_validation(model, args)
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
ultralytics==8.3.22
1+
ultralytics==8.3.221
22
onnx==1.17.0
33
openvino==2025.3.0
44
torch==2.9.0

examples/post_training_quantization/openvino/yolov8_quantize_with_accuracy_control/main.py

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,6 @@
3333

3434
ROOT = Path(__file__).parent.resolve()
3535

36-
# WA: to set default value for dynamo parameter to False
37-
# TODO(AlexanderDokuchaev): remove after update ultralytics
38-
torch.onnx.export = partial(torch.onnx.export, dynamo=False)
39-
4036

4137
def validate(
4238
model: ov.Model, data_loader: torch.utils.data.DataLoader, validator: SegmentationValidator, num_samples: int = None
@@ -45,7 +41,7 @@ def validate(
4541
validator.jdict = []
4642
validator.stats = dict(tp_m=[], tp=[], conf=[], pred_cls=[], target_cls=[], target_img=[])
4743
validator.batch_i = 1
48-
validator.confusion_matrix = ConfusionMatrix(nc=validator.nc)
44+
validator.confusion_matrix = ConfusionMatrix(names=validator.names)
4945
model.reshape({0: [1, 3, -1, -1]})
5046
compiled_model = ov.compile_model(model, device_name="CPU")
5147
num_outputs = len(model.outputs)
@@ -64,7 +60,7 @@ def validate(
6460
preds = validator.postprocess(preds)
6561
validator.update_metrics(preds, batch)
6662
stats = validator.get_stats()
67-
return stats, validator.seen, validator.nt_per_class.sum()
63+
return stats, validator.seen, validator.metrics.nt_per_class.sum()
6864

6965

7066
def print_statistics(stats: dict[str, float], total_images: int, total_objects: int) -> None:
@@ -95,7 +91,7 @@ def print_statistics(stats: dict[str, float], total_images: int, total_objects:
9591

9692

9793
def prepare_validation(model: YOLO, args: Any) -> tuple[SegmentationValidator, torch.utils.data.DataLoader]:
98-
validator: SegmentationValidator = model.task_map[model.task]["validator"](args=args)
94+
validator = SegmentationValidator(args=args)
9995
validator.data = check_det_dataset(args.data)
10096
validator.stride = 32
10197
validator.is_coco = True
@@ -104,7 +100,8 @@ def prepare_validation(model: YOLO, args: Any) -> tuple[SegmentationValidator, t
104100
validator.metrics.names = validator.names
105101
validator.nc = model.model.model[-1].nc
106102
validator.process = ops.process_mask
107-
validator.plot_masks = []
103+
validator.device = torch.device("cpu")
104+
validator.end2end = False
108105

109106
coco_data_path = DATASETS_DIR / "coco128-seg"
110107
data_loader = validator.get_dataloader(coco_data_path.as_posix(), 1)
@@ -154,7 +151,7 @@ def validation_ac(
154151
validator.jdict = []
155152
validator.stats = dict(tp_m=[], tp=[], conf=[], pred_cls=[], target_cls=[], target_img=[])
156153
validator.batch_i = 1
157-
validator.confusion_matrix = ConfusionMatrix(nc=validator.nc)
154+
validator.confusion_matrix = ConfusionMatrix(names=validator.names)
158155
num_outputs = len(compiled_model.outputs)
159156

160157
for batch_i, batch in enumerate(validation_loader):
@@ -213,6 +210,7 @@ def main():
213210
args = get_cfg(cfg=DEFAULT_CFG)
214211
args.data = "coco128-seg.yaml"
215212
args.workers = 0
213+
args.plots = False
216214

217215
# Prepare validation dataset and helper
218216
validator, data_loader = prepare_validation(model, args)
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
ultralytics==8.3.22
1+
ultralytics==8.3.221
22
onnx==1.17.0
33
openvino==2025.3.0
44
torch==2.9.0

0 commit comments

Comments
 (0)