mirror of
https://github.com/opencv/opencv.git
synced 2025-06-11 11:45:30 +08:00
Merge pull request #24072 from dkurt:openvino_cpu_tests
Remove legacy nGraph logic #24072 ### Pull Request Readiness Checklist TODO: - [x] Test with OpenVINO 2021.4 (tested locally) See details at https://github.com/opencv/opencv/wiki/How_to_contribute#making-a-good-pull-request - [x] I agree to contribute to the project under Apache 2 License. - [x] To the best of my knowledge, the proposed patch is not based on a code under GPL or another license that is incompatible with OpenCV - [x] The PR is proposed to the proper branch - [ ] There is a reference to the original bug report and related work - [x] There is accuracy test, performance test and test data in opencv_extra repository, if applicable Patch to opencv_extra has the same branch name. - [x] The feature is well documented and sample code can be built with the project CMake
This commit is contained in:
parent
195aad8e6a
commit
0245c0cd10
@ -446,66 +446,6 @@ void InfEngineNgraphNet::addOutput(const Ptr<InfEngineNgraphNode>& node)
|
||||
requestedOutputs.insert({name, node.get()});
|
||||
}
|
||||
|
||||
void InfEngineNgraphNet::setNodePtr(std::shared_ptr<ngraph::Node>* ptr) {
|
||||
all_nodes.emplace((*ptr)->get_friendly_name(), ptr);
|
||||
}
|
||||
|
||||
void InfEngineNgraphNet::release()
|
||||
{
|
||||
// FIXIT release should not be conditional, release ALL
|
||||
for (auto& node : components.back()) {
|
||||
#if INF_ENGINE_VER_MAJOR_GT(INF_ENGINE_RELEASE_2020_4)
|
||||
if (!(ngraph::op::is_parameter(node) || ngraph::op::is_output(node) || ngraph::op::is_constant(node)) ) {
|
||||
#else
|
||||
if (!(node->is_parameter() || node->is_output() || node->is_constant()) ) {
|
||||
#endif
|
||||
auto it = all_nodes.find(node->get_friendly_name());
|
||||
if (it != all_nodes.end()) {
|
||||
it->second->reset();
|
||||
all_nodes.erase(it);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void InfEngineNgraphNet::dfs(std::shared_ptr<ngraph::Node>& node,
|
||||
std::vector<std::shared_ptr<ngraph::Node>>& comp,
|
||||
std::unordered_map<std::string, bool>& used) {
|
||||
used[node->get_friendly_name()] = true;
|
||||
comp.push_back(node);
|
||||
auto inputs = node->get_users();
|
||||
for (size_t i = 0; i < node->get_input_size(); ++i) {
|
||||
inputs.push_back(node->input_value(i).get_node()->shared_from_this());
|
||||
}
|
||||
|
||||
for (auto& to : inputs) {
|
||||
if (!used[to->get_friendly_name()]) {
|
||||
dfs(to, comp, used);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int InfEngineNgraphNet::getNumComponents()
|
||||
{
|
||||
if (!components.empty()) {
|
||||
return components.size();
|
||||
}
|
||||
std::unordered_map<std::string, bool> used;
|
||||
auto inputs = ngraph_function->get_ordered_ops();
|
||||
for (auto& node : inputs) {
|
||||
used.emplace(node->get_friendly_name(), false);
|
||||
}
|
||||
|
||||
for (auto& node : inputs) {
|
||||
if (!used[node->get_friendly_name()]) {
|
||||
std::vector<std::shared_ptr<ngraph::Node>> current_comp;
|
||||
dfs(node, current_comp, used);
|
||||
components.push_back(current_comp);
|
||||
}
|
||||
}
|
||||
return components.size();
|
||||
}
|
||||
|
||||
void InfEngineNgraphNet::createNet(Target targetId) {
|
||||
if (!hasNetOwner)
|
||||
{
|
||||
@ -524,46 +464,7 @@ void InfEngineNgraphNet::createNet(Target targetId) {
|
||||
}
|
||||
CV_Assert_N(!inputs_vec.empty(), !outs.empty());
|
||||
ngraph_function = std::make_shared<ngraph::Function>(outs, inputs_vec);
|
||||
|
||||
int num_comp = getNumComponents();
|
||||
CV_LOG_DEBUG(NULL, "DNN/IE: number of subgraphs: " << num_comp);
|
||||
if (num_comp > 1) {
|
||||
for (int i = num_comp - 1; i >= 0; --i) {
|
||||
ngraph::ResultVector outputs;
|
||||
ngraph::ParameterVector inps;
|
||||
for (auto& node : components.back()) {
|
||||
#if INF_ENGINE_VER_MAJOR_GT(INF_ENGINE_RELEASE_2020_4)
|
||||
if (ngraph::op::is_parameter(node)) {
|
||||
#else
|
||||
if (node->is_parameter()) {
|
||||
#endif
|
||||
CV_LOG_DEBUG(NULL, "DNN/IE: subgraph[" << i << "]: +input[" << inps.size() << "] = '" << node->get_friendly_name() << "'");
|
||||
auto parameter = std::dynamic_pointer_cast<ngraph::op::Parameter>(node);
|
||||
inps.push_back(parameter);
|
||||
}
|
||||
#if INF_ENGINE_VER_MAJOR_GT(INF_ENGINE_RELEASE_2020_4)
|
||||
else if (ngraph::op::is_output(node)) {
|
||||
#else
|
||||
else if (node->is_output()) {
|
||||
#endif
|
||||
CV_LOG_DEBUG(NULL, "DNN/IE: subgraph[" << i << "]: +output[" << outputs.size() << "] = '" << node->get_friendly_name() << "'");
|
||||
auto result = std::dynamic_pointer_cast<ngraph::op::Result>(node);
|
||||
outputs.push_back(result);
|
||||
}
|
||||
}
|
||||
CV_LOG_DEBUG(NULL, "DNN/IE: subgraph[" << i << ": nodes=" << components.back().size() << " inputs=" << inps.size() << " outputs=" << outputs.size());
|
||||
isInit = false;
|
||||
CV_Assert_N(!inps.empty(), !outputs.empty());
|
||||
ngraph_function = std::make_shared<ngraph::Function>(outputs, inps);
|
||||
release();
|
||||
components.pop_back();
|
||||
init(targetId);
|
||||
}
|
||||
} else {
|
||||
release();
|
||||
components.clear();
|
||||
init(targetId);
|
||||
}
|
||||
init(targetId);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -50,22 +50,14 @@ public:
|
||||
void addBlobs(const std::vector<cv::Ptr<BackendWrapper> >& ptrs);
|
||||
|
||||
void createNet(Target targetId);
|
||||
void setNodePtr(std::shared_ptr<ngraph::Node>* ptr);
|
||||
|
||||
void reset();
|
||||
|
||||
//private:
|
||||
detail::NetImplBase& netImpl_;
|
||||
|
||||
void release();
|
||||
int getNumComponents();
|
||||
void dfs(std::shared_ptr<ngraph::Node>& node, std::vector<std::shared_ptr<ngraph::Node>>& comp,
|
||||
std::unordered_map<std::string, bool>& used);
|
||||
|
||||
ngraph::ParameterVector inputs_vec;
|
||||
std::shared_ptr<ngraph::Function> ngraph_function;
|
||||
std::vector<std::vector<std::shared_ptr<ngraph::Node>>> components;
|
||||
std::unordered_map<std::string, std::shared_ptr<ngraph::Node>* > all_nodes;
|
||||
|
||||
InferenceEngine::ExecutableNetwork netExec;
|
||||
#if INF_ENGINE_VER_MAJOR_GE(INF_ENGINE_RELEASE_2022_1)
|
||||
|
@ -549,7 +549,6 @@ void NetImplOpenVINO::initBackend(const std::vector<LayerPin>& blobsToKeep_)
|
||||
break;
|
||||
}
|
||||
}
|
||||
ieNode->net->setNodePtr(&ieNode->node);
|
||||
|
||||
net->addBlobs(ld.inputBlobsWrappers);
|
||||
net->addBlobs(ld.outputBlobsWrappers);
|
||||
|
@ -1046,7 +1046,7 @@ TEST_P(Test_Darknet_layers, region)
|
||||
applyTestTag(CV_TEST_TAG_DNN_SKIP_IE_NGRAPH, CV_TEST_TAG_DNN_SKIP_IE_VERSION);
|
||||
#endif
|
||||
|
||||
#if defined(INF_ENGINE_RELEASE) && INF_ENGINE_VER_MAJOR_EQ(2022010000)
|
||||
#if defined(INF_ENGINE_RELEASE) && INF_ENGINE_VER_MAJOR_GE(2022010000)
|
||||
// accuracy on CPU, OpenCL
|
||||
// Expected: (normL1) <= (l1), actual: 0.000358148 vs 1e-05
|
||||
// |ref| = 1.207319974899292
|
||||
|
@ -465,8 +465,8 @@ TEST_P(DNNTestHighLevelAPI, predict)
|
||||
const std::string modelPath = getOpenVINOModel(modelName, isFP16);
|
||||
ASSERT_FALSE(modelPath.empty()) << modelName;
|
||||
|
||||
std::string xmlPath = findDataFile(modelPath + ".xml");
|
||||
std::string binPath = findDataFile(modelPath + ".bin");
|
||||
std::string xmlPath = findDataFile(modelPath + ".xml", false);
|
||||
std::string binPath = findDataFile(modelPath + ".bin", false);
|
||||
|
||||
Model model(xmlPath, binPath);
|
||||
Mat frame = imread(findDataFile("dnn/googlenet_1.png"));
|
||||
|
@ -579,9 +579,7 @@ CASE(test_dropout_default_mask_ratio)
|
||||
CASE(test_dropout_default_old)
|
||||
// no filter
|
||||
CASE(test_dropout_default_ratio)
|
||||
#if SKIP_SET_1
|
||||
SKIP;
|
||||
#endif
|
||||
// no filter
|
||||
CASE(test_dropout_random_old)
|
||||
// no filter
|
||||
CASE(test_dynamicquantizelinear)
|
||||
|
Loading…
Reference in New Issue
Block a user