mirror of
https://github.com/opencv/opencv.git
synced 2025-07-01 01:10:52 +08:00
Extra hyperparameters for Intel's Inference Engine layers
This commit is contained in:
parent
02d2cc58d7
commit
b5c54e447c
@ -78,9 +78,9 @@ endif()
|
|||||||
|
|
||||||
if(INF_ENGINE_TARGET)
|
if(INF_ENGINE_TARGET)
|
||||||
if(NOT INF_ENGINE_RELEASE)
|
if(NOT INF_ENGINE_RELEASE)
|
||||||
message(WARNING "InferenceEngine version have not been set, 2018R3 will be used by default. Set INF_ENGINE_RELEASE variable if you experience build errors.")
|
message(WARNING "InferenceEngine version have not been set, 2018R4 will be used by default. Set INF_ENGINE_RELEASE variable if you experience build errors.")
|
||||||
endif()
|
endif()
|
||||||
set(INF_ENGINE_RELEASE "2018030000" CACHE STRING "Force IE version, should be in form YYYYAABBCC (e.g. 2018R2.0.2 -> 2018020002)")
|
set(INF_ENGINE_RELEASE "2018040000" CACHE STRING "Force IE version, should be in form YYYYAABBCC (e.g. 2018R2.0.2 -> 2018020002)")
|
||||||
set_target_properties(${INF_ENGINE_TARGET} PROPERTIES
|
set_target_properties(${INF_ENGINE_TARGET} PROPERTIES
|
||||||
INTERFACE_COMPILE_DEFINITIONS "HAVE_INF_ENGINE=1;INF_ENGINE_RELEASE=${INF_ENGINE_RELEASE}"
|
INTERFACE_COMPILE_DEFINITIONS "HAVE_INF_ENGINE=1;INF_ENGINE_RELEASE=${INF_ENGINE_RELEASE}"
|
||||||
)
|
)
|
||||||
|
@ -1568,6 +1568,23 @@ struct Net::Impl
|
|||||||
|
|
||||||
if (!ieNode->net->isInitialized())
|
if (!ieNode->net->isInitialized())
|
||||||
{
|
{
|
||||||
|
#if INF_ENGINE_VER_MAJOR_GT(INF_ENGINE_RELEASE_2018R3)
|
||||||
|
// For networks which is built in runtime we need to specify a
|
||||||
|
// version of it's hyperparameters.
|
||||||
|
std::string versionTrigger = "<net name=\"TestInput\" version=\"3\" batch=\"1\">"
|
||||||
|
"<layers>"
|
||||||
|
"<layer name=\"data\" type=\"Input\" precision=\"FP32\" id=\"0\">"
|
||||||
|
"<output>"
|
||||||
|
"<port id=\"0\">"
|
||||||
|
"<dim>1</dim>"
|
||||||
|
"</port>"
|
||||||
|
"</output>"
|
||||||
|
"</layer>"
|
||||||
|
"</layers>"
|
||||||
|
"</net>";
|
||||||
|
InferenceEngine::CNNNetReader reader;
|
||||||
|
reader.ReadNetwork(versionTrigger.data(), versionTrigger.size());
|
||||||
|
#endif
|
||||||
ieNode->net->init(preferableTarget);
|
ieNode->net->init(preferableTarget);
|
||||||
ld.skip = false;
|
ld.skip = false;
|
||||||
}
|
}
|
||||||
|
@ -107,14 +107,21 @@ public:
|
|||||||
inputs[i].copyTo(outputs[i]);
|
inputs[i].copyTo(outputs[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual Ptr<BackendNode> initInfEngine(const std::vector<Ptr<BackendWrapper> >&) CV_OVERRIDE
|
virtual Ptr<BackendNode> initInfEngine(const std::vector<Ptr<BackendWrapper> >& inputs) CV_OVERRIDE
|
||||||
{
|
{
|
||||||
#ifdef HAVE_INF_ENGINE
|
#ifdef HAVE_INF_ENGINE
|
||||||
|
InferenceEngine::DataPtr input = infEngineDataNode(inputs[0]);
|
||||||
|
CV_Assert(!input->dims.empty());
|
||||||
|
|
||||||
InferenceEngine::LayerParams lp;
|
InferenceEngine::LayerParams lp;
|
||||||
lp.name = name;
|
lp.name = name;
|
||||||
lp.type = "Split";
|
lp.type = "Split";
|
||||||
lp.precision = InferenceEngine::Precision::FP32;
|
lp.precision = InferenceEngine::Precision::FP32;
|
||||||
std::shared_ptr<InferenceEngine::SplitLayer> ieLayer(new InferenceEngine::SplitLayer(lp));
|
std::shared_ptr<InferenceEngine::SplitLayer> ieLayer(new InferenceEngine::SplitLayer(lp));
|
||||||
|
#if INF_ENGINE_VER_MAJOR_GT(INF_ENGINE_RELEASE_2018R3)
|
||||||
|
ieLayer->params["axis"] = format("%d", input->dims.size() - 1);
|
||||||
|
ieLayer->params["out_sizes"] = format("%d", input->dims[0]);
|
||||||
|
#endif
|
||||||
return Ptr<BackendNode>(new InfEngineBackendNode(ieLayer));
|
return Ptr<BackendNode>(new InfEngineBackendNode(ieLayer));
|
||||||
#endif // HAVE_INF_ENGINE
|
#endif // HAVE_INF_ENGINE
|
||||||
return Ptr<BackendNode>();
|
return Ptr<BackendNode>();
|
||||||
|
@ -460,6 +460,12 @@ public:
|
|||||||
ieLayer->_pads_end.insert(InferenceEngine::Y_AXIS, pad.height);
|
ieLayer->_pads_end.insert(InferenceEngine::Y_AXIS, pad.height);
|
||||||
ieLayer->_dilation.insert(InferenceEngine::X_AXIS, dilation.width);
|
ieLayer->_dilation.insert(InferenceEngine::X_AXIS, dilation.width);
|
||||||
ieLayer->_dilation.insert(InferenceEngine::Y_AXIS, dilation.height);
|
ieLayer->_dilation.insert(InferenceEngine::Y_AXIS, dilation.height);
|
||||||
|
ieLayer->params["output"] = format("%d", outCn);
|
||||||
|
ieLayer->params["kernel"] = format("%d,%d,%d,%d", outCn, inpGroupCn, kernel.height, kernel.width);
|
||||||
|
ieLayer->params["pads_begin"] = format("%d,%d", pad.height, pad.width);
|
||||||
|
ieLayer->params["pads_end"] = format("%d,%d", pad.height, pad.width);
|
||||||
|
ieLayer->params["strides"] = format("%d,%d", stride.height, stride.width);
|
||||||
|
ieLayer->params["dilations"] = format("%d,%d", dilation.height, dilation.width);
|
||||||
#else
|
#else
|
||||||
ieLayer->_kernel_x = kernel.width;
|
ieLayer->_kernel_x = kernel.width;
|
||||||
ieLayer->_kernel_y = kernel.height;
|
ieLayer->_kernel_y = kernel.height;
|
||||||
|
@ -156,6 +156,14 @@ public:
|
|||||||
|
|
||||||
CV_Assert(crop_ranges.size() == 4);
|
CV_Assert(crop_ranges.size() == 4);
|
||||||
|
|
||||||
|
#if INF_ENGINE_VER_MAJOR_GT(INF_ENGINE_RELEASE_2018R3)
|
||||||
|
for (int i = 0; i < 4; ++i)
|
||||||
|
{
|
||||||
|
ieLayer->axis.push_back(i);
|
||||||
|
ieLayer->offset.push_back(crop_ranges[i].start);
|
||||||
|
ieLayer->dim.push_back(crop_ranges[i].end - crop_ranges[i].start);
|
||||||
|
}
|
||||||
|
#else
|
||||||
ieLayer->axis.push_back(0); // batch
|
ieLayer->axis.push_back(0); // batch
|
||||||
ieLayer->offset.push_back(crop_ranges[0].start);
|
ieLayer->offset.push_back(crop_ranges[0].start);
|
||||||
ieLayer->dim.push_back(crop_ranges[0].end - crop_ranges[0].start);
|
ieLayer->dim.push_back(crop_ranges[0].end - crop_ranges[0].start);
|
||||||
@ -171,7 +179,7 @@ public:
|
|||||||
ieLayer->axis.push_back(2); // width
|
ieLayer->axis.push_back(2); // width
|
||||||
ieLayer->offset.push_back(crop_ranges[3].start);
|
ieLayer->offset.push_back(crop_ranges[3].start);
|
||||||
ieLayer->dim.push_back(crop_ranges[3].end - crop_ranges[3].start);
|
ieLayer->dim.push_back(crop_ranges[3].end - crop_ranges[3].start);
|
||||||
|
#endif
|
||||||
return Ptr<BackendNode>(new InfEngineBackendNode(ieLayer));
|
return Ptr<BackendNode>(new InfEngineBackendNode(ieLayer));
|
||||||
#endif // HAVE_INF_ENGINE
|
#endif // HAVE_INF_ENGINE
|
||||||
return Ptr<BackendNode>();
|
return Ptr<BackendNode>();
|
||||||
|
@ -449,6 +449,9 @@ public:
|
|||||||
std::shared_ptr<InferenceEngine::FullyConnectedLayer> ieLayer(new InferenceEngine::FullyConnectedLayer(lp));
|
std::shared_ptr<InferenceEngine::FullyConnectedLayer> ieLayer(new InferenceEngine::FullyConnectedLayer(lp));
|
||||||
|
|
||||||
ieLayer->_out_num = blobs[0].size[0];
|
ieLayer->_out_num = blobs[0].size[0];
|
||||||
|
#if INF_ENGINE_VER_MAJOR_GT(INF_ENGINE_RELEASE_2018R3)
|
||||||
|
ieLayer->params["out-size"] = format("%d", blobs[0].size[0]);
|
||||||
|
#endif
|
||||||
ieLayer->_weights = wrapToInfEngineBlob(blobs[0], {(size_t)blobs[0].size[0], (size_t)blobs[0].size[1], 1, 1}, InferenceEngine::Layout::OIHW);
|
ieLayer->_weights = wrapToInfEngineBlob(blobs[0], {(size_t)blobs[0].size[0], (size_t)blobs[0].size[1], 1, 1}, InferenceEngine::Layout::OIHW);
|
||||||
if (blobs.size() > 1)
|
if (blobs.size() > 1)
|
||||||
ieLayer->_biases = wrapToInfEngineBlob(blobs[1], {(size_t)ieLayer->_out_num}, InferenceEngine::Layout::C);
|
ieLayer->_biases = wrapToInfEngineBlob(blobs[1], {(size_t)ieLayer->_out_num}, InferenceEngine::Layout::C);
|
||||||
|
@ -275,6 +275,10 @@ public:
|
|||||||
poolLayer->_padding.insert(InferenceEngine::Y_AXIS, pad_t);
|
poolLayer->_padding.insert(InferenceEngine::Y_AXIS, pad_t);
|
||||||
poolLayer->_pads_end.insert(InferenceEngine::X_AXIS, pad_r);
|
poolLayer->_pads_end.insert(InferenceEngine::X_AXIS, pad_r);
|
||||||
poolLayer->_pads_end.insert(InferenceEngine::Y_AXIS, pad_b);
|
poolLayer->_pads_end.insert(InferenceEngine::Y_AXIS, pad_b);
|
||||||
|
poolLayer->params["kernel"] = format("%d,%d", kernel.height, kernel.width);
|
||||||
|
poolLayer->params["pads_begin"] = format("%d,%d", pad_t, pad_l);
|
||||||
|
poolLayer->params["pads_end"] = format("%d,%d", pad_b, pad_r);
|
||||||
|
poolLayer->params["strides"] = format("%d,%d", stride.height, stride.width);
|
||||||
#else
|
#else
|
||||||
poolLayer->_kernel_x = kernel.width;
|
poolLayer->_kernel_x = kernel.width;
|
||||||
poolLayer->_kernel_y = kernel.height;
|
poolLayer->_kernel_y = kernel.height;
|
||||||
|
@ -51,9 +51,14 @@ public:
|
|||||||
|
|
||||||
virtual bool supportBackend(int backendId) CV_OVERRIDE
|
virtual bool supportBackend(int backendId) CV_OVERRIDE
|
||||||
{
|
{
|
||||||
|
#ifdef HAVE_INF_ENGINE
|
||||||
if (backendId == DNN_BACKEND_INFERENCE_ENGINE)
|
if (backendId == DNN_BACKEND_INFERENCE_ENGINE)
|
||||||
return interpolation == "nearest" && preferableTarget != DNN_TARGET_MYRIAD;
|
{
|
||||||
|
return (interpolation == "nearest" && preferableTarget != DNN_TARGET_MYRIAD) ||
|
||||||
|
(interpolation == "bilinear" && INF_ENGINE_VER_MAJOR_GE(INF_ENGINE_RELEASE_2018R4));
|
||||||
|
}
|
||||||
else
|
else
|
||||||
|
#endif
|
||||||
return backendId == DNN_BACKEND_OPENCV;
|
return backendId == DNN_BACKEND_OPENCV;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -160,15 +165,27 @@ public:
|
|||||||
#ifdef HAVE_INF_ENGINE
|
#ifdef HAVE_INF_ENGINE
|
||||||
InferenceEngine::LayerParams lp;
|
InferenceEngine::LayerParams lp;
|
||||||
lp.name = name;
|
lp.name = name;
|
||||||
lp.type = "Resample";
|
|
||||||
lp.precision = InferenceEngine::Precision::FP32;
|
lp.precision = InferenceEngine::Precision::FP32;
|
||||||
|
std::shared_ptr<InferenceEngine::CNNLayer> ieLayer;
|
||||||
std::shared_ptr<InferenceEngine::CNNLayer> ieLayer(new InferenceEngine::CNNLayer(lp));
|
if (interpolation == "nearest")
|
||||||
ieLayer->params["type"] = "caffe.ResampleParameter.NEAREST";
|
{
|
||||||
ieLayer->params["antialias"] = "0";
|
lp.type = "Resample";
|
||||||
|
ieLayer = std::shared_ptr<InferenceEngine::CNNLayer>(new InferenceEngine::CNNLayer(lp));
|
||||||
|
ieLayer->params["type"] = "caffe.ResampleParameter.NEAREST";
|
||||||
|
ieLayer->params["antialias"] = "0";
|
||||||
|
}
|
||||||
|
else if (interpolation == "bilinear")
|
||||||
|
{
|
||||||
|
lp.type = "Interp";
|
||||||
|
ieLayer = std::shared_ptr<InferenceEngine::CNNLayer>(new InferenceEngine::CNNLayer(lp));
|
||||||
|
ieLayer->params["pad_beg"] = "0";
|
||||||
|
ieLayer->params["pad_end"] = "0";
|
||||||
|
ieLayer->params["align_corners"] = "0";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
CV_Error(Error::StsNotImplemented, "Unsupported interpolation: " + interpolation);
|
||||||
ieLayer->params["width"] = cv::format("%d", outWidth);
|
ieLayer->params["width"] = cv::format("%d", outWidth);
|
||||||
ieLayer->params["height"] = cv::format("%d", outHeight);
|
ieLayer->params["height"] = cv::format("%d", outHeight);
|
||||||
|
|
||||||
return Ptr<BackendNode>(new InfEngineBackendNode(ieLayer));
|
return Ptr<BackendNode>(new InfEngineBackendNode(ieLayer));
|
||||||
#endif // HAVE_INF_ENGINE
|
#endif // HAVE_INF_ENGINE
|
||||||
return Ptr<BackendNode>();
|
return Ptr<BackendNode>();
|
||||||
|
@ -309,7 +309,7 @@ void InfEngineBackendNet::setTargetDevice(InferenceEngine::TargetDevice device)
|
|||||||
|
|
||||||
InferenceEngine::TargetDevice InfEngineBackendNet::getTargetDevice() noexcept
|
InferenceEngine::TargetDevice InfEngineBackendNet::getTargetDevice() noexcept
|
||||||
{
|
{
|
||||||
return targetDevice;
|
return const_cast<const InfEngineBackendNet*>(this)->getTargetDevice();
|
||||||
}
|
}
|
||||||
|
|
||||||
InferenceEngine::TargetDevice InfEngineBackendNet::getTargetDevice() const noexcept
|
InferenceEngine::TargetDevice InfEngineBackendNet::getTargetDevice() const noexcept
|
||||||
@ -387,6 +387,27 @@ void InfEngineBackendNet::init(int targetId)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
CV_Assert(!inputs.empty());
|
CV_Assert(!inputs.empty());
|
||||||
|
|
||||||
|
#if INF_ENGINE_VER_MAJOR_GT(INF_ENGINE_RELEASE_2018R3)
|
||||||
|
for (const auto& inp : inputs)
|
||||||
|
{
|
||||||
|
InferenceEngine::LayerParams lp;
|
||||||
|
lp.name = inp.first;
|
||||||
|
lp.type = "Input";
|
||||||
|
lp.precision = InferenceEngine::Precision::FP32;
|
||||||
|
std::shared_ptr<InferenceEngine::CNNLayer> inpLayer(new InferenceEngine::CNNLayer(lp));
|
||||||
|
|
||||||
|
layers.push_back(inpLayer);
|
||||||
|
|
||||||
|
InferenceEngine::DataPtr dataPtr = inp.second->getInputData();
|
||||||
|
// TODO: remove precision dependency (see setInput.normalization tests)
|
||||||
|
if (dataPtr->precision == InferenceEngine::Precision::FP32)
|
||||||
|
{
|
||||||
|
inpLayer->outData.assign(1, dataPtr);
|
||||||
|
dataPtr->creatorLayer = InferenceEngine::CNNLayerWeakPtr(inpLayer);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
if (outputs.empty())
|
if (outputs.empty())
|
||||||
|
@ -25,10 +25,11 @@
|
|||||||
#define INF_ENGINE_RELEASE_2018R1 2018010000
|
#define INF_ENGINE_RELEASE_2018R1 2018010000
|
||||||
#define INF_ENGINE_RELEASE_2018R2 2018020000
|
#define INF_ENGINE_RELEASE_2018R2 2018020000
|
||||||
#define INF_ENGINE_RELEASE_2018R3 2018030000
|
#define INF_ENGINE_RELEASE_2018R3 2018030000
|
||||||
|
#define INF_ENGINE_RELEASE_2018R4 2018040000
|
||||||
|
|
||||||
#ifndef INF_ENGINE_RELEASE
|
#ifndef INF_ENGINE_RELEASE
|
||||||
#warning("IE version have not been provided via command-line. Using 2018R2 by default")
|
#warning("IE version have not been provided via command-line. Using 2018R4 by default")
|
||||||
#define INF_ENGINE_RELEASE INF_ENGINE_RELEASE_2018R2
|
#define INF_ENGINE_RELEASE INF_ENGINE_RELEASE_2018R4
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define INF_ENGINE_VER_MAJOR_GT(ver) (((INF_ENGINE_RELEASE) / 10000) > ((ver) / 10000))
|
#define INF_ENGINE_VER_MAJOR_GT(ver) (((INF_ENGINE_RELEASE) / 10000) > ((ver) / 10000))
|
||||||
|
@ -174,7 +174,7 @@ TEST_P(DNNTestNetwork, MobileNet_SSD_v2_TensorFlow)
|
|||||||
throw SkipTestException("");
|
throw SkipTestException("");
|
||||||
Mat sample = imread(findDataFile("dnn/street.png", false));
|
Mat sample = imread(findDataFile("dnn/street.png", false));
|
||||||
Mat inp = blobFromImage(sample, 1.0f, Size(300, 300), Scalar(), false);
|
Mat inp = blobFromImage(sample, 1.0f, Size(300, 300), Scalar(), false);
|
||||||
float l1 = (target == DNN_TARGET_OPENCL_FP16 || target == DNN_TARGET_MYRIAD) ? 0.011 : 0.0;
|
float l1 = (target == DNN_TARGET_OPENCL_FP16 || target == DNN_TARGET_MYRIAD) ? 0.013 : 0.0;
|
||||||
float lInf = (target == DNN_TARGET_OPENCL_FP16 || target == DNN_TARGET_MYRIAD) ? 0.062 : 0.0;
|
float lInf = (target == DNN_TARGET_OPENCL_FP16 || target == DNN_TARGET_MYRIAD) ? 0.062 : 0.0;
|
||||||
processNet("dnn/ssd_mobilenet_v2_coco_2018_03_29.pb", "dnn/ssd_mobilenet_v2_coco_2018_03_29.pbtxt",
|
processNet("dnn/ssd_mobilenet_v2_coco_2018_03_29.pb", "dnn/ssd_mobilenet_v2_coco_2018_03_29.pbtxt",
|
||||||
inp, "detection_out", "", l1, lInf, 0.25);
|
inp, "detection_out", "", l1, lInf, 0.25);
|
||||||
@ -184,7 +184,7 @@ TEST_P(DNNTestNetwork, SSD_VGG16)
|
|||||||
{
|
{
|
||||||
if (backend == DNN_BACKEND_HALIDE && target == DNN_TARGET_CPU)
|
if (backend == DNN_BACKEND_HALIDE && target == DNN_TARGET_CPU)
|
||||||
throw SkipTestException("");
|
throw SkipTestException("");
|
||||||
double scoreThreshold = (target == DNN_TARGET_OPENCL_FP16 || target == DNN_TARGET_MYRIAD) ? 0.0252 : 0.0;
|
double scoreThreshold = (target == DNN_TARGET_OPENCL_FP16 || target == DNN_TARGET_MYRIAD) ? 0.0325 : 0.0;
|
||||||
Mat sample = imread(findDataFile("dnn/street.png", false));
|
Mat sample = imread(findDataFile("dnn/street.png", false));
|
||||||
Mat inp = blobFromImage(sample, 1.0f, Size(300, 300), Scalar(), false);
|
Mat inp = blobFromImage(sample, 1.0f, Size(300, 300), Scalar(), false);
|
||||||
processNet("dnn/VGG_ILSVRC2016_SSD_300x300_iter_440000.caffemodel",
|
processNet("dnn/VGG_ILSVRC2016_SSD_300x300_iter_440000.caffemodel",
|
||||||
|
@ -512,7 +512,11 @@ INSTANTIATE_TEST_CASE_P(Test_Caffe, opencv_face_detector,
|
|||||||
|
|
||||||
TEST_P(Test_Caffe_nets, FasterRCNN_vgg16)
|
TEST_P(Test_Caffe_nets, FasterRCNN_vgg16)
|
||||||
{
|
{
|
||||||
if (backend == DNN_BACKEND_INFERENCE_ENGINE && target == DNN_TARGET_MYRIAD)
|
if ((backend == DNN_BACKEND_INFERENCE_ENGINE && target == DNN_TARGET_MYRIAD)
|
||||||
|
#if defined(INF_ENGINE_RELEASE) && INF_ENGINE_RELEASE > 2018030000
|
||||||
|
|| (backend == DNN_BACKEND_INFERENCE_ENGINE && target == DNN_TARGET_OPENCL_FP16)
|
||||||
|
#endif
|
||||||
|
)
|
||||||
throw SkipTestException("");
|
throw SkipTestException("");
|
||||||
static Mat ref = (Mat_<float>(3, 7) << 0, 2, 0.949398, 99.2454, 210.141, 601.205, 462.849,
|
static Mat ref = (Mat_<float>(3, 7) << 0, 2, 0.949398, 99.2454, 210.141, 601.205, 462.849,
|
||||||
0, 7, 0.997022, 481.841, 92.3218, 722.685, 175.953,
|
0, 7, 0.997022, 481.841, 92.3218, 722.685, 175.953,
|
||||||
|
@ -306,6 +306,9 @@ TEST_P(Test_Darknet_nets, TinyYoloVoc)
|
|||||||
// batch size 1
|
// batch size 1
|
||||||
testDarknetModel(config_file, weights_file, ref.rowRange(0, 2), scoreDiff, iouDiff);
|
testDarknetModel(config_file, weights_file, ref.rowRange(0, 2), scoreDiff, iouDiff);
|
||||||
|
|
||||||
|
#if defined(INF_ENGINE_RELEASE) && INF_ENGINE_RELEASE == 2018040000
|
||||||
|
if (backend == DNN_BACKEND_INFERENCE_ENGINE && target != DNN_TARGET_MYRIAD)
|
||||||
|
#endif
|
||||||
// batch size 2
|
// batch size 2
|
||||||
testDarknetModel(config_file, weights_file, ref, scoreDiff, iouDiff);
|
testDarknetModel(config_file, weights_file, ref, scoreDiff, iouDiff);
|
||||||
}
|
}
|
||||||
|
@ -166,6 +166,11 @@ TEST_P(Deconvolution, Accuracy)
|
|||||||
if (backendId == DNN_BACKEND_INFERENCE_ENGINE && targetId == DNN_TARGET_CPU &&
|
if (backendId == DNN_BACKEND_INFERENCE_ENGINE && targetId == DNN_TARGET_CPU &&
|
||||||
dilation.width == 2 && dilation.height == 2)
|
dilation.width == 2 && dilation.height == 2)
|
||||||
throw SkipTestException("");
|
throw SkipTestException("");
|
||||||
|
#if defined(INF_ENGINE_RELEASE) && INF_ENGINE_RELEASE == 2018040000
|
||||||
|
if (backendId == DNN_BACKEND_INFERENCE_ENGINE && targetId == DNN_TARGET_CPU &&
|
||||||
|
hasBias && group != 1)
|
||||||
|
throw SkipTestException("Test is disabled for OpenVINO 2018R4");
|
||||||
|
#endif
|
||||||
|
|
||||||
int sz[] = {inChannels, outChannels / group, kernel.height, kernel.width};
|
int sz[] = {inChannels, outChannels / group, kernel.height, kernel.width};
|
||||||
Mat weights(4, &sz[0], CV_32F);
|
Mat weights(4, &sz[0], CV_32F);
|
||||||
|
@ -177,10 +177,20 @@ TEST_P(DNNTestOpenVINO, models)
|
|||||||
Target target = (dnn::Target)(int)get<0>(GetParam());
|
Target target = (dnn::Target)(int)get<0>(GetParam());
|
||||||
std::string modelName = get<1>(GetParam());
|
std::string modelName = get<1>(GetParam());
|
||||||
|
|
||||||
|
#ifdef INF_ENGINE_RELEASE
|
||||||
|
#if INF_ENGINE_RELEASE <= 2018030000
|
||||||
if (target == DNN_TARGET_MYRIAD && (modelName == "landmarks-regression-retail-0001" ||
|
if (target == DNN_TARGET_MYRIAD && (modelName == "landmarks-regression-retail-0001" ||
|
||||||
modelName == "semantic-segmentation-adas-0001" ||
|
modelName == "semantic-segmentation-adas-0001" ||
|
||||||
modelName == "face-reidentification-retail-0001"))
|
modelName == "face-reidentification-retail-0001"))
|
||||||
throw SkipTestException("");
|
throw SkipTestException("");
|
||||||
|
#elif INF_ENGINE_RELEASE == 2018040000
|
||||||
|
if (modelName == "single-image-super-resolution-0034" ||
|
||||||
|
(target == DNN_TARGET_MYRIAD && (modelName == "license-plate-recognition-barrier-0001" ||
|
||||||
|
modelName == "landmarks-regression-retail-0009" ||
|
||||||
|
modelName == "semantic-segmentation-adas-0001")))
|
||||||
|
throw SkipTestException("");
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
std::string precision = (target == DNN_TARGET_OPENCL_FP16 || target == DNN_TARGET_MYRIAD) ? "FP16" : "FP32";
|
std::string precision = (target == DNN_TARGET_OPENCL_FP16 || target == DNN_TARGET_MYRIAD) ? "FP16" : "FP32";
|
||||||
std::string prefix = utils::fs::join("intel_models",
|
std::string prefix = utils::fs::join("intel_models",
|
||||||
|
@ -137,6 +137,10 @@ TEST_P(Test_Caffe_layers, Convolution)
|
|||||||
|
|
||||||
TEST_P(Test_Caffe_layers, DeConvolution)
|
TEST_P(Test_Caffe_layers, DeConvolution)
|
||||||
{
|
{
|
||||||
|
#if defined(INF_ENGINE_RELEASE) && INF_ENGINE_RELEASE == 2018040000
|
||||||
|
if (backend == DNN_BACKEND_INFERENCE_ENGINE && target == DNN_TARGET_CPU)
|
||||||
|
throw SkipTestException("Test is disabled for OpenVINO 2018R4");
|
||||||
|
#endif
|
||||||
testLayerUsingCaffeModels("layer_deconvolution", true, false);
|
testLayerUsingCaffeModels("layer_deconvolution", true, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -473,7 +473,7 @@ TEST_P(Test_TensorFlow_nets, EAST_text_detection)
|
|||||||
double l1_geometry = default_l1, lInf_geometry = default_lInf;
|
double l1_geometry = default_l1, lInf_geometry = default_lInf;
|
||||||
if (target == DNN_TARGET_OPENCL_FP16)
|
if (target == DNN_TARGET_OPENCL_FP16)
|
||||||
{
|
{
|
||||||
lInf_scores = 0.11;
|
lInf_scores = backend == DNN_BACKEND_INFERENCE_ENGINE ? 0.16 : 0.11;
|
||||||
l1_geometry = 0.28; lInf_geometry = 5.94;
|
l1_geometry = 0.28; lInf_geometry = 5.94;
|
||||||
}
|
}
|
||||||
else if (target == DNN_TARGET_MYRIAD)
|
else if (target == DNN_TARGET_MYRIAD)
|
||||||
|
@ -136,6 +136,10 @@ TEST_P(Test_Torch_layers, run_reshape_change_batch_size)
|
|||||||
|
|
||||||
TEST_P(Test_Torch_layers, run_reshape)
|
TEST_P(Test_Torch_layers, run_reshape)
|
||||||
{
|
{
|
||||||
|
#if defined(INF_ENGINE_RELEASE) && INF_ENGINE_RELEASE == 2018040000
|
||||||
|
if (backend == DNN_BACKEND_INFERENCE_ENGINE && target == DNN_TARGET_MYRIAD)
|
||||||
|
throw SkipTestException("Test is disabled for OpenVINO 2018R4");
|
||||||
|
#endif
|
||||||
runTorchNet("net_reshape_batch");
|
runTorchNet("net_reshape_batch");
|
||||||
runTorchNet("net_reshape_channels", "", false, true);
|
runTorchNet("net_reshape_channels", "", false, true);
|
||||||
}
|
}
|
||||||
@ -168,6 +172,10 @@ TEST_P(Test_Torch_layers, run_depth_concat)
|
|||||||
|
|
||||||
TEST_P(Test_Torch_layers, run_deconv)
|
TEST_P(Test_Torch_layers, run_deconv)
|
||||||
{
|
{
|
||||||
|
#if defined(INF_ENGINE_RELEASE) && INF_ENGINE_RELEASE == 2018040000
|
||||||
|
if (backend == DNN_BACKEND_INFERENCE_ENGINE && target == DNN_TARGET_MYRIAD)
|
||||||
|
throw SkipTestException("Test is disabled for OpenVINO 2018R4");
|
||||||
|
#endif
|
||||||
runTorchNet("net_deconv");
|
runTorchNet("net_deconv");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user