mirror of
https://github.com/opencv/opencv.git
synced 2026-07-31 08:13:04 +04:00
Merge pull request #19428 from alalek:dnn_drop_misbehaved_clamp
This commit is contained in:
@@ -72,7 +72,7 @@ public:
|
||||
{
|
||||
CV_Assert(inputs.size() > 0);
|
||||
outputs.resize(1, inputs[0]);
|
||||
int cAxis = clamp(axis, inputs[0]);
|
||||
int cAxis = normalize_axis(axis, inputs[0]);
|
||||
|
||||
int axisSum = 0;
|
||||
for (size_t i = 0; i < inputs.size(); i++)
|
||||
@@ -192,7 +192,7 @@ public:
|
||||
inps.getUMatVector(inputs);
|
||||
outs.getUMatVector(outputs);
|
||||
|
||||
int cAxis = clamp(axis, inputs[0].dims);
|
||||
int cAxis = normalize_axis(axis, inputs[0].dims);
|
||||
if (padding)
|
||||
return false;
|
||||
|
||||
@@ -246,7 +246,7 @@ public:
|
||||
inputs_arr.getMatVector(inputs);
|
||||
outputs_arr.getMatVector(outputs);
|
||||
|
||||
int cAxis = clamp(axis, inputs[0].dims);
|
||||
int cAxis = normalize_axis(axis, inputs[0].dims);
|
||||
Mat& outMat = outputs[0];
|
||||
|
||||
if (padding)
|
||||
@@ -306,7 +306,7 @@ public:
|
||||
InferenceEngine::DataPtr input = infEngineDataNode(inputs[0]);
|
||||
|
||||
InferenceEngine::Builder::ConcatLayer ieLayer(name);
|
||||
ieLayer.setAxis(clamp(axis, input->getDims().size()));
|
||||
ieLayer.setAxis(normalize_axis(axis, input->getDims().size()));
|
||||
ieLayer.setInputPorts(std::vector<InferenceEngine::Port>(inputs.size()));
|
||||
return Ptr<BackendNode>(new InfEngineBackendNode(ieLayer));
|
||||
}
|
||||
@@ -319,7 +319,7 @@ public:
|
||||
{
|
||||
InferenceEngine::DataPtr data = ngraphDataNode(inputs[0]);
|
||||
const int numDims = data->getDims().size();
|
||||
const int cAxis = clamp(axis, numDims);
|
||||
const int cAxis = normalize_axis(axis, numDims);
|
||||
std::vector<size_t> maxDims(numDims, 0);
|
||||
|
||||
CV_Assert(inputs.size() == nodes.size());
|
||||
|
||||
@@ -82,8 +82,8 @@ public:
|
||||
}
|
||||
|
||||
int numAxes = inputs[0].size();
|
||||
int startAxis = clamp(_startAxis, numAxes);
|
||||
int endAxis = clamp(_endAxis, numAxes);
|
||||
int startAxis = normalize_axis(_startAxis, numAxes);
|
||||
int endAxis = normalize_axis(_endAxis, numAxes);
|
||||
|
||||
CV_Assert(startAxis >= 0);
|
||||
CV_Assert(endAxis >= startAxis && endAxis < (int)numAxes);
|
||||
@@ -113,8 +113,8 @@ public:
|
||||
inputs_arr.getMatVector(inputs);
|
||||
|
||||
int numAxes = inputs[0].dims;
|
||||
_startAxis = clamp(_startAxis, numAxes);
|
||||
_endAxis = clamp(_endAxis, numAxes);
|
||||
_startAxis = normalize_axis(_startAxis, numAxes);
|
||||
_endAxis = normalize_axis(_endAxis, numAxes);
|
||||
}
|
||||
|
||||
#ifdef HAVE_OPENCL
|
||||
@@ -186,8 +186,8 @@ virtual Ptr<BackendNode> initNgraph(const std::vector<Ptr<BackendWrapper> >& inp
|
||||
std::vector<size_t> dims = ieInpNode->get_shape();
|
||||
|
||||
int numAxes = dims.size();
|
||||
int startAxis = clamp(_startAxis, numAxes);
|
||||
int endAxis = clamp(_endAxis, numAxes);
|
||||
int startAxis = normalize_axis(_startAxis, numAxes);
|
||||
int endAxis = normalize_axis(_endAxis, numAxes);
|
||||
|
||||
CV_Assert(startAxis >= 0);
|
||||
CV_Assert(endAxis >= startAxis && endAxis < numAxes);
|
||||
|
||||
@@ -129,7 +129,7 @@ public:
|
||||
CV_CheckEQ(blobs[0].dims, 2, "");
|
||||
numOutput = blobs[0].size[0];
|
||||
CV_Assert(!bias || (size_t)numOutput == blobs[1].total());
|
||||
cAxis = clamp(axis, inputs[0]);
|
||||
cAxis = normalize_axis(axis, inputs[0]);
|
||||
}
|
||||
|
||||
MatShape outShape(cAxis + 1);
|
||||
@@ -352,7 +352,7 @@ public:
|
||||
return true;
|
||||
}
|
||||
|
||||
int axisCan = clamp(axis, inputs[0].dims);
|
||||
int axisCan = normalize_axis(axis, inputs[0].dims);
|
||||
int numOutput = blobs[0].size[0];
|
||||
int innerSize = blobs[0].size[1];
|
||||
int outerSize = total(shape(inputs[0]), 0, axisCan);
|
||||
@@ -473,7 +473,7 @@ public:
|
||||
|
||||
if (!blobs.empty())
|
||||
{
|
||||
int axisCan = clamp(axis, input[0].dims);
|
||||
int axisCan = normalize_axis(axis, input[0].dims);
|
||||
int outerSize = input[0].total(0, axisCan);
|
||||
|
||||
for (size_t i = 0; i < input.size(); i++)
|
||||
|
||||
@@ -118,8 +118,8 @@ public:
|
||||
|
||||
const UMat& inp0 = inputs[0];
|
||||
UMat& buffer = internals[0];
|
||||
startAxis = clamp(startAxis, inp0.dims);
|
||||
endAxis = clamp(endAxis, inp0.dims);
|
||||
startAxis = normalize_axis(startAxis, inp0.dims);
|
||||
endAxis = normalize_axis(endAxis, inp0.dims);
|
||||
|
||||
size_t num = total(shape(inp0.size), 0, startAxis);
|
||||
size_t numPlanes = total(shape(inp0.size), startAxis, endAxis + 1);
|
||||
@@ -203,8 +203,8 @@ public:
|
||||
|
||||
const Mat& inp0 = inputs[0];
|
||||
Mat& buffer = internals[0];
|
||||
startAxis = clamp(startAxis, inp0.dims);
|
||||
endAxis = clamp(endAxis, inp0.dims);
|
||||
startAxis = normalize_axis(startAxis, inp0.dims);
|
||||
endAxis = normalize_axis(endAxis, inp0.dims);
|
||||
|
||||
const float* inpData = inp0.ptr<float>();
|
||||
float* outData = outputs[0].ptr<float>();
|
||||
|
||||
@@ -60,14 +60,7 @@ static void computeShapeByReshapeMask(const MatShape &srcShape,
|
||||
int srcShapeSize = (int)srcShape.size();
|
||||
int maskShapeSize = (int)maskShape.size();
|
||||
|
||||
if (srcRange == Range::all())
|
||||
srcRange = Range(0, srcShapeSize);
|
||||
else
|
||||
{
|
||||
int sz = srcRange.size();
|
||||
srcRange.start = clamp(srcRange.start, srcShapeSize);
|
||||
srcRange.end = srcRange.end == INT_MAX ? srcShapeSize : srcRange.start + sz;
|
||||
}
|
||||
srcRange = normalize_axis_range(srcRange, srcShapeSize);
|
||||
|
||||
bool explicitMask = !maskShape.empty(); // All mask values are positive.
|
||||
for (int i = 0, n = maskShape.size(); i < n && explicitMask; ++i)
|
||||
|
||||
@@ -240,7 +240,7 @@ public:
|
||||
numChannels = blobs[0].total();
|
||||
|
||||
std::vector<size_t> shape(ieInpNode0->get_shape().size(), 1);
|
||||
int cAxis = clamp(axis, shape.size());
|
||||
int cAxis = normalize_axis(axis, shape.size());
|
||||
shape[cAxis] = numChannels;
|
||||
|
||||
auto node = ieInpNode0;
|
||||
|
||||
@@ -146,7 +146,7 @@ public:
|
||||
for (int j = 0; j < sliceRanges[i].size(); ++j)
|
||||
{
|
||||
if (shapesInitialized || inpShape[j] > 0)
|
||||
outputs[i][j] = clamp(sliceRanges[i][j], inpShape[j]).size();
|
||||
outputs[i][j] = normalize_axis_range(sliceRanges[i][j], inpShape[j]).size();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -209,7 +209,7 @@ public:
|
||||
// Clamp.
|
||||
for (int j = 0; j < finalSliceRanges[i].size(); ++j)
|
||||
{
|
||||
finalSliceRanges[i][j] = clamp(finalSliceRanges[i][j], inpShape[j]);
|
||||
finalSliceRanges[i][j] = normalize_axis_range(finalSliceRanges[i][j], inpShape[j]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -601,7 +601,7 @@ public:
|
||||
CV_Assert(inputs.size() == 2);
|
||||
|
||||
MatShape dstShape = inputs[0];
|
||||
int start = clamp(axis, dstShape);
|
||||
int start = normalize_axis(axis, dstShape);
|
||||
for (int i = start; i < dstShape.size(); i++)
|
||||
{
|
||||
dstShape[i] = inputs[1][i];
|
||||
@@ -620,7 +620,7 @@ public:
|
||||
const Mat &inpSzBlob = inputs[1];
|
||||
|
||||
int dims = inpBlob.dims;
|
||||
int start_axis = clamp(axis, dims);
|
||||
int start_axis = normalize_axis(axis, dims);
|
||||
|
||||
std::vector<int> offset_final(dims, 0);
|
||||
if (offset.size() == 1)
|
||||
|
||||
@@ -82,7 +82,7 @@ public:
|
||||
{
|
||||
bool inplace = Layer::getMemoryShapes(inputs, requiredOutputs, outputs, internals);
|
||||
MatShape shape = inputs[0];
|
||||
int cAxis = clamp(axisRaw, shape.size());
|
||||
int cAxis = normalize_axis(axisRaw, shape.size());
|
||||
shape[cAxis] = 1;
|
||||
internals.assign(1, shape);
|
||||
return inplace;
|
||||
@@ -115,7 +115,7 @@ public:
|
||||
|
||||
UMat& src = inputs[0];
|
||||
UMat& dstMat = outputs[0];
|
||||
int axis = clamp(axisRaw, src.dims);
|
||||
int axis = normalize_axis(axisRaw, src.dims);
|
||||
|
||||
if (softmaxOp.empty())
|
||||
{
|
||||
@@ -207,7 +207,7 @@ public:
|
||||
const Mat &src = inputs[0];
|
||||
Mat &dst = outputs[0];
|
||||
|
||||
int axis = clamp(axisRaw, src.dims);
|
||||
int axis = normalize_axis(axisRaw, src.dims);
|
||||
size_t outerSize = src.total(0, axis), channels = src.size[axis],
|
||||
innerSize = src.total(axis + 1);
|
||||
|
||||
@@ -318,7 +318,7 @@ public:
|
||||
InferenceEngine::DataPtr input = infEngineDataNode(inputs[0]);
|
||||
|
||||
InferenceEngine::Builder::SoftMaxLayer ieLayer(name);
|
||||
ieLayer.setAxis(clamp(axisRaw, input->getDims().size()));
|
||||
ieLayer.setAxis(normalize_axis(axisRaw, input->getDims().size()));
|
||||
|
||||
return Ptr<BackendNode>(new InfEngineBackendNode(ieLayer));
|
||||
}
|
||||
@@ -329,7 +329,7 @@ public:
|
||||
const std::vector<Ptr<BackendNode> >& nodes) CV_OVERRIDE
|
||||
{
|
||||
auto& ieInpNode = nodes[0].dynamicCast<InfEngineNgraphNode>()->node;
|
||||
int axis = clamp(axisRaw, ieInpNode->get_shape().size());
|
||||
int axis = normalize_axis(axisRaw, ieInpNode->get_shape().size());
|
||||
auto softmax = std::make_shared<ngraph::op::v1::Softmax>(ieInpNode, axis);
|
||||
if (logSoftMax)
|
||||
return Ptr<BackendNode>(new InfEngineNgraphNode(std::make_shared<ngraph::op::v0::Log>(softmax)));
|
||||
|
||||
Reference in New Issue
Block a user