Merge pull request #21036 from fengyuentau:timvx_backend_support
dnn: TIM-VX NPU backend support * Add TimVX NPU backend for DNN module. * use official branch from tim-vx repo; fix detecting viv sdk Co-authored-by: fytao <yuantao.feng@outlook.com>
This commit is contained in:
@@ -262,7 +262,7 @@ CV__DNN_INLINE_NS_BEGIN
|
||||
{
|
||||
public:
|
||||
int input_zp, output_zp;
|
||||
float output_sc;
|
||||
float input_sc, output_sc;
|
||||
static Ptr<BaseConvolutionLayer> create(const LayerParams& params);
|
||||
};
|
||||
|
||||
@@ -322,6 +322,7 @@ CV__DNN_INLINE_NS_BEGIN
|
||||
{
|
||||
public:
|
||||
int input_zp, output_zp;
|
||||
float input_sc, output_sc;
|
||||
static Ptr<PoolingLayerInt8> create(const LayerParams& params);
|
||||
};
|
||||
|
||||
@@ -365,7 +366,8 @@ CV__DNN_INLINE_NS_BEGIN
|
||||
class CV_EXPORTS InnerProductLayerInt8 : public InnerProductLayer
|
||||
{
|
||||
public:
|
||||
int output_zp;
|
||||
int input_zp, output_zp;
|
||||
float input_sc, output_sc;
|
||||
static Ptr<InnerProductLayerInt8> create(const LayerParams& params);
|
||||
};
|
||||
|
||||
|
||||
@@ -75,6 +75,7 @@ CV__DNN_INLINE_NS_BEGIN
|
||||
DNN_BACKEND_VKCOM,
|
||||
DNN_BACKEND_CUDA,
|
||||
DNN_BACKEND_WEBNN,
|
||||
DNN_BACKEND_TIMVX,
|
||||
#ifdef __OPENCV_BUILD
|
||||
DNN_BACKEND_INFERENCE_ENGINE_NGRAPH = 1000000, // internal - use DNN_BACKEND_INFERENCE_ENGINE + setInferenceEngineBackendType()
|
||||
DNN_BACKEND_INFERENCE_ENGINE_NN_BUILDER_2019, // internal - use DNN_BACKEND_INFERENCE_ENGINE + setInferenceEngineBackendType()
|
||||
@@ -95,7 +96,8 @@ CV__DNN_INLINE_NS_BEGIN
|
||||
DNN_TARGET_FPGA, //!< FPGA device with CPU fallbacks using Inference Engine's Heterogeneous plugin.
|
||||
DNN_TARGET_CUDA,
|
||||
DNN_TARGET_CUDA_FP16,
|
||||
DNN_TARGET_HDDL
|
||||
DNN_TARGET_HDDL,
|
||||
DNN_TARGET_NPU,
|
||||
};
|
||||
|
||||
CV_EXPORTS std::vector< std::pair<Backend, Target> > getAvailableBackends();
|
||||
@@ -321,6 +323,19 @@ CV__DNN_INLINE_NS_BEGIN
|
||||
const std::vector<Ptr<BackendWrapper>>& outputs
|
||||
);
|
||||
|
||||
/**
|
||||
* @brief Returns a TimVX backend node
|
||||
*
|
||||
* @param timVxInfo void pointer to CSLContext object
|
||||
* @param inputsWrapper layer inputs
|
||||
* @param outputsWrapper layer outputs
|
||||
* @param isLast if the node is the last one of the TimVX Graph.
|
||||
*/
|
||||
virtual Ptr<BackendNode> initTimVX(void* timVxInfo,
|
||||
const std::vector<Ptr<BackendWrapper> > &inputsWrapper,
|
||||
const std::vector<Ptr<BackendWrapper> > &outputsWrapper,
|
||||
bool isLast);
|
||||
|
||||
/**
|
||||
* @brief Automatic Halide scheduling based on layer hyper-parameters.
|
||||
* @param[in] node Backend node with Halide functions.
|
||||
|
||||
Reference in New Issue
Block a user