dnn: add the CANN backend (#22634)
authorYuantao Feng <yuantao.feng@outlook.com>
Wed, 21 Dec 2022 06:04:41 +0000 (14:04 +0800)
committerGitHub <noreply@github.com>
Wed, 21 Dec 2022 06:04:41 +0000 (09:04 +0300)
commita2b3acfc6ec44bcfbe10be38df2983ee368fdf42
treeac4bf7bdac7c94cf2b4d0926ab8e747c4151759d
parenta08c98cdfb781af95dcf481c6ac38ad26ff945c3
dnn: add the CANN backend (#22634)

* cann backend impl v1

* cann backend impl v2: use opencv parsers to build models for cann

* adjust fc according to the new transA and transB

* put cann net in cann backend node and reuse forwardLayer

* use fork() to create a child process and compile cann model

* remove legacy code

* remove debug code

* fall bcak to CPU backend if there is one layer not supoorted by CANN backend

* fix netInput forward
34 files changed:
CMakeLists.txt
cmake/OpenCVFindCANN.cmake [new file with mode: 0644]
cmake/checks/cann.cpp [new file with mode: 0644]
modules/dnn/CMakeLists.txt
modules/dnn/include/opencv2/dnn/dnn.hpp
modules/dnn/src/layer.cpp
modules/dnn/src/layers/batch_norm_layer.cpp
modules/dnn/src/layers/blank_layer.cpp
modules/dnn/src/layers/concat_layer.cpp
modules/dnn/src/layers/const_layer.cpp
modules/dnn/src/layers/convolution_layer.cpp
modules/dnn/src/layers/elementwise_layers.cpp
modules/dnn/src/layers/eltwise_layer.cpp
modules/dnn/src/layers/flatten_layer.cpp
modules/dnn/src/layers/fully_connected_layer.cpp
modules/dnn/src/layers/lrn_layer.cpp
modules/dnn/src/layers/nary_eltwise_layers.cpp
modules/dnn/src/layers/padding_layer.cpp
modules/dnn/src/layers/permute_layer.cpp
modules/dnn/src/layers/pooling_layer.cpp
modules/dnn/src/layers/reshape_layer.cpp
modules/dnn/src/layers/resize_layer.cpp
modules/dnn/src/layers/slice_layer.cpp
modules/dnn/src/layers/softmax_layer.cpp
modules/dnn/src/legacy_backend.cpp
modules/dnn/src/net_cann.cpp [new file with mode: 0644]
modules/dnn/src/net_impl.cpp
modules/dnn/src/net_impl.hpp
modules/dnn/src/net_impl_backend.cpp
modules/dnn/src/op_cann.cpp [new file with mode: 0644]
modules/dnn/src/op_cann.hpp [new file with mode: 0644]
modules/dnn/src/registry.cpp
modules/dnn/test/test_common.hpp
modules/dnn/test/test_common.impl.hpp