Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
O
opencv
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
submodule
opencv
Commits
9b3be01b
Commit
9b3be01b
authored
Mar 09, 2020
by
Alexander Alekhin
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'upstream/3.4' into merge-3.4
parents
198b5096
0bcdf7d0
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
266 additions
and
3 deletions
+266
-3
tengine.cmake
3rdparty/libtengine/tengine.cmake
+90
-0
CMakeLists.txt
CMakeLists.txt
+10
-0
OpenCVFindTengine.cmake
cmake/OpenCVFindTengine.cmake
+65
-0
CMakeLists.txt
modules/dnn/CMakeLists.txt
+15
-0
convolution_layer.cpp
modules/dnn/src/layers/convolution_layer.cpp
+39
-3
tengine_graph_convolution.hpp
...dnn/src/tengine4dnn/include/tengine_graph_convolution.hpp
+42
-0
tengine_graph_convolution.cpp
...les/dnn/src/tengine4dnn/src/tengine_graph_convolution.cpp
+0
-0
ts_gtest.h
modules/ts/include/opencv2/ts/ts_gtest.h
+4
-0
stitching_detailed.cpp
samples/cpp/stitching_detailed.cpp
+1
-0
No files found.
3rdparty/libtengine/tengine.cmake
0 → 100644
View file @
9b3be01b
# COPYRIGHT
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# License); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# AS IS BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
#
# Copyright (c) 2020, OPEN AI LAB
# Author: qtang@openailab.com or https://github.com/BUG1989
# qli@openailab.com
# sqfu@openailab.com
#
SET
(
TENGINE_VERSION
"tengine-opencv"
)
SET
(
OCV_TENGINE_DSTDIRECTORY
${
OpenCV_BINARY_DIR
}
/3rdparty/libtengine
)
SET
(
DEFAULT_OPENCV_TENGINE_SOURCE_PATH
${
OCV_TENGINE_DSTDIRECTORY
}
/Tengine-
${
TENGINE_VERSION
}
)
IF
(
EXISTS
${
DEFAULT_OPENCV_TENGINE_SOURCE_PATH
}
)
MESSAGE
(
STATUS
"Tengine is exist already ."
)
SET
(
Tengine_FOUND ON
)
set
(
BUILD_TENGINE ON
)
ELSE
()
SET
(
OCV_TENGINE_FILENAME
"
${
TENGINE_VERSION
}
.zip"
)
#name2
SET
(
OCV_TENGINE_URL
"https://github.com/OAID/Tengine/archive/"
)
#url2
SET
(
tengine_md5sum 9c80d91dc8413911522ec80cde013ae2
)
#md5sum2
MESSAGE
(
STATUS
"**** TENGINE DOWNLOAD BEGIN ****"
)
ocv_download
(
FILENAME
${
OCV_TENGINE_FILENAME
}
HASH
${
tengine_md5sum
}
URL
"
${
OPENCV_TENGINE_URL
}
"
"$ENV{OPENCV_TENGINE_URL}"
"
${
OCV_TENGINE_URL
}
"
DESTINATION_DIR
${
OCV_TENGINE_DSTDIRECTORY
}
ID TENGINE
STATUS res
UNPACK RELATIVE_URL
)
if
(
NOT res
)
MESSAGE
(
STATUS
"TENGINE DOWNLOAD FAILED .Turning Tengine_FOUND off."
)
SET
(
Tengine_FOUND OFF
)
else
()
MESSAGE
(
STATUS
"TENGINE DOWNLOAD success . "
)
SET
(
Tengine_FOUND ON
)
set
(
BUILD_TENGINE ON
)
endif
()
ENDIF
()
if
(
BUILD_TENGINE
)
set
(
HAVE_TENGINE 1
)
# android system
if
(
ANDROID
)
if
(
${
ANDROID_ABI
}
STREQUAL
"armeabi-v7a"
)
set
(
CONFIG_ARCH_ARM32 ON
)
elseif
(
${
ANDROID_ABI
}
STREQUAL
"arm64-v8a"
)
set
(
CONFIG_ARCH_ARM64 ON
)
endif
()
endif
()
# linux system
if
(
CMAKE_SYSTEM_PROCESSOR STREQUAL arm
)
set
(
CONFIG_ARCH_ARM32 ON
)
elseif
(
CMAKE_SYSTEM_PROCESSOR STREQUAL aarch64
)
## AARCH64
set
(
CONFIG_ARCH_ARM64 ON
)
endif
()
SET
(
DEFAULT_OPENCV_TENGINE_SOURCE_PATH
${
OCV_TENGINE_DSTDIRECTORY
}
/Tengine-
${
TENGINE_VERSION
}
)
set
(
BUILT_IN_OPENCV ON
)
## set for tengine compile discern .
set
(
Tengine_INCLUDE_DIR
${
DEFAULT_OPENCV_TENGINE_SOURCE_PATH
}
/core/include
)
set
(
Tengine_LIB
${
CMAKE_BINARY_DIR
}
/lib/
${
ANDROID_ABI
}
/libtengine.a
)
if
(
IS_DIRECTORY
${
DEFAULT_OPENCV_TENGINE_SOURCE_PATH
}
)
add_subdirectory
(
"
${
DEFAULT_OPENCV_TENGINE_SOURCE_PATH
}
"
${
OCV_TENGINE_DSTDIRECTORY
}
/build
)
endif
()
endif
()
CMakeLists.txt
View file @
9b3be01b
...
@@ -422,6 +422,9 @@ OCV_OPTION(WITH_QUIRC "Include library QR-code decoding" ON
...
@@ -422,6 +422,9 @@ OCV_OPTION(WITH_QUIRC "Include library QR-code decoding" ON
OCV_OPTION
(
WITH_ANDROID_MEDIANDK
"Use Android Media NDK for Video I/O (Android)"
(
ANDROID_NATIVE_API_LEVEL GREATER 20
)
OCV_OPTION
(
WITH_ANDROID_MEDIANDK
"Use Android Media NDK for Video I/O (Android)"
(
ANDROID_NATIVE_API_LEVEL GREATER 20
)
VISIBLE_IF ANDROID
VISIBLE_IF ANDROID
VERIFY HAVE_ANDROID_MEDIANDK
)
VERIFY HAVE_ANDROID_MEDIANDK
)
OCV_OPTION
(
WITH_TENGINE
"Include Arm Inference Tengine support"
OFF
VISIBLE_IF
(
ARM OR AARCH64
)
AND UNIX AND NOT ANDROID AND NOT IOS
VERIFY HAVE_TENGINE
)
# OpenCV build components
# OpenCV build components
# ===================================================
# ===================================================
...
@@ -677,6 +680,9 @@ include(cmake/OpenCVFindLibsVideo.cmake)
...
@@ -677,6 +680,9 @@ include(cmake/OpenCVFindLibsVideo.cmake)
include
(
cmake/OpenCVFindLibsPerf.cmake
)
include
(
cmake/OpenCVFindLibsPerf.cmake
)
include
(
cmake/OpenCVFindLAPACK.cmake
)
include
(
cmake/OpenCVFindLAPACK.cmake
)
include
(
cmake/OpenCVFindProtobuf.cmake
)
include
(
cmake/OpenCVFindProtobuf.cmake
)
if
(
WITH_TENGINE
)
include
(
cmake/OpenCVFindTengine.cmake
)
endif
()
# ----------------------------------------------------------------------------
# ----------------------------------------------------------------------------
# Detect other 3rd-party libraries/tools
# Detect other 3rd-party libraries/tools
...
@@ -1409,6 +1415,10 @@ if(WITH_VA_INTEL OR HAVE_VA_INTEL)
...
@@ -1409,6 +1415,10 @@ if(WITH_VA_INTEL OR HAVE_VA_INTEL)
status
(
" Intel VA-API/OpenCL:"
HAVE_VA_INTEL THEN
"YES (OpenCL:
${
VA_INTEL_IOCL_ROOT
}
)"
ELSE NO
)
status
(
" Intel VA-API/OpenCL:"
HAVE_VA_INTEL THEN
"YES (OpenCL:
${
VA_INTEL_IOCL_ROOT
}
)"
ELSE NO
)
endif
()
endif
()
if
(
WITH_TENGINE OR HAVE_TENGINE
)
status
(
" Tengine:"
HAVE_TENGINE THEN
"YES (
${
TENGINE_LIBRARIES
}
)"
ELSE NO
)
endif
()
if
(
WITH_LAPACK OR HAVE_LAPACK
)
if
(
WITH_LAPACK OR HAVE_LAPACK
)
status
(
" Lapack:"
HAVE_LAPACK THEN
"YES (
${
LAPACK_LIBRARIES
}
)"
ELSE NO
)
status
(
" Lapack:"
HAVE_LAPACK THEN
"YES (
${
LAPACK_LIBRARIES
}
)"
ELSE NO
)
endif
()
endif
()
...
...
cmake/OpenCVFindTengine.cmake
0 → 100644
View file @
9b3be01b
# COPYRIGHT
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# License); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# AS IS BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
#
# Copyright (c) 2020, OPEN AI LAB
# Author: qtang@openailab.com or https://github.com/BUG1989
#
# ----------------------------------------------------------------------------
# Path for Tengine modules
# ----------------------------------------------------------------------------
set
(
OPENCV_LIBTENGINE_ROOT_DIR
""
CACHE PATH
"Where to look for additional OpenCV modules (can be ;-separated list of paths)"
)
IF
(
OPENCV_LIBTENGINE_ROOT_DIR
)
MESSAGE
(
STATUS
"TENGINE:-- Set tengine lib dir by user "
)
SET
(
Tengine_FOUND ON
)
set
(
BUILD_TENGINE OFF
)
SET
(
Tengine_INCLUDE_DIR
${
OPENCV_LIBTENGINE_ROOT_DIR
}
/include
)
SET
(
Tengine_LIB
${
OPENCV_LIBTENGINE_ROOT_DIR
}
/lib/libtengine.a
)
ELSE
()
MESSAGE
(
STATUS
"TENGINE:-- Auto download Tengine source code. "
)
include
(
"
${
OpenCV_SOURCE_DIR
}
/3rdparty/libtengine/tengine.cmake"
)
ENDIF
()
IF
(
NOT Tengine_LIB
)
SET
(
Tengine_FOUND OFF
)
MESSAGE
(
STATUS
"#### Could not find Tengine lib. Turning Tengine_FOUND off"
)
ENDIF
()
IF
(
Tengine_FOUND
)
MESSAGE
(
STATUS
"Found Tengine include:
${
Tengine_INCLUDE_DIR
}
"
)
MESSAGE
(
STATUS
"Found Tengine libraries:
${
Tengine_LIB
}
"
)
set
(
HAVE_TENGINE 1
)
set
(
TENGINE_LIBRARIES
${
Tengine_LIB
}
)
set
(
TENGINE_INCLUDE_DIRS
${
Tengine_INCLUDE_DIR
}
)
ENDIF
(
Tengine_FOUND
)
MESSAGE
(
STATUS
"Tengine include is:"
${
Tengine_INCLUDE_DIR
}
)
MESSAGE
(
STATUS
"Tengine library is:"
${
Tengine_LIB
}
)
MARK_AS_ADVANCED
(
Tengine_INCLUDE_DIR
Tengine_LIB
Tengine
)
modules/dnn/CMakeLists.txt
View file @
9b3be01b
...
@@ -13,6 +13,9 @@ ocv_add_dispatched_file_force_all("layers/layers_common" AVX AVX2 AVX512_SKX)
...
@@ -13,6 +13,9 @@ ocv_add_dispatched_file_force_all("layers/layers_common" AVX AVX2 AVX512_SKX)
ocv_add_module
(
dnn opencv_core opencv_imgproc WRAP python java js
)
ocv_add_module
(
dnn opencv_core opencv_imgproc WRAP python java js
)
ocv_option
(
OPENCV_DNN_OPENCL
"Build with OpenCL support"
HAVE_OPENCL AND NOT APPLE
)
ocv_option
(
OPENCV_DNN_OPENCL
"Build with OpenCL support"
HAVE_OPENCL AND NOT APPLE
)
if
(
HAVE_TENGINE
)
add_definitions
(
-DHAVE_TENGINE=1
)
endif
()
if
(
OPENCV_DNN_OPENCL AND HAVE_OPENCL
)
if
(
OPENCV_DNN_OPENCL AND HAVE_OPENCL
)
add_definitions
(
-DCV_OCL4DNN=1
)
add_definitions
(
-DCV_OCL4DNN=1
)
...
@@ -104,6 +107,18 @@ else()
...
@@ -104,6 +107,18 @@ else()
set
(
sources_options
${
sources_options
}
EXCLUDE_CUDA
)
set
(
sources_options
${
sources_options
}
EXCLUDE_CUDA
)
endif
()
endif
()
if
(
HAVE_TENGINE
)
list
(
APPEND include_dirs
${
TENGINE_INCLUDE_DIRS
}
)
if
(
EXISTS
${
TENGINE_LIBRARIES
}
)
list
(
APPEND libs
${
TENGINE_LIBRARIES
}
)
else
()
ocv_add_dependencies
(
opencv_dnn tengine
)
list
(
APPEND libs
${
TENGINE_LIBRARIES
}
)
endif
()
endif
()
ocv_module_include_directories
(
${
include_dirs
}
)
ocv_module_include_directories
(
${
include_dirs
}
)
if
(
CMAKE_CXX_COMPILER_ID STREQUAL
"GNU"
)
if
(
CMAKE_CXX_COMPILER_ID STREQUAL
"GNU"
)
ocv_append_source_files_cxx_compiler_options
(
fw_srcs
"-Wno-suggest-override"
)
# GCC
ocv_append_source_files_cxx_compiler_options
(
fw_srcs
"-Wno-suggest-override"
)
# GCC
...
...
modules/dnn/src/layers/convolution_layer.cpp
View file @
9b3be01b
...
@@ -57,6 +57,9 @@
...
@@ -57,6 +57,9 @@
#include "opencl_kernels_dnn.hpp"
#include "opencl_kernels_dnn.hpp"
using
namespace
cv
::
dnn
::
ocl4dnn
;
using
namespace
cv
::
dnn
::
ocl4dnn
;
#endif
#endif
#ifdef HAVE_TENGINE
#include "../tengine4dnn/include/tengine_graph_convolution.hpp"
#endif
#ifdef HAVE_CUDA
#ifdef HAVE_CUDA
#include "../cuda4dnn/primitives/convolution.hpp"
#include "../cuda4dnn/primitives/convolution.hpp"
...
@@ -1427,10 +1430,43 @@ public:
...
@@ -1427,10 +1430,43 @@ public:
}
}
}
}
int
nstripes
=
std
::
max
(
getNumThreads
(),
1
);
#ifdef HAVE_TENGINE
int
inch
=
inputs
[
0
].
size
[
1
];
// inch
int
in_h
=
inputs
[
0
].
size
[
2
];
// in_h
int
in_w
=
inputs
[
0
].
size
[
3
];
// in_w
int
out_b
=
outputs
[
0
].
size
[
0
];
// out batch size
int
outch
=
outputs
[
0
].
size
[
1
];
// outch
int
out_h
=
outputs
[
0
].
size
[
2
];
// out_h
int
out_w
=
outputs
[
0
].
size
[
3
];
// out_w
float
*
input_
=
inputs
[
0
].
ptr
<
float
>
();
float
*
output_
=
outputs
[
0
].
ptr
<
float
>
();
float
*
kernel_
=
weightsMat
.
ptr
<
float
>
();
float
*
teg_bias
=
&
biasvec
[
0
];
bool
tengine_ret
=
tengine_forward
(
input_
,
inch
,
ngroups
,
in_h
,
in_w
,
output_
,
out_b
,
outch
,
out_h
,
out_w
,
kernel_
,
kernel_size
.
size
(),
kernel
.
height
,
kernel
.
width
,
teg_bias
,
stride
.
height
,
stride
.
width
,
pad
.
height
,
pad
.
width
,
dilation
.
height
,
dilation
.
width
,
weightsMat
.
step1
(),
padMode
);
/* activation */
if
((
true
==
tengine_ret
)
&&
activ
)
{
int
out_cstep
=
out_h
*
out_w
;
// out_cstep
ActivationLayer
*
activ_
=
activ
.
get
();
activ_
->
forwardSlice
(
output_
,
output_
,
out_cstep
,
out_cstep
,
0
,
outch
);
}
if
(
false
==
tengine_ret
)
#endif
{
int
nstripes
=
std
::
max
(
getNumThreads
(),
1
);
ParallelConv
::
run
(
inputs
[
0
],
outputs
[
0
],
weightsMat
,
biasvec
,
reluslope
,
ParallelConv
::
run
(
inputs
[
0
],
outputs
[
0
],
weightsMat
,
biasvec
,
reluslope
,
kernel_size
,
strides
,
pads_begin
,
pads_end
,
dilations
,
activ
.
get
(),
ngroups
,
nstripes
);
kernel_size
,
strides
,
pads_begin
,
pads_end
,
dilations
,
activ
.
get
(),
ngroups
,
nstripes
);
}
}
}
#ifdef HAVE_CUDA
#ifdef HAVE_CUDA
...
...
modules/dnn/src/tengine4dnn/include/tengine_graph_convolution.hpp
0 → 100644
View file @
9b3be01b
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* License); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* AS IS BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
/*
* Copyright (c) 2020, OPEN AI LAB
* Author: qtang@openailab.com
*/
#ifndef TENGINE_GRAPH_CONVOLUTION_HPP
#define TENGINE_GRAPH_CONVOLUTION_HPP
#define FLOAT_TO_REALSIZE (4)
namespace
cv
{
namespace
dnn
{
bool
tengine_forward
(
float
*
input_
,
int
inch
,
int
group
,
int
in_h
,
int
in_w
,
float
*
output_
,
int
out_b
,
int
outch
,
int
out_h
,
int
out_w
,
float
*
kernel_
,
int
kernel_s
,
int
kernel_h
,
int
kernel_w
,
float
*
teg_bias
,
int
stride_h
,
int
stride_w
,
int
pad_h
,
int
pad_w
,
int
dilation_h
,
int
dilation_w
,
size_t
wstep
,
const
std
::
string
padMode
)
;
}
}
#endif
/* TENGINE_GRAPH_CONVOLUTION_HPP */
modules/dnn/src/tengine4dnn/src/tengine_graph_convolution.cpp
0 → 100644
View file @
9b3be01b
This diff is collapsed.
Click to expand it.
modules/ts/include/opencv2/ts/ts_gtest.h
View file @
9b3be01b
...
@@ -9235,6 +9235,10 @@ class NativeArray {
...
@@ -9235,6 +9235,10 @@ class NativeArray {
try { \
try { \
GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \
GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \
} \
} \
catch (const std::exception& e) { \
std::cerr << "Exception message: " << e.what() << std::endl; \
goto GTEST_CONCAT_TOKEN_(gtest_label_testnothrow_, __LINE__); \
} \
catch (...) { \
catch (...) { \
goto GTEST_CONCAT_TOKEN_(gtest_label_testnothrow_, __LINE__); \
goto GTEST_CONCAT_TOKEN_(gtest_label_testnothrow_, __LINE__); \
} \
} \
...
...
samples/cpp/stitching_detailed.cpp
View file @
9b3be01b
...
@@ -18,6 +18,7 @@
...
@@ -18,6 +18,7 @@
#include "opencv2/stitching/warpers.hpp"
#include "opencv2/stitching/warpers.hpp"
#ifdef HAVE_OPENCV_XFEATURES2D
#ifdef HAVE_OPENCV_XFEATURES2D
#include "opencv2/xfeatures2d.hpp"
#include "opencv2/xfeatures2d/nonfree.hpp"
#include "opencv2/xfeatures2d/nonfree.hpp"
#endif
#endif
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment