mirror of
https://github.com/opencv/opencv.git
synced 2026-07-30 07:43:03 +04:00
Merge branch 4.x
This commit is contained in:
@@ -258,7 +258,6 @@ CV__DNN_INLINE_NS_BEGIN
|
||||
static Ptr<BaseConvolutionLayer> create(const LayerParams& params);
|
||||
bool fusedActivation = false;
|
||||
bool fusedAdd = false;
|
||||
bool isConv2D = false; // Should be deleted after fastconv branch support Conv1D and Conv3D.
|
||||
bool useWinograd = false; // Flag whether to use Winograd to speed up 3x3 convolution.
|
||||
};
|
||||
|
||||
@@ -346,18 +345,9 @@ CV__DNN_INLINE_NS_BEGIN
|
||||
class CV_EXPORTS ReduceLayer : public Layer
|
||||
{
|
||||
public:
|
||||
int reduceType;
|
||||
// reduceDims contains the dimensions that need to be reduced, targetDims is the target output dimension.
|
||||
std::vector<size_t> reduceDims, targetDims;
|
||||
static Ptr<ReduceLayer> create(const LayerParams& params);
|
||||
};
|
||||
|
||||
class CV_EXPORTS ReduceLayerInt8 : public ReduceLayer
|
||||
{
|
||||
public:
|
||||
static Ptr<ReduceLayerInt8> create(const LayerParams& params);
|
||||
};
|
||||
|
||||
class CV_EXPORTS SoftmaxLayer : public Layer
|
||||
{
|
||||
public:
|
||||
@@ -374,6 +364,10 @@ CV__DNN_INLINE_NS_BEGIN
|
||||
static Ptr<SoftmaxLayerInt8> create(const LayerParams& params);
|
||||
};
|
||||
|
||||
/**
|
||||
* `InnerProduct`, `MatMul` and `Gemm` operations are all implemented by Fully Connected Layer.
|
||||
* Parameter `is_matmul` is used to distinguish `MatMul` and `Gemm` from `InnerProduct`.
|
||||
*/
|
||||
class CV_EXPORTS InnerProductLayer : public Layer
|
||||
{
|
||||
public:
|
||||
@@ -802,6 +796,18 @@ CV__DNN_INLINE_NS_BEGIN
|
||||
static Ptr<SeluLayer> create(const LayerParams ¶ms);
|
||||
};
|
||||
|
||||
class CV_EXPORTS GeluLayer : public ActivationLayer
|
||||
{
|
||||
public:
|
||||
static Ptr<GeluLayer> create(const LayerParams ¶ms);
|
||||
};
|
||||
|
||||
class CV_EXPORTS GeluApproximationLayer : public ActivationLayer
|
||||
{
|
||||
public:
|
||||
static Ptr<GeluApproximationLayer> create(const LayerParams ¶ms);
|
||||
};
|
||||
|
||||
class CV_EXPORTS ThresholdedReluLayer : public ActivationLayer
|
||||
{
|
||||
public:
|
||||
|
||||
@@ -106,6 +106,22 @@ CV__DNN_INLINE_NS_BEGIN
|
||||
DNN_TARGET_CUDA_FP16,
|
||||
DNN_TARGET_HDDL,
|
||||
DNN_TARGET_NPU,
|
||||
DNN_TARGET_CPU_FP16, // Only the ARM platform is supported. Low precision computing, accelerate model inference.
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief Enum of data layout for model inference.
|
||||
* @see Image2BlobParams
|
||||
*/
|
||||
enum DataLayout
|
||||
{
|
||||
DNN_LAYOUT_UNKNOWN = 0,
|
||||
DNN_LAYOUT_ND = 1, //!< OpenCV data layout for 2D data.
|
||||
DNN_LAYOUT_NCHW = 2, //!< OpenCV data layout for 4D data.
|
||||
DNN_LAYOUT_NCDHW = 3, //!< OpenCV data layout for 5D data.
|
||||
DNN_LAYOUT_NHWC = 4, //!< Tensorflow-like data layout for 4D data.
|
||||
DNN_LAYOUT_NDHWC = 5, //!< Tensorflow-like data layout for 5D data.
|
||||
DNN_LAYOUT_PLANAR = 6, //!< Tensorflow-like data layout, it should only be used at tf or tflite model parsing.
|
||||
};
|
||||
|
||||
CV_EXPORTS std::vector< std::pair<Backend, Target> > getAvailableBackends();
|
||||
@@ -314,7 +330,7 @@ CV__DNN_INLINE_NS_BEGIN
|
||||
|
||||
virtual Ptr<BackendNode> initNgraph(const std::vector<Ptr<BackendWrapper> > &inputs, const std::vector<Ptr<BackendNode> >& nodes);
|
||||
|
||||
virtual Ptr<BackendNode> initVkCom(const std::vector<Ptr<BackendWrapper> > &inputs);
|
||||
virtual Ptr<BackendNode> initVkCom(const std::vector<Ptr<BackendWrapper> > &inputs, std::vector<Ptr<BackendWrapper> > &outputs);
|
||||
|
||||
virtual Ptr<BackendNode> initWebnn(const std::vector<Ptr<BackendWrapper> > &inputs, const std::vector<Ptr<BackendNode> >& nodes);
|
||||
|
||||
@@ -347,11 +363,13 @@ CV__DNN_INLINE_NS_BEGIN
|
||||
/**
|
||||
* @brief Returns a CANN backend node
|
||||
*
|
||||
* @param inputsWrapper layer inputs
|
||||
* @param index layer id for op name
|
||||
* @param nodes inputs of this node
|
||||
* @param inputs input tensors of CANN operator
|
||||
* @param outputs output tensors of CANN operator
|
||||
* @param nodes nodes of input tensors
|
||||
*/
|
||||
virtual Ptr<BackendNode> initCann(const std::vector<Ptr<BackendWrapper> > &inputsWrapper, const int index, const std::vector<Ptr<BackendNode> >& nodes);
|
||||
virtual Ptr<BackendNode> initCann(const std::vector<Ptr<BackendWrapper> > &inputs,
|
||||
const std::vector<Ptr<BackendWrapper> > &outputs,
|
||||
const std::vector<Ptr<BackendNode> >& nodes);
|
||||
|
||||
/**
|
||||
* @brief Automatic Halide scheduling based on layer hyper-parameters.
|
||||
@@ -953,6 +971,26 @@ CV__DNN_INLINE_NS_BEGIN
|
||||
CV_EXPORTS Net readNetFromTensorflow(const char *bufferModel, size_t lenModel,
|
||||
const char *bufferConfig = NULL, size_t lenConfig = 0);
|
||||
|
||||
/** @brief Reads a network model stored in <a href="https://www.tensorflow.org/lite">TFLite</a> framework's format.
|
||||
* @param model path to the .tflite file with binary flatbuffers description of the network architecture
|
||||
* @returns Net object.
|
||||
*/
|
||||
CV_EXPORTS_W Net readNetFromTFLite(const String &model);
|
||||
|
||||
/** @brief Reads a network model stored in <a href="https://www.tensorflow.org/lite">TFLite</a> framework's format.
|
||||
* @param bufferModel buffer containing the content of the tflite file
|
||||
* @returns Net object.
|
||||
*/
|
||||
CV_EXPORTS_W Net readNetFromTFLite(const std::vector<uchar>& bufferModel);
|
||||
|
||||
/** @brief Reads a network model stored in <a href="https://www.tensorflow.org/lite">TFLite</a> framework's format.
|
||||
* @details This is an overloaded member function, provided for convenience.
|
||||
* It differs from the above function only in what argument(s) it accepts.
|
||||
* @param bufferModel buffer containing the content of the tflite file
|
||||
* @param lenModel length of bufferModel
|
||||
*/
|
||||
CV_EXPORTS Net readNetFromTFLite(const char *bufferModel, size_t lenModel);
|
||||
|
||||
/**
|
||||
* @brief Reads a network model stored in <a href="http://torch.ch">Torch7</a> framework's format.
|
||||
* @param model path to the file, dumped from Torch by using torch.save() function.
|
||||
@@ -1089,10 +1127,10 @@ CV__DNN_INLINE_NS_BEGIN
|
||||
/** @brief Creates 4-dimensional blob from image. Optionally resizes and crops @p image from center,
|
||||
* subtract @p mean values, scales values by @p scalefactor, swap Blue and Red channels.
|
||||
* @param image input image (with 1-, 3- or 4-channels).
|
||||
* @param scalefactor multiplier for @p images values.
|
||||
* @param size spatial size for output image
|
||||
* @param mean scalar with mean values which are subtracted from channels. Values are intended
|
||||
* to be in (mean-R, mean-G, mean-B) order if @p image has BGR ordering and @p swapRB is true.
|
||||
* @param scalefactor multiplier for @p image values.
|
||||
* @param swapRB flag which indicates that swap first and last channels
|
||||
* in 3-channel image is necessary.
|
||||
* @param crop flag which indicates whether image will be cropped after resize or not
|
||||
@@ -1101,6 +1139,9 @@ CV__DNN_INLINE_NS_BEGIN
|
||||
* dimension in @p size and another one is equal or larger. Then, crop from the center is performed.
|
||||
* If @p crop is false, direct resize without cropping and preserving aspect ratio is performed.
|
||||
* @returns 4-dimensional Mat with NCHW dimensions order.
|
||||
*
|
||||
* @note
|
||||
* The order and usage of `scalefactor` and `mean` are (input - mean) * scalefactor.
|
||||
*/
|
||||
CV_EXPORTS_W Mat blobFromImage(InputArray image, double scalefactor=1.0, const Size& size = Size(),
|
||||
const Scalar& mean = Scalar(), bool swapRB=false, bool crop=false,
|
||||
@@ -1131,6 +1172,9 @@ CV__DNN_INLINE_NS_BEGIN
|
||||
* dimension in @p size and another one is equal or larger. Then, crop from the center is performed.
|
||||
* If @p crop is false, direct resize without cropping and preserving aspect ratio is performed.
|
||||
* @returns 4-dimensional Mat with NCHW dimensions order.
|
||||
*
|
||||
* @note
|
||||
* The order and usage of `scalefactor` and `mean` are (input - mean) * scalefactor.
|
||||
*/
|
||||
CV_EXPORTS_W Mat blobFromImages(InputArrayOfArrays images, double scalefactor=1.0,
|
||||
Size size = Size(), const Scalar& mean = Scalar(), bool swapRB=false, bool crop=false,
|
||||
@@ -1145,6 +1189,74 @@ CV__DNN_INLINE_NS_BEGIN
|
||||
const Scalar& mean = Scalar(), bool swapRB=false, bool crop=false,
|
||||
int ddepth=CV_32F);
|
||||
|
||||
/**
|
||||
* @brief Enum of image processing mode.
|
||||
* To facilitate the specialization pre-processing requirements of the dnn model.
|
||||
* For example, the `letter box` often used in the Yolo series of models.
|
||||
* @see Image2BlobParams
|
||||
*/
|
||||
enum ImagePaddingMode
|
||||
{
|
||||
DNN_PMODE_NULL = 0, // !< Default. Resize to required input size without extra processing.
|
||||
DNN_PMODE_CROP_CENTER = 1, // !< Image will be cropped after resize.
|
||||
DNN_PMODE_LETTERBOX = 2, // !< Resize image to the desired size while preserving the aspect ratio of original image.
|
||||
};
|
||||
|
||||
/** @brief Processing params of image to blob.
|
||||
*
|
||||
* It includes all possible image processing operations and corresponding parameters.
|
||||
*
|
||||
* @see blobFromImageWithParams
|
||||
*
|
||||
* @note
|
||||
* The order and usage of `scalefactor` and `mean` are (input - mean) * scalefactor.
|
||||
* The order and usage of `scalefactor`, `size`, `mean`, `swapRB`, and `ddepth` are consistent
|
||||
* with the function of @ref blobFromImage.
|
||||
*/
|
||||
struct CV_EXPORTS_W_SIMPLE Image2BlobParams
|
||||
{
|
||||
CV_WRAP Image2BlobParams();
|
||||
CV_WRAP Image2BlobParams(const Scalar& scalefactor, const Size& size = Size(), const Scalar& mean = Scalar(),
|
||||
bool swapRB = false, int ddepth = CV_32F, DataLayout datalayout = DNN_LAYOUT_NCHW,
|
||||
ImagePaddingMode mode = DNN_PMODE_NULL);
|
||||
|
||||
CV_PROP_RW Scalar scalefactor; //!< scalefactor multiplier for input image values.
|
||||
CV_PROP_RW Size size; //!< Spatial size for output image.
|
||||
CV_PROP_RW Scalar mean; //!< Scalar with mean values which are subtracted from channels.
|
||||
CV_PROP_RW bool swapRB; //!< Flag which indicates that swap first and last channels
|
||||
CV_PROP_RW int ddepth; //!< Depth of output blob. Choose CV_32F or CV_8U.
|
||||
CV_PROP_RW DataLayout datalayout; //!< Order of output dimensions. Choose DNN_LAYOUT_NCHW or DNN_LAYOUT_NHWC.
|
||||
CV_PROP_RW ImagePaddingMode paddingmode; //!< Image padding mode. @see ImagePaddingMode.
|
||||
};
|
||||
|
||||
/** @brief Creates 4-dimensional blob from image with given params.
|
||||
*
|
||||
* @details This function is an extension of @ref blobFromImage to meet more image preprocess needs.
|
||||
* Given input image and preprocessing parameters, and function outputs the blob.
|
||||
*
|
||||
* @param image input image (all with 1-, 3- or 4-channels).
|
||||
* @param param struct of Image2BlobParams, contains all parameters needed by processing of image to blob.
|
||||
* @return 4-dimensional Mat.
|
||||
*/
|
||||
CV_EXPORTS_W Mat blobFromImageWithParams(InputArray image, const Image2BlobParams& param = Image2BlobParams());
|
||||
|
||||
/** @overload */
|
||||
CV_EXPORTS_W void blobFromImageWithParams(InputArray image, OutputArray blob, const Image2BlobParams& param = Image2BlobParams());
|
||||
|
||||
/** @brief Creates 4-dimensional blob from series of images with given params.
|
||||
*
|
||||
* @details This function is an extension of @ref blobFromImages to meet more image preprocess needs.
|
||||
* Given input image and preprocessing parameters, and function outputs the blob.
|
||||
*
|
||||
* @param images input image (all with 1-, 3- or 4-channels).
|
||||
* @param param struct of Image2BlobParams, contains all parameters needed by processing of image to blob.
|
||||
* @returns 4-dimensional Mat.
|
||||
*/
|
||||
CV_EXPORTS_W Mat blobFromImagesWithParams(InputArrayOfArrays images, const Image2BlobParams& param = Image2BlobParams());
|
||||
|
||||
/** @overload */
|
||||
CV_EXPORTS_W void blobFromImagesWithParams(InputArrayOfArrays images, OutputArray blob, const Image2BlobParams& param = Image2BlobParams());
|
||||
|
||||
/** @brief Parse a 4D blob and output the images it contains as 2D arrays through a simpler data structure
|
||||
* (std::vector<cv::Mat>).
|
||||
* @param[in] blob_ 4 dimensional array (images, channels, height, width) in floating point precision (CV_32F) from
|
||||
@@ -1311,7 +1423,7 @@ CV__DNN_INLINE_NS_BEGIN
|
||||
/** @brief Set scalefactor value for frame.
|
||||
* @param[in] scale Multiplier for frame values.
|
||||
*/
|
||||
CV_WRAP Model& setInputScale(double scale);
|
||||
CV_WRAP Model& setInputScale(const Scalar& scale);
|
||||
|
||||
/** @brief Set flag crop for frame.
|
||||
* @param[in] crop Flag which indicates whether image will be cropped after resize or not.
|
||||
|
||||
Reference in New Issue
Block a user