mirror of
https://github.com/opencv/opencv.git
synced 2026-07-29 23:33:05 +04:00
Merge remote-tracking branch 'upstream/3.4' into merge-3.4
This commit is contained in:
@@ -79,7 +79,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++)
|
||||
@@ -201,7 +201,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;
|
||||
|
||||
@@ -255,7 +255,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)
|
||||
@@ -296,7 +296,7 @@ public:
|
||||
auto context = reinterpret_cast<csl::CSLContext*>(context_);
|
||||
|
||||
auto input_wrapper = inputs[0].dynamicCast<CUDABackendWrapper>();
|
||||
auto concat_axis = clamp(axis, input_wrapper->getRank());
|
||||
auto concat_axis = normalize_axis(axis, input_wrapper->getRank());
|
||||
return make_cuda_node<cuda4dnn::ConcatOp>(preferableTarget, std::move(context->stream), concat_axis, padding);
|
||||
}
|
||||
#endif
|
||||
@@ -305,7 +305,7 @@ public:
|
||||
{
|
||||
#ifdef HAVE_VULKAN
|
||||
vkcom::Tensor in = VkComTensor(input[0]);
|
||||
int cAxis = clamp(axis, in.dimNum());
|
||||
int cAxis = normalize_axis(axis, in.dimNum());
|
||||
std::shared_ptr<vkcom::OpBase> op(new vkcom::OpConcat(cAxis));
|
||||
return Ptr<BackendNode>(new VkComBackendNode(input, op));
|
||||
#endif // HAVE_VULKAN
|
||||
@@ -341,7 +341,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));
|
||||
}
|
||||
@@ -354,7 +354,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());
|
||||
|
||||
@@ -89,8 +89,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);
|
||||
@@ -120,8 +120,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
|
||||
@@ -195,8 +195,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);
|
||||
|
||||
@@ -132,7 +132,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);
|
||||
@@ -356,7 +356,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);
|
||||
@@ -477,7 +477,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++)
|
||||
@@ -525,7 +525,7 @@ public:
|
||||
|
||||
auto input_wrapper = inputs[0].dynamicCast<CUDABackendWrapper>();
|
||||
|
||||
auto flatten_start_axis = clamp(axis, input_wrapper->getRank());
|
||||
auto flatten_start_axis = normalize_axis(axis, input_wrapper->getRank());
|
||||
|
||||
auto biasMat_ = bias ? biasMat : Mat();
|
||||
return make_cuda_node<cuda4dnn::InnerProductOp>(preferableTarget, std::move(context->stream), std::move(context->cublas_handle), flatten_start_axis, weightsMat, biasMat_);
|
||||
|
||||
@@ -126,8 +126,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);
|
||||
@@ -211,8 +211,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>();
|
||||
@@ -378,8 +378,8 @@ public:
|
||||
|
||||
NormalizeConfiguration<float> config;
|
||||
config.input_shape.assign(std::begin(input_shape), std::end(input_shape));
|
||||
config.axis_start = clamp(startAxis, input_shape.size());
|
||||
config.axis_end = clamp(endAxis, input_shape.size()) + 1; /* +1 because NormalizeOp follows [start, end) convention */
|
||||
config.axis_start = normalize_axis(startAxis, input_shape.size());
|
||||
config.axis_end = normalize_axis(endAxis, input_shape.size()) + 1; /* +1 because NormalizeOp follows [start, end) convention */
|
||||
config.norm = pnorm;
|
||||
config.eps = epsilon;
|
||||
|
||||
|
||||
@@ -66,14 +66,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)
|
||||
|
||||
@@ -305,7 +305,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;
|
||||
|
||||
@@ -153,7 +153,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();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -216,7 +216,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]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -634,7 +634,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];
|
||||
@@ -653,7 +653,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)
|
||||
|
||||
@@ -89,7 +89,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;
|
||||
@@ -124,7 +124,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())
|
||||
{
|
||||
@@ -216,7 +216,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);
|
||||
|
||||
@@ -306,7 +306,7 @@ public:
|
||||
auto context = reinterpret_cast<csl::CSLContext*>(context_);
|
||||
|
||||
auto input_wrapper = inputs[0].dynamicCast<CUDABackendWrapper>();
|
||||
auto channel_axis = clamp(axisRaw, input_wrapper->getRank());
|
||||
auto channel_axis = normalize_axis(axisRaw, input_wrapper->getRank());
|
||||
return make_cuda_node<cuda4dnn::SoftmaxOp>(preferableTarget, std::move(context->cudnn_handle), channel_axis, logSoftMax);
|
||||
}
|
||||
#endif
|
||||
@@ -315,7 +315,7 @@ public:
|
||||
{
|
||||
#ifdef HAVE_VULKAN
|
||||
vkcom::Tensor in = VkComTensor(inputs[0]);
|
||||
int cAxis = clamp(axisRaw, in.dimNum());
|
||||
int cAxis = normalize_axis(axisRaw, in.dimNum());
|
||||
std::shared_ptr<vkcom::OpBase> op(new vkcom::OpSoftmax(cAxis, logSoftMax));
|
||||
return Ptr<BackendNode>(new VkComBackendNode(inputs, op));
|
||||
#endif // HAVE_VULKAN
|
||||
@@ -354,7 +354,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));
|
||||
}
|
||||
@@ -365,7 +365,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