add greater_or_equal and less_or_equal ONNX support
authorZihao Mu <zihaomu@outlook.com>
Sat, 8 Oct 2022 07:51:40 +0000 (15:51 +0800)
committerZihao Mu <zihaomu@outlook.com>
Sat, 8 Oct 2022 07:51:40 +0000 (15:51 +0800)
modules/dnn/src/layers/nary_eltwise_layers.cpp
modules/dnn/src/onnx/onnx_importer.cpp
modules/dnn/test/test_onnx_importer.cpp

index db37f16060699f2b4f5e955ed3b21bb08edc62a0..9431ff2b4be3c6a0d99e432103c979a228749b07 100644 (file)
@@ -51,11 +51,11 @@ public:
             op = OPERATION::EQUAL;
         else if (operation == "greater")
             op = OPERATION::GREATER;
-        else if (operation == "greater_equal")
+        else if (operation == "greaterorequal")
             op = OPERATION::GREATER_EQUAL;
         else if (operation == "less")
             op = OPERATION::LESS;
-        else if (operation == "less_equal")
+        else if (operation == "lessorequal")
             op = OPERATION::LESS_EQUAL;
         else if (operation == "pow")
             op = OPERATION::POW;
index 025f69da915b3baa416abf332ba6a6d4540dbfdf..013520d13da3f59e5683f980854c98c7eb777d0d 100644 (file)
@@ -2912,7 +2912,7 @@ void ONNXImporter::parseCumSum(LayerParams& layerParams, const opencv_onnx::Node
     addLayer(layerParams, node_proto);
 }
 
-// "Equal" "Greater" "Less" "Pow" "Add" "Sub" "Mul" "Div" "Sum" "Min" "Max"
+// "Equal" "Greater" "Less" "Pow" "Add" "Sub" "Mul" "Div" "Sum" "Min" "Max" "GreaterOrEqual" "LessOrEqual"
 void ONNXImporter::parseElementWise(LayerParams& layerParams, const opencv_onnx::NodeProto& node_proto_)
 {
     opencv_onnx::NodeProto node_proto = node_proto_;
@@ -3721,7 +3721,9 @@ void ONNXImporter::buildDispatchMap_ONNX_AI(int opset_version)
     dispatch["SpaceToDepth"] = dispatch["DepthToSpace"] = &ONNXImporter::parseDepthToSpace;
 
     dispatch["Equal"] = dispatch["Greater"] = dispatch["Less"] = dispatch["Pow"] = dispatch["Add"] =
-            dispatch["Sub"] = dispatch["Mul"] = dispatch["Div"] = &ONNXImporter::parseElementWise;
+            dispatch["Sub"] = dispatch["Mul"] = dispatch["Div"] = dispatch["GreaterOrEqual"] =
+            dispatch["LessOrEqual"] = &ONNXImporter::parseElementWise;
+
     dispatch["Sum"] = dispatch["Min"] = dispatch["Max"] = &ONNXImporter::parseElementWise;
     dispatch["Range"] = &ONNXImporter::parseRange;
 
index 4eb6b5a91b945eda98f4567cfd4899685fa9ef46..6372bcc65905e579c2bffd0e0c5b6bf88daa8e8b 100644 (file)
@@ -682,6 +682,16 @@ TEST_P(Test_ONNX_layers, Compare_LT)
     testONNXModels("less");
 }
 
+TEST_P(Test_ONNX_layers, Compare_GTorEQ)
+{
+    testONNXModels("greater_or_equal");
+}
+
+TEST_P(Test_ONNX_layers, Compare_LEorEQ)
+{
+    testONNXModels("less_or_equal");
+}
+
 TEST_P(Test_ONNX_layers, CompareSameDims_EQ)
 {
 #if defined(INF_ENGINE_RELEASE) && INF_ENGINE_VER_MAJOR_EQ(2022010000)