openvinotoolkit / training_extensions

Train, Evaluate, Optimize, Deploy Computer Vision Models via OpenVINO™

Home Page:https://openvinotoolkit.github.io/training_extensions/

Repository from Github https://github.comopenvinotoolkit/training_extensionsRepository from Github https://github.comopenvinotoolkit/training_extensions

OTX v2 tiled instance segmentation models fail to perform PTQ optimization

goodsong81 opened this issue · comments

Describe the bug

Traceback (most recent call last):
  File "/home/songkich/miniconda3/envs/otx-v2/bin/otx", line 8, in <module>
    sys.exit(main())
             ^^^^^^
  File "/mnt/sdb/workarea/otx/src/otx/cli/__init__.py", line 17, in main
    OTXCLI()
  File "/mnt/sdb/workarea/otx/src/otx/cli/cli.py", line 55, in __init__
    self.run()
  File "/mnt/sdb/workarea/otx/src/otx/cli/cli.py", line 574, in run
    fn(**fn_kwargs)
  File "/mnt/sdb/workarea/otx/src/otx/engine/engine.py", line 564, in optimize
    return model.optimize(
           ^^^^^^^^^^^^^^^
  File "/mnt/sdb/workarea/otx/src/otx/core/model/entity/base.py", line 452, in optimize
    compressed_model = nncf.quantize(  # type: ignore[attr-defined]
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/songkich/miniconda3/envs/otx-v2/lib/python3.11/site-packages/nncf/quantization/quantize_model.py", line 98, in quantize
    return quantize_impl(
           ^^^^^^^^^^^^^^
  File "/home/songkich/miniconda3/envs/otx-v2/lib/python3.11/site-packages/nncf/openvino/quantization/quantize_model.py", line 349, in quantize_impl
    return quantize_fn(
           ^^^^^^^^^^^^
  File "/home/songkich/miniconda3/envs/otx-v2/lib/python3.11/site-packages/nncf/telemetry/decorator.py", line 72, in wrapped
    retval = fn(*args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^
  File "/home/songkich/miniconda3/envs/otx-v2/lib/python3.11/site-packages/nncf/openvino/quantization/quantize_model.py", line 164, in native_quantize_impl
    quantized_model = quantization_algorithm.apply(model, graph, dataset=calibration_dataset)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/songkich/miniconda3/envs/otx-v2/lib/python3.11/site-packages/nncf/quantization/algorithms/post_training/algorithm.py", line 112, in apply
    return self._pipeline.run_from_step(model, dataset, graph, 0, step_index_to_statistics)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/songkich/miniconda3/envs/otx-v2/lib/python3.11/site-packages/nncf/quantization/algorithms/pipeline.py", line 161, in run_from_step
    step_statistics = collect_statistics(statistic_points, step_model, step_graph, dataset)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/songkich/miniconda3/envs/otx-v2/lib/python3.11/site-packages/nncf/quantization/algorithms/pipeline.py", line 49, in collect_statistics
    statistics_aggregator.collect_statistics(model, graph)
  File "/home/songkich/miniconda3/envs/otx-v2/lib/python3.11/site-packages/nncf/openvino/statistics/aggregator.py", line 34, in collect_statistics
    super().collect_statistics(model, graph)
  File "/home/songkich/miniconda3/envs/otx-v2/lib/python3.11/site-packages/nncf/common/tensor_statistics/aggregator.py", line 63, in collect_statistics
    for input_data in track(
  File "/home/songkich/miniconda3/envs/otx-v2/lib/python3.11/site-packages/nncf/common/logging/track_progress.py", line 145, in __iter__
    yield from self.progress.track(
  File "/home/songkich/miniconda3/envs/otx-v2/lib/python3.11/site-packages/rich/progress.py", line 1209, in track
    for value in sequence:
  File "/mnt/sdb/workarea/otx/src/otx/core/model/entity/base.py", line 466, in transform_fn
    resized_image = self.model.resize(image, (self.model.w, self.model.h))
                    ^^^^^^^^^^^^^^^^^
AttributeError: 'InstanceSegmentationTiler' object has no attribute 'resize'

Steps to Reproduce
On the latest releases/2.0.0 (16683f2)

otx train --config src/otx/recipe/instance_segmentation/maskrcnn_efficientnetb2b_tile.yaml --data_root tests/assets/car_tree_bug --work_dir /tmp/tile
otx export --work_dir /tmp/tile
otx optimize --work_dir /tmp/tile --checkpoint /tmp/tile/.latest/export/exported_model.xml

Environment:

  • OS:
  • Framework version:
  • Python version:
  • OpenVINO version:
  • CUDA/cuDNN version:
  • GPU model and memory:

Merged PR - #3262

@eugene123tw @harimkang Similar but different issue after the fix (#3262).

Traceback (most recent call last):
  File "/home/validation/actions-runner/_work/training_extensions/training_extensions/.tox/perf-benchmark/bin/otx", line 8, in <module>
    sys.exit(main())
  File "/home/validation/actions-runner/_work/training_extensions/training_extensions/.tox/perf-benchmark/lib/python3.10/site-packages/otx/cli/__init__.py", line 17, in main
    OTXCLI()
  File "/home/validation/actions-runner/_work/training_extensions/training_extensions/.tox/perf-benchmark/lib/python3.10/site-packages/otx/cli/cli.py", line 55, in __init__
    self.run()
  File "/home/validation/actions-runner/_work/training_extensions/training_extensions/.tox/perf-benchmark/lib/python3.10/site-packages/otx/cli/cli.py", line 574, in run
    fn(**fn_kwargs)
  File "/home/validation/actions-runner/_work/training_extensions/training_extensions/.tox/perf-benchmark/lib/python3.10/site-packages/otx/engine/engine.py", line 564, in optimize
    return model.optimize(
  File "/home/validation/actions-runner/_work/training_extensions/training_extensions/.tox/perf-benchmark/lib/python3.10/site-packages/otx/core/model/entity/base.py", line 453, in optimize
    compressed_model = nncf.quantize(  # type: ignore[attr-defined]
  File "/home/validation/actions-runner/_work/training_extensions/training_extensions/.tox/perf-benchmark/lib/python3.10/site-packages/nncf/quantization/quantize_model.py", line 98, in quantize
    return quantize_impl(
  File "/home/validation/actions-runner/_work/training_extensions/training_extensions/.tox/perf-benchmark/lib/python3.10/site-packages/nncf/openvino/quantization/quantize_model.py", line 349, in quantize_impl
    return quantize_fn(
  File "/home/validation/actions-runner/_work/training_extensions/training_extensions/.tox/perf-benchmark/lib/python3.10/site-packages/nncf/telemetry/decorator.py", line 72, in wrapped
    retval = fn(*args, **kwargs)
  File "/home/validation/actions-runner/_work/training_extensions/training_extensions/.tox/perf-benchmark/lib/python3.10/site-packages/nncf/openvino/quantization/quantize_model.py", line 164, in native_quantize_impl
    quantized_model = quantization_algorithm.apply(model, graph, dataset=calibration_dataset)
  File "/home/validation/actions-runner/_work/training_extensions/training_extensions/.tox/perf-benchmark/lib/python3.10/site-packages/nncf/quantization/algorithms/post_training/algorithm.py", line 112, in apply
    return self._pipeline.run_from_step(model, dataset, graph, 0, step_index_to_statistics)
  File "/home/validation/actions-runner/_work/training_extensions/training_extensions/.tox/perf-benchmark/lib/python3.10/site-packages/nncf/quantization/algorithms/pipeline.py", line 161, in run_from_step
    step_statistics = collect_statistics(statistic_points, step_model, step_graph, dataset)
  File "/home/validation/actions-runner/_work/training_extensions/training_extensions/.tox/perf-benchmark/lib/python3.10/site-packages/nncf/quantization/algorithms/pipeline.py", line 49, in collect_statistics
    statistics_aggregator.collect_statistics(model, graph)
  File "/home/validation/actions-runner/_work/training_extensions/training_extensions/.tox/perf-benchmark/lib/python3.10/site-packages/nncf/openvino/statistics/aggregator.py", line 34, in collect_statistics
    super().collect_statistics(model, graph)
  File "/home/validation/actions-runner/_work/training_extensions/training_extensions/.tox/perf-benchmark/lib/python3.10/site-packages/nncf/common/tensor_statistics/aggregator.py", line 63, in collect_statistics
    for input_data in track(
  File "/home/validation/actions-runner/_work/training_extensions/training_extensions/.tox/perf-benchmark/lib/python3.10/site-packages/nncf/common/logging/track_progress.py", line 145, in __iter__
    yield from self.progress.track(
  File "/home/validation/actions-runner/_work/training_extensions/training_extensions/.tox/perf-benchmark/lib/python3.10/site-packages/rich/progress.py", line 1209, in track
    for value in sequence:
  File "/home/validation/actions-runner/_work/training_extensions/training_extensions/.tox/perf-benchmark/lib/python3.10/site-packages/otx/core/model/entity/base.py", line 471, in transform_fn
    return self.model._change_layout(resized_image)  # noqa: SLF001
AttributeError: 'InstanceSegmentationTiler' object has no attribute '_change_layout'

https://github.com/openvinotoolkit/training_extensions/actions/runs/8551379495/job/23430269390

I forgot to change one line in releases/2.0.0: #3282

@goodsong81 #3282 merged, please check again. Thank you: