22
22
#include < opencv2/gapi/own/assert.hpp>
23
23
#include < opencv2/imgproc.hpp>
24
24
25
+ #include " openvino/openvino.hpp"
26
+
25
27
// clang-format off
26
28
GAPI_OCV_KERNEL (OCVTensorToImg, custom::GTensorToImg) {
27
29
static void run (const cv::Mat &in,
@@ -137,26 +139,26 @@ GAPI_OCV_KERNEL(OCVCalculateMaskRCNNBGMask, custom::GCalculateMaskRCNNBGMask) {
137
139
// clang-format on
138
140
139
141
custom::NNBGReplacer::NNBGReplacer (const std::string& model_path) {
140
- IE ::Core core;
141
- m_cnn_network = core.ReadNetwork (model_path);
142
- m_tag = m_cnn_network. getName ();
143
- m_inputs = m_cnn_network. getInputsInfo ();
144
- m_outputs = m_cnn_network. getOutputsInfo ();
142
+ ov ::Core core;
143
+ m_model = core.read_model (model_path);
144
+ m_tag = m_model-> get_name ();
145
+ m_inputs = m_model-> inputs ();
146
+ m_outputs = m_model-> outputs ();
145
147
}
146
148
147
149
custom::MaskRCNNBGReplacer::MaskRCNNBGReplacer (const std::string& model_path) : custom::NNBGReplacer(model_path) {
148
150
for (const auto & p : m_outputs) {
149
- const auto & layer_name = p.first ;
151
+ const auto & layer_name = p.get_node ()-> get_name () ;
150
152
if (layer_name.rfind (" TopK" ) != std::string::npos) {
151
153
continue ;
152
154
}
153
155
154
156
if (m_inputs.size () != 1 ) {
155
157
throw std::logic_error (" Supported only single input MaskRCNN models!" );
156
158
}
157
- m_input_name = m_inputs.begin ()->first ;
159
+ m_input_name = m_inputs.begin ()->get_node ()-> get_name () ;
158
160
159
- const auto dims_size = p.second -> getTensorDesc ().getDims ().size ();
161
+ const auto dims_size = p.get_tensor ().get_partial_shape ().size ();
160
162
if (dims_size == 1 ) {
161
163
m_labels_name = layer_name;
162
164
} else if (dims_size == 2 ) {
@@ -177,7 +179,14 @@ cv::GMat custom::MaskRCNNBGReplacer::replace(cv::GFrame in, cv::GMat bgr, const
177
179
auto boxes = outputs.at (m_boxes_name);
178
180
auto masks = outputs.at (m_masks_name);
179
181
180
- const auto & dims = m_inputs.at (m_input_name)->getTensorDesc ().getDims ();
182
+ std::map<std::string, ov::Output<ov::Node>> inputs_map;
183
+ for (auto in : m_inputs) {
184
+ std::cout << " in.get_node()->get_name() = " << in.get_node ()->get_name () << " \n " ;
185
+ inputs_map[in.get_node ()->get_name ()] = in;
186
+ }
187
+ std::cout << " m_input_name = " << m_input_name << " \n " ;
188
+
189
+ const auto & dims = inputs_map.at (m_input_name).get_tensor ().get_partial_shape ().get_max_shape ();
181
190
GAPI_Assert (dims.size () == 4u );
182
191
auto mask = custom::GCalculateMaskRCNNBGMask::on (in_size, cv::Size (dims[3 ], dims[2 ]), labels, boxes, masks);
183
192
auto mask3ch = cv::gapi::medianBlur (cv::gapi::merge3 (mask, mask, mask), 11 );
@@ -188,12 +197,12 @@ custom::BGMattingReplacer::BGMattingReplacer(const std::string& model_path) : NN
188
197
if (m_inputs.size () != 1 ) {
189
198
throw std::logic_error (" Supported only single input background matting models!" );
190
199
}
191
- m_input_name = m_inputs.begin ()->first ;
200
+ m_input_name = m_inputs.begin ()->get_node ()-> get_name () ;
192
201
193
202
if (m_outputs.size () != 1 ) {
194
203
throw std::logic_error (" Supported only single output background matting models!" );
195
204
}
196
- m_output_name = m_outputs.begin ()->first ;
205
+ m_output_name = m_outputs.begin ()->get_node ()-> get_name () ;
197
206
}
198
207
199
208
cv::GMat custom::BGMattingReplacer::replace (cv::GFrame in, cv::GMat bgr, const cv::Size & in_size, cv::GMat background) {
0 commit comments