mirror of
https://github.com/opencv/opencv.git
synced 2026-07-29 07:13:02 +04:00
Merge pull request #24231 from fengyuentau:halide_cleanup_5.x
dnn: cleanup of halide backend for 5.x #24231 Merge with https://github.com/opencv/opencv_extra/pull/1092. ### Pull Request Readiness Checklist See details at https://github.com/opencv/opencv/wiki/How_to_contribute#making-a-good-pull-request - [x] I agree to contribute to the project under Apache 2 License. - [x] To the best of my knowledge, the proposed patch is not based on a code under GPL or another license that is incompatible with OpenCV - [x] The PR is proposed to the proper branch - [x] There is a reference to the original bug report and related work - [x] There is accuracy test, performance test and test data in opencv_extra repository, if applicable Patch to opencv_extra has the same branch name. - [x] The feature is well documented and sample code can be built with the project CMake
This commit is contained in:
@@ -71,9 +71,8 @@ CV__DNN_INLINE_NS_BEGIN
|
||||
{
|
||||
//! DNN_BACKEND_DEFAULT equals to OPENCV_DNN_BACKEND_DEFAULT, which can be defined using CMake or a configuration parameter
|
||||
DNN_BACKEND_DEFAULT = 0,
|
||||
DNN_BACKEND_HALIDE,
|
||||
DNN_BACKEND_INFERENCE_ENGINE, //!< Intel OpenVINO computational backend
|
||||
//!< @note Tutorial how to build OpenCV with OpenVINO: @ref tutorial_dnn_openvino
|
||||
DNN_BACKEND_INFERENCE_ENGINE = 2, //!< Intel OpenVINO computational backend
|
||||
//!< @note Tutorial how to build OpenCV with OpenVINO: @ref tutorial_dnn_openvino
|
||||
DNN_BACKEND_OPENCV,
|
||||
DNN_BACKEND_VKCOM,
|
||||
DNN_BACKEND_CUDA,
|
||||
@@ -314,18 +313,6 @@ CV__DNN_INLINE_NS_BEGIN
|
||||
*/
|
||||
virtual bool supportBackend(int backendId); // FIXIT const
|
||||
|
||||
/**
|
||||
* @brief Returns Halide backend node.
|
||||
* @param[in] inputs Input Halide buffers.
|
||||
* @see BackendNode, BackendWrapper
|
||||
*
|
||||
* Input buffers should be exactly the same that will be used in forward invocations.
|
||||
* Despite we can use Halide::ImageParam based on input shape only,
|
||||
* it helps prevent some memory management issues (if something wrong,
|
||||
* Halide tests will be failed).
|
||||
*/
|
||||
virtual Ptr<BackendNode> initHalide(const std::vector<Ptr<BackendWrapper> > &inputs);
|
||||
|
||||
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, std::vector<Ptr<BackendWrapper> > &outputs);
|
||||
@@ -369,33 +356,6 @@ CV__DNN_INLINE_NS_BEGIN
|
||||
const std::vector<Ptr<BackendWrapper> > &outputs,
|
||||
const std::vector<Ptr<BackendNode> >& nodes);
|
||||
|
||||
/**
|
||||
* @brief Automatic Halide scheduling based on layer hyper-parameters.
|
||||
* @param[in] node Backend node with Halide functions.
|
||||
* @param[in] inputs Blobs that will be used in forward invocations.
|
||||
* @param[in] outputs Blobs that will be used in forward invocations.
|
||||
* @param[in] targetId Target identifier
|
||||
* @see BackendNode, Target
|
||||
*
|
||||
* Layer don't use own Halide::Func members because we can have applied
|
||||
* layers fusing. In this way the fused function should be scheduled.
|
||||
*/
|
||||
virtual void applyHalideScheduler(Ptr<BackendNode>& node,
|
||||
const std::vector<Mat*> &inputs,
|
||||
const std::vector<Mat> &outputs,
|
||||
int targetId) const;
|
||||
|
||||
/**
|
||||
* @brief Implement layers fusing.
|
||||
* @param[in] node Backend node of bottom layer.
|
||||
* @see BackendNode
|
||||
*
|
||||
* Actual for graph-based backends. If layer attached successfully,
|
||||
* returns non-empty cv::Ptr to node of the same backend.
|
||||
* Fuse only over the last function.
|
||||
*/
|
||||
virtual Ptr<BackendNode> tryAttach(const Ptr<BackendNode>& node);
|
||||
|
||||
/**
|
||||
* @brief Tries to attach to the layer the subsequent activation layer, i.e. do the layer fusion in a partial case.
|
||||
* @param[in] layer The subsequent activation layer.
|
||||
@@ -671,17 +631,6 @@ CV__DNN_INLINE_NS_BEGIN
|
||||
*/
|
||||
CV_WRAP void getOutputDetails(CV_OUT std::vector<float>& scales, CV_OUT std::vector<int>& zeropoints) const;
|
||||
|
||||
/**
|
||||
* @brief Compile Halide layers.
|
||||
* @param[in] scheduler Path to YAML file with scheduling directives.
|
||||
* @see setPreferableBackend
|
||||
*
|
||||
* Schedule layers that support Halide backend. Then compile them for
|
||||
* specific target. For layers that not represented in scheduling file
|
||||
* or if no manual scheduling used at all, automatic scheduling will be applied.
|
||||
*/
|
||||
CV_WRAP void setHalideScheduler(const String& scheduler);
|
||||
|
||||
/**
|
||||
* @brief Ask network to use specific computation backend where it supported.
|
||||
* @param[in] backendId backend identifier.
|
||||
@@ -695,16 +644,16 @@ CV__DNN_INLINE_NS_BEGIN
|
||||
* @see Target
|
||||
*
|
||||
* List of supported combinations backend / target:
|
||||
* | | DNN_BACKEND_OPENCV | DNN_BACKEND_INFERENCE_ENGINE | DNN_BACKEND_HALIDE | DNN_BACKEND_CUDA |
|
||||
* |------------------------|--------------------|------------------------------|--------------------|-------------------|
|
||||
* | DNN_TARGET_CPU | + | + | + | |
|
||||
* | DNN_TARGET_OPENCL | + | + | + | |
|
||||
* | DNN_TARGET_OPENCL_FP16 | + | + | | |
|
||||
* | DNN_TARGET_MYRIAD | | + | | |
|
||||
* | DNN_TARGET_FPGA | | + | | |
|
||||
* | DNN_TARGET_CUDA | | | | + |
|
||||
* | DNN_TARGET_CUDA_FP16 | | | | + |
|
||||
* | DNN_TARGET_HDDL | | + | | |
|
||||
* | | DNN_BACKEND_OPENCV | DNN_BACKEND_INFERENCE_ENGINE | DNN_BACKEND_CUDA |
|
||||
* |------------------------|--------------------|------------------------------|-------------------|
|
||||
* | DNN_TARGET_CPU | + | + | |
|
||||
* | DNN_TARGET_OPENCL | + | + | |
|
||||
* | DNN_TARGET_OPENCL_FP16 | + | + | |
|
||||
* | DNN_TARGET_MYRIAD | | + | |
|
||||
* | DNN_TARGET_FPGA | | + | |
|
||||
* | DNN_TARGET_CUDA | | | + |
|
||||
* | DNN_TARGET_CUDA_FP16 | | | + |
|
||||
* | DNN_TARGET_HDDL | | + | |
|
||||
*/
|
||||
CV_WRAP void setPreferableTarget(int targetId);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user