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 db37f16..9431ff2 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 025f69d..013520d 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 4eb6b5a..6372bcc 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)