openvinotoolkit / openvino

OpenVINO™ is an open-source toolkit for optimizing and deploying AI inference
https://docs.openvino.ai
Apache License 2.0
7.34k stars 2.29k forks source link

[Good First Issue]: Extend `PrePostProcessor` module with `Clamp` #24996

Open p-wysocki opened 5 months ago

p-wysocki commented 5 months ago

Context

Some models require preprocessing done to the data before inference. Usually it's done with packages like numpy or pillow for images, but it adds dependencies and additional steps to the inference pipeline, not to mention that these steps may not be properly performant.

PrePostProcessor module allows users to define such preprocessing steps (also postprocessing if you need it), and then embed it into the graph. It not only fixes the issues mentioned above, but also allows OpenVINO graph transformations and performance improvements to take place, increasing overall inference performance.

Lately there has been a request for a new PrePostProcessor operation - Clamp: https://github.com/openvinotoolkit/openvino/issues/23001. The issue contains information relevant to the task, it's recommended to read it.

What needs to be done?

  1. Modify https://github.com/openvinotoolkit/openvino/blob/master/src/core/src/preprocess/pre_post_process.cpp to include Clamp operation. It should most likely be placed in PreProcessSteps section at https://github.com/openvinotoolkit/openvino/blob/master/src/core/src/preprocess/pre_post_process.cpp#L257.
  2. Add the implementation to https://github.com/openvinotoolkit/openvino/blob/master/src/core/src/preprocess/preprocess_steps_impl.cpp

The implementation is preferred to use existing OpenVINO operators - in this case we have a perfect operator for that: https://docs.openvino.ai/2024/documentation/openvino-ir-format/operation-sets/operation-specs/activation/clamp-1.html

  1. Add tests to https://github.com/openvinotoolkit/openvino/blob/master/src/core/tests/preprocess.cpp

Example Pull Requests

-

Resources

Contact points

@p-wysocki

Ticket

N/A

amansharma612 commented 5 months ago

I would like to work on this issue. Could you please assign this to me?

mlukasze commented 5 months ago

The task is yours @amansharma612, have fun :)

mlukasze commented 4 months ago

any updates @amansharma612?

amansharma612 commented 4 months ago

Hey, @mlukasze been AFK for quite some time due to some work, thanks for reminding. I'll get working on this now and give you updates soon.

mlukasze commented 4 months ago

awesome, thank you!

Diya910 commented 3 months ago

If this task is not done yet, may I take the lead??

amansharma612 commented 3 months ago

Yes you can

Diya910 commented 3 months ago

I did some changes in the code and while i was testing , i downloaded openvino toolkit and cmake and build whole code using it. But I am not able to run the preprocess file. Could you help me with that as this is my first contribution to open source and I am eager to learn it.

Diya910 commented 3 months ago

Can you please check my pull request some of the cases are passed and some of them are failed. I don't know what these cases exactly mean.

mlukasze commented 3 months ago

this one, right? https://github.com/openvinotoolkit/openvino/pull/26240

Diya910 commented 3 months ago

yess

vatsalashanubhag commented 1 day ago

If this task is open, I would like to work on it.

mlukasze commented 1 day ago

it's yours now, @vatsalashanubhag :)