Merge pull request #16724 from liqi-c:3.4-tengine
* Add Tengine support . * Modify printf to CV_LOG_WARNING * a few minor fixes in the code * Renew Tengine version * Add header file for CV_LOG_WARNING * Add #ifdef HAVE_TENGINE in tengine_graph_convolution.cpp * remove trailing whitespace * Remove trailing whitespace * Modify for compile problem * Modify some code style error * remove whitespace * Move some code style problem * test * add ios limit and build problem * Modified as alalek suggested * Add cmake 2.8 support * modify cmake 3.5.1 problem * test and set BUILD_ANDROID_PROJECTS OFF * remove some compile error * remove some extra code in tengine * close test. * Test again * disable android. * delete ndk version judgement * Remove setenv() call . and add License information * Set tengine default OFF. Close test . Co-authored-by: Vadim Pisarevsky <vadim.pisarevsky@gmail.com>pull/16764/head^2
parent
969cc3dd95
commit
0bcdf7d03e
7 changed files with 617 additions and 3 deletions
@ -0,0 +1,90 @@ |
|||||||
|
# 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() |
||||||
|
|
||||||
|
|
@ -0,0 +1,65 @@ |
|||||||
|
# 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 |
||||||
|
) |
@ -0,0 +1,42 @@ |
|||||||
|
/*
|
||||||
|
* 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 */ |
Loading…
Reference in new issue