openvino icon indicating copy to clipboard operation
openvino copied to clipboard

[Good First Issue][TF FE]: Support AdjustHue operation for TensorFlow

Open rkazants opened this issue 10 months ago • 8 comments

Context

OpenVINO component responsible for support of TensorFlow models is called as TensorFlow Frontend (TF FE). TF FE converts a model represented in TensorFlow opset to a model in OpenVINO opset.

In order to infer TensorFlow models with AdjustHue operation by OpenVINO, TF FE needs to be extended with this operation support.

What needs to be done?

For AdjustHue operation support, you need to implement the corresponding loader into TF FE op directory and to register it into the dictionary of Loaders. One loader is responsible for conversion (or decomposition) of one type of TensorFlow operation.

Here is an example of loader implementation for TensorFlow Einsum operation:

OutputVector translate_einsum_op(const NodeContext& node) { 
     auto op_type = node.get_op_type(); 
     TENSORFLOW_OP_VALIDATION(node, op_type == "Einsum", "Internal error: incorrect usage of translate_einsum_op."); 
     auto equation = node.get_attribute<std::string>("equation"); 
  
     OutputVector inputs; 
     for (size_t input_ind = 0; input_ind < node.get_input_size(); ++input_ind) { 
         inputs.push_back(node.get_input(input_ind)); 
     } 
  
     auto einsum = make_shared<Einsum>(inputs, equation); 
     set_node_name(node.get_name(), einsum); 
     return {einsum}; 
 } 

In this example, translate_einsum_op converts TF Einsum into OV Einsum. NodeContext object passed into the loader packs all info about inputs and attributes of Einsum operation. The loader retrieves an attribute of the equation by using the NodeContext::get_attribute() method, prepares input vector, creates Einsum operation from OV opset and returns a vector of outputs.

Responsibility of a loader is to parse operation attributes, prepare inputs and express TF operation via OV operations sub-graph. Example for Einsum demonstrates the resulted sub-graph with one operation. In PR https://github.com/openvinotoolkit/openvino/pull/19007 you can see operation decomposition into multiple node sub-graph.

Once you are done with implementation of the translator, you need to implement the corresponding layer tests test_tf_AdjustHue.py and put it into layer_tests/tensorflow_tests directory. Example how to run some layer test:

export TEST_DEVICE=CPU
cd openvino/tests/layer_tests/tensorflow_tests
pytest test_tf_Shape.py

Example Pull Requests

  • https://github.com/openvinotoolkit/openvino/pull/19007

Resources

Contact points

  • @openvinotoolkit/openvino-tf-frontend-maintainers
  • @rkazants in GitHub
  • rkazants in Discord

Ticket

No response

rkazants avatar Apr 15 '24 12:04 rkazants

#WLB#+ .take

psmaxwell avatar Apr 15 '24 20:04 psmaxwell

Thank you for looking into this issue! Please let us know if you have any questions or require any help.

github-actions[bot] avatar Apr 15 '24 20:04 github-actions[bot]

Hi @psmaxwell, any update on this task?

rkazants avatar Apr 22 '24 04:04 rkazants

Hi @psmaxwell, I released this one ticket because you have another one. Please complete that one.

Best regards, Roman

rkazants avatar Apr 23 '24 07:04 rkazants

.take

oxkitsune avatar Apr 23 '24 13:04 oxkitsune

Thank you for looking into this issue! Please let us know if you have any questions or require any help.

github-actions[bot] avatar Apr 23 '24 13:04 github-actions[bot]

Hi @oxkitsune, any update on this task?

rkazants avatar May 02 '24 19:05 rkazants

Hi @oxkitsune, any update on this task?

Yes! It took me a bit to get my environment set up on macos, but I got it working.

Working on this issue now!

oxkitsune avatar May 02 '24 19:05 oxkitsune

Good reference how it was implemented for AdjustSaturation: https://github.com/openvinotoolkit/openvino/pull/24511

rkazants avatar May 29 '24 08:05 rkazants

.take

duydl avatar May 29 '24 11:05 duydl

Thank you for looking into this issue! Please let us know if you have any questions or require any help.

github-actions[bot] avatar May 29 '24 11:05 github-actions[bot]

@duydl, congrats with another one merge. Let us go back to MatrixDiag op.

Best regards, Roman

rkazants avatar Jun 02 '24 20:06 rkazants