feat: Update NNSDK path and library linking in CMake configurations and Android build script, and add a new script to build all Android examples.

This commit is contained in:
dian.yuan 2026-02-24 19:41:14 +08:00
parent 79a2bd27f6
commit 21105e3db7
35 changed files with 1438 additions and 1222 deletions

View file

@ -68,6 +68,35 @@ pre-build models:
- means currently supported.
# Examples Compile
## AMLNN SDK Setup
The C++ demos depend on the **AMLNN nnsdk** runtime library. The build system resolves it using the following priority order:
**Priority 1 Environment variable (recommended)**
```bash
export AMLNN_HOME=/path/to/amlnn-toolkit
```
**Priority 2 CMake auto-find (`FindAMLNN.cmake`)**
Handled automatically via `cmake/FindAMLNN.cmake` in the project root — useful in IDE and CI environments.
**Priority 3 Sibling directory fallback**
If `AMLNN_HOME` is not set, the script automatically looks for `amlnn-toolkit` as a sibling directory:
```
modelzoo/
├── amlnn-model-playground/ ← this repo
└── amlnn-toolkit/ ← SDK placed here automatically found
```
Clone it with:
```bash
git clone git@github.com:Amlogic-NN/amlnn-toolkit.git ../amlnn-toolkit
```
Each **example** directory contains a **build-android.sh** and build-linux.sh **script**. For compilation steps, refer to **Chapter 4** of the **README.md** file in the corresponding example directory.

64
cmake/FindAMLNN.cmake Normal file
View file

@ -0,0 +1,64 @@
# FindAMLNN.cmake
# ---------------------------------------------------------------------------
# Locates the AMLNN nnsdk headers and libraries.
#
# Inputs (set before calling find_package):
# AMLNN_HOME root of the amlnn-toolkit (contains nn_runtime/)
# May also be supplied as the environment variable AMLNN_HOME.
#
# Outputs:
# AMLNN_INCLUDE_DIR path to nnsdk include dir
# AMLNN_LIBRARY_DIR path to the ABI-specific library dir (use link_directories)
# AMLNN_LIBRARY "nnsdk" (library name, no prefix/suffix)
# AMLNN_FOUND
# ---------------------------------------------------------------------------
# Resolve AMLNN_HOME: CMake variable env var relative sibling fallbacks
if(NOT AMLNN_HOME)
if(DEFINED ENV{AMLNN_HOME} AND NOT "$ENV{AMLNN_HOME}" STREQUAL "")
set(AMLNN_HOME "$ENV{AMLNN_HOME}")
elseif(EXISTS "${CMAKE_SOURCE_DIR}/../../../../../amlnn-toolkit/nn_runtime")
set(AMLNN_HOME "${CMAKE_SOURCE_DIR}/../../../../../amlnn-toolkit")
endif()
endif()
if(NOT AMLNN_HOME)
message(FATAL_ERROR
"AMLNN_HOME not found.\n"
"Please set the AMLNN_HOME environment variable (or CMake variable) "
"to the root of the amlnn-toolkit directory, e.g.:\n"
" export AMLNN_HOME=/path/to/amlnn-toolkit\n"
" cmake ... -DAMLNN_HOME=/path/to/amlnn-toolkit")
endif()
get_filename_component(AMLNN_HOME "${AMLNN_HOME}" ABSOLUTE)
set(AMLNN_NNSDK_ROOT "${AMLNN_HOME}/nn_runtime/nnsdk")
set(AMLNN_INCLUDE_DIR "${AMLNN_NNSDK_ROOT}/include")
if(CMAKE_SYSTEM_NAME STREQUAL "Android")
if(ANDROID_ABI STREQUAL "arm64-v8a")
set(AMLNN_LIBRARY_DIR "${AMLNN_NNSDK_ROOT}/android/arm64-v8a")
else()
set(AMLNN_LIBRARY_DIR "${AMLNN_NNSDK_ROOT}/android/armeabi-v7a")
endif()
elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux")
set(AMLNN_LIBRARY_DIR "${AMLNN_NNSDK_ROOT}/linux/yocto/aarch64-poky-linux")
else()
set(AMLNN_LIBRARY_DIR "${AMLNN_NNSDK_ROOT}/linux/yocto/aarch64-poky-linux")
endif()
set(AMLNN_LIBRARY "nnsdk")
# Validate paths
if(NOT EXISTS "${AMLNN_INCLUDE_DIR}")
message(FATAL_ERROR "AMLNN include dir not found: ${AMLNN_INCLUDE_DIR}\n(AMLNN_HOME=${AMLNN_HOME})")
endif()
if(NOT EXISTS "${AMLNN_LIBRARY_DIR}")
message(FATAL_ERROR "AMLNN library dir not found: ${AMLNN_LIBRARY_DIR}\n(AMLNN_HOME=${AMLNN_HOME})")
endif()
set(AMLNN_FOUND TRUE)
message(STATUS "Found AMLNN: ${AMLNN_HOME}")
message(STATUS " AMLNN_INCLUDE_DIR: ${AMLNN_INCLUDE_DIR}")
message(STATUS " AMLNN_LIBRARY_DIR: ${AMLNN_LIBRARY_DIR}")

View file

@ -41,20 +41,43 @@ while getopts 'a:h' opt; do
esac
done
if [ -z "${ANDROID_NDK_PATH}" ]; then
if [ -n "${ANDROID_NDK}" ]; then
ANDROID_NDK_PATH=${ANDROID_NDK}
elif [ -n "${ANDROID_NDK_HOME}" ]; then
ANDROID_NDK_PATH=${ANDROID_NDK_HOME}
else
echo "Error: ANDROID_NDK_PATH is not set."
echo "Please set ANDROID_NDK_PATH to your Android NDK directory."
SCRIPT_DIR=$(cd "$(dirname $0)" && pwd)
# Priority 1: Environment variable (recommended)
if [ -n "$AMLNN_HOME" ]; then
if [ ! -d "$AMLNN_HOME/nn_runtime" ]; then
echo "Error: AMLNN_HOME is set to '$AMLNN_HOME' but nn_runtime was not found there."
echo "Please check your AMLNN_HOME path."
exit 1
fi
RUNTIME_PATH="$AMLNN_HOME/nn_runtime"
echo "Priority 1: Using AMLNN_HOME from environment: $AMLNN_HOME"
# Priority 3: Fallback to sibling amlnn-toolkit (compatibility)
elif [ -d "${SCRIPT_DIR}/../../amlnn-toolkit/nn_runtime" ]; then
export AMLNN_HOME="$(cd "${SCRIPT_DIR}/../../amlnn-toolkit" && pwd)"
RUNTIME_PATH="$AMLNN_HOME/nn_runtime"
echo "Priority 3: Using sibling amlnn-toolkit as fallback: $AMLNN_HOME"
elif [ -d "${SCRIPT_DIR}/../../amlnn-toolkit-a/nn_runtime" ]; then
export AMLNN_HOME="$(cd "${SCRIPT_DIR}/../../amlnn-toolkit-a" && pwd)"
RUNTIME_PATH="$AMLNN_HOME/nn_runtime"
echo "Priority 3: Using sibling amlnn-toolkit-a as fallback: $AMLNN_HOME"
else
echo ""
echo "Error: AMLNN SDK not found."
echo ""
echo "Please do one of the following:"
echo ""
echo " Option A (recommended) set AMLNN_HOME:"
echo " export AMLNN_HOME=/path/to/amlnn-toolkit"
echo " ./build-android-all.sh"
echo ""
echo " Option B clone amlnn-toolkit as a sibling directory:"
echo " git clone git@github.com:Amlogic-NN/amlnn-toolkit.git ../../../amlnn-toolkit"
echo " ./build-android-all.sh"
echo ""
exit 1
fi
SCRIPT_DIR=$(cd "$(dirname $0)" && pwd)
echo "============================================"
echo "Building all Android examples"
echo "NDK_PATH: ${ANDROID_NDK_PATH}"
@ -93,6 +116,10 @@ for EXAMPLE in "${EXAMPLES[@]}"; do
echo "Building: ${EXAMPLE}"
echo "--------------------------------------------"
# Clean previous build to avoid stale CMake cache
echo "Cleaning: ${EXAMPLE_DIR}/build/android"
rm -rf "${EXAMPLE_DIR}/build/android"
if bash "${BUILD_SCRIPT}" -a "${TARGET_ABI}"; then
SUCCEEDED+=("${EXAMPLE}")
echo "[SUCCESS] ${EXAMPLE}"

View file

@ -18,6 +18,20 @@ TO DO
#### 1. Compile
#### AMLNN SDK Setup
Resolve the AMLNN nnsdk dependency using one of the following methods:
- **Priority 1 Environment variable (recommended)**
```bash
export AMLNN_HOME=/path/to/amlnn-toolkit
```
- **Priority 3 Sibling directory fallback** *(automatic)*
Place `amlnn-toolkit` as a sibling to `amlnn-model-playground`:
```bash
git clone git@github.com:Amlogic-NN/amlnn-toolkit.git ../amlnn-toolkit
```
**Prerequisites:**
- Android NDK (r25e recommended)
- `ANDROID_NDK_PATH` environment variable set

View file

@ -65,7 +65,8 @@ echo "BUILD_DIR: ${BUILD_DIR}"
mkdir -p ${BUILD_DIR}
cd ${BUILD_DIR}
cmake ../../src \
cmake -Wno-dev ../../src \
-DAMLNN_HOME=${AMLNN_HOME:-} \
-DCMAKE_TOOLCHAIN_FILE=${ANDROID_NDK_PATH}/build/cmake/android.toolchain.cmake \
-DANDROID_ABI=${TARGET_ABI} \
-DANDROID_PLATFORM=android-24 \

View file

@ -1,16 +1,13 @@
cmake_minimum_required(VERSION 3.5)
cmake_minimum_required(VERSION 3.10...3.27)
project(clip_demo)
set(CMAKE_CXX_STANDARD 17)
# Set NNSDK path
if(NOT DEFINED NNSDK_DIR)
set(NNSDK_DIR "${CMAKE_SOURCE_DIR}/../../../../../amlnn-toolkit/nn_runtime/nnsdk")
endif()
set(NNSDK_ROOT "${NNSDK_DIR}")
message(STATUS "NNSDK_ROOT: ${NNSDK_ROOT}")
list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/../../../../cmake")
find_package(AMLNN REQUIRED)
include_directories(${AMLNN_INCLUDE_DIR})
link_directories(${AMLNN_LIBRARY_DIR})
include_directories(${NNSDK_ROOT}/include)
include_directories(${CMAKE_SOURCE_DIR}/../../../../common)
# Set 3rdparty path
@ -22,15 +19,8 @@ include_directories(${3RDPARTY_DIR}/stb_image)
include_directories(${3RDPARTY_DIR}/json)
if(CMAKE_SYSTEM_NAME STREQUAL "Android")
if (ANDROID_ABI STREQUAL "arm64-v8a")
link_directories(${NNSDK_ROOT}/android/arm64-v8a)
else()
link_directories(${NNSDK_ROOT}/android/armeabi-v7a)
endif()
# Android needs log
link_libraries(log)
elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux")
link_directories(${NNSDK_ROOT}/linux/yocto/aarch64-poky-linux)
endif()
add_executable(${PROJECT_NAME}
@ -41,7 +31,7 @@ add_executable(${PROJECT_NAME}
)
target_link_libraries(${PROJECT_NAME}
nnsdk
${AMLNN_LIBRARY}
dl
m
)

View file

@ -16,6 +16,20 @@ for deployment on Amlogic NPU platforms.
#### 1. Compile
#### AMLNN SDK Setup
Resolve the AMLNN nnsdk dependency using one of the following methods:
- **Priority 1 Environment variable (recommended)**
```bash
export AMLNN_HOME=/path/to/amlnn-toolkit
```
- **Priority 3 Sibling directory fallback** *(automatic)*
Place `amlnn-toolkit` as a sibling to `amlnn-model-playground`:
```bash
git clone git@github.com:Amlogic-NN/amlnn-toolkit.git ../amlnn-toolkit
```
**Prerequisites:**
- Android NDK (r25e recommended)
- `ANDROID_NDK_PATH` environment variable set

View file

@ -49,7 +49,8 @@ echo "BUILD_DIR: ${BUILD_DIR}"
mkdir -p ${BUILD_DIR}
cd ${BUILD_DIR}
cmake ../../src \
cmake -Wno-dev ../../src \
-DAMLNN_HOME=${AMLNN_HOME:-} \
-DCMAKE_TOOLCHAIN_FILE=${ANDROID_NDK_PATH}/build/cmake/android.toolchain.cmake \
-DANDROID_ABI=${TARGET_ABI} \
-DANDROID_PLATFORM=android-24 \

View file

@ -1,31 +1,21 @@
cmake_minimum_required(VERSION 3.5)
cmake_minimum_required(VERSION 3.10...3.27)
project(mobilenet_v2_demo)
set(CMAKE_CXX_STANDARD 17)
# Set NNSDK path
if(NOT DEFINED NNSDK_DIR)
set(NNSDK_DIR "${CMAKE_SOURCE_DIR}/../../../../../amlnn-toolkit/nn_runtime/nnsdk")
endif()
set(NNSDK_ROOT "${NNSDK_DIR}")
message(STATUS "NNSDK_ROOT: ${NNSDK_ROOT}")
list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/../../../../cmake")
find_package(AMLNN REQUIRED)
include_directories(${AMLNN_INCLUDE_DIR})
link_directories(${AMLNN_LIBRARY_DIR})
include_directories(${NNSDK_ROOT}/include)
include_directories(${CMAKE_SOURCE_DIR}/../../../../common)
# Set dependency path
set(3RDPARTY_DIR "${CMAKE_SOURCE_DIR}/../../../../dependency")
if(CMAKE_SYSTEM_NAME STREQUAL "Android")
if (ANDROID_ABI STREQUAL "arm64-v8a")
link_directories(${NNSDK_ROOT}/android/arm64-v8a)
else()
link_directories(${NNSDK_ROOT}/android/armeabi-v7a)
endif()
# Android needs log
link_libraries(log)
elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux")
link_directories(${NNSDK_ROOT}/linux/yocto/aarch64-poky-linux)
endif()
# Find OpenCV
@ -40,5 +30,5 @@ add_executable(mobilenet_v2_demo
target_link_libraries(mobilenet_v2_demo
${OpenCV_LIBS}
nnsdk
${AMLNN_LIBRARY}
)

View file

@ -0,0 +1,34 @@
# PaddleOCR Detection
## 4. Demo Run
### CPP
#### 1. Compile
#### AMLNN SDK Setup
Resolve the AMLNN nnsdk dependency using one of the following methods:
- **Priority 1 Environment variable (recommended)**
```bash
export AMLNN_HOME=/path/to/amlnn-toolkit
```
- **Priority 3 Sibling directory fallback** *(automatic)*
Place `amlnn-toolkit` as a sibling to `amlnn-model-playground`:
```bash
git clone git@github.com:Amlogic-NN/amlnn-toolkit.git ../amlnn-toolkit
```
**Prerequisites:**
- Android NDK r25c
- `ANDROID_NDK_PATH` environment variable set
**Build:**
```bash
# Build for arm64-v8a
cd examples/ppocr-det/cpp
./build-android.sh -a arm64-v8a
```
The executable will be generated in `build/android/`.

View file

@ -65,7 +65,8 @@ echo "BUILD_DIR: ${BUILD_DIR}"
mkdir -p ${BUILD_DIR}
cd ${BUILD_DIR}
cmake ../../src \
cmake -Wno-dev ../../src \
-DAMLNN_HOME=${AMLNN_HOME:-} \
-DCMAKE_TOOLCHAIN_FILE=${ANDROID_NDK_PATH}/build/cmake/android.toolchain.cmake \
-DANDROID_ABI=${TARGET_ABI} \
-DANDROID_PLATFORM=android-24 \

View file

@ -1,31 +1,21 @@
cmake_minimum_required(VERSION 3.5)
cmake_minimum_required(VERSION 3.10...3.27)
project(yolo_world_demo)
set(CMAKE_CXX_STANDARD 17)
# Set NNSDK path
if(NOT DEFINED NNSDK_DIR)
set(NNSDK_DIR "${CMAKE_SOURCE_DIR}/../../../../../amlnn-toolkit/nn_runtime/nnsdk")
endif()
set(NNSDK_ROOT "${NNSDK_DIR}")
message(STATUS "NNSDK_ROOT: ${NNSDK_ROOT}")
list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/../../../../cmake")
find_package(AMLNN REQUIRED)
include_directories(${AMLNN_INCLUDE_DIR})
link_directories(${AMLNN_LIBRARY_DIR})
include_directories(${NNSDK_ROOT}/include)
include_directories(${CMAKE_SOURCE_DIR}/../../../../common)
# Set 3rdparty path
set(3RDPARTY_DIR "${CMAKE_SOURCE_DIR}/../../../../dependency")
if(CMAKE_SYSTEM_NAME STREQUAL "Android")
if (ANDROID_ABI STREQUAL "arm64-v8a")
link_directories(${NNSDK_ROOT}/android/arm64-v8a)
else()
link_directories(${NNSDK_ROOT}/android/armeabi-v7a)
endif()
# Android needs log
link_libraries(log)
elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux")
link_directories(${NNSDK_ROOT}/linux/yocto/aarch64-poky-linux)
endif()
# Find OpenCV
@ -44,5 +34,5 @@ add_executable(paddleocr_det_demo
target_link_libraries(paddleocr_det_demo
${OpenCV_LIBS}
nnsdk
${AMLNN_LIBRARY}
)

View file

@ -61,6 +61,20 @@ example
#### 1. Compile
#### AMLNN SDK Setup
Resolve the AMLNN nnsdk dependency using one of the following methods:
- **Priority 1 Environment variable (recommended)**
```bash
export AMLNN_HOME=/path/to/amlnn-toolkit
```
- **Priority 3 Sibling directory fallback** *(automatic)*
Place `amlnn-toolkit` as a sibling to `amlnn-model-playground`:
```bash
git clone git@github.com:Amlogic-NN/amlnn-toolkit.git ../amlnn-toolkit
```
**Prerequisites:**
- Android NDK (r25e recommended)
- `ANDROID_NDK_PATH` environment variable set

View file

@ -65,7 +65,8 @@ echo "BUILD_DIR: ${BUILD_DIR}"
mkdir -p ${BUILD_DIR}
cd ${BUILD_DIR}
cmake ../../src \
cmake -Wno-dev ../../src \
-DAMLNN_HOME=${AMLNN_HOME:-} \
-DCMAKE_TOOLCHAIN_FILE=${ANDROID_NDK_PATH}/build/cmake/android.toolchain.cmake \
-DANDROID_ABI=${TARGET_ABI} \
-DANDROID_PLATFORM=android-24 \

View file

@ -1,31 +1,21 @@
cmake_minimum_required(VERSION 3.5)
cmake_minimum_required(VERSION 3.10...3.27)
project(resnet_demo)
set(CMAKE_CXX_STANDARD 17)
# Set NNSDK path
if(NOT DEFINED NNSDK_DIR)
set(NNSDK_DIR "${CMAKE_SOURCE_DIR}/../../../../../amlnn-toolkit/nn_runtime/nnsdk")
endif()
set(NNSDK_ROOT "${NNSDK_DIR}")
message(STATUS "NNSDK_ROOT: ${NNSDK_ROOT}")
list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/../../../../cmake")
find_package(AMLNN REQUIRED)
include_directories(${AMLNN_INCLUDE_DIR})
link_directories(${AMLNN_LIBRARY_DIR})
include_directories(${NNSDK_ROOT}/include)
include_directories(${CMAKE_SOURCE_DIR}/../../../../common)
# Set dependency path
set(3RDPARTY_DIR "${CMAKE_SOURCE_DIR}/../../../../dependency")
if(CMAKE_SYSTEM_NAME STREQUAL "Android")
if (ANDROID_ABI STREQUAL "arm64-v8a")
link_directories(${NNSDK_ROOT}/android/arm64-v8a)
else()
link_directories(${NNSDK_ROOT}/android/armeabi-v7a)
endif()
# Android needs log
link_libraries(log)
elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux")
link_directories(${NNSDK_ROOT}/linux/yocto/aarch64-poky-linux)
endif()
# Find OpenCV
@ -33,7 +23,6 @@ message(STATUS "OpenCV_DIR: ${OpenCV_DIR}")
find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})
add_executable(resnet_demo
main.cpp
postprocess.cpp
@ -42,5 +31,5 @@ add_executable(resnet_demo
target_link_libraries(resnet_demo
${OpenCV_LIBS}
nnsdk
${AMLNN_LIBRARY}
)

View file

@ -58,6 +58,20 @@ example
#### 1. Compile
#### AMLNN SDK Setup
Resolve the AMLNN nnsdk dependency using one of the following methods:
- **Priority 1 Environment variable (recommended)**
```bash
export AMLNN_HOME=/path/to/amlnn-toolkit
```
- **Priority 3 Sibling directory fallback** *(automatic)*
Place `amlnn-toolkit` as a sibling to `amlnn-model-playground`:
```bash
git clone git@github.com:Amlogic-NN/amlnn-toolkit.git ../amlnn-toolkit
```
**Prerequisites:**
- Android NDK (r25e recommended)
- `ANDROID_NDK_PATH` environment variable set

View file

@ -65,7 +65,8 @@ echo "BUILD_DIR: ${BUILD_DIR}"
mkdir -p ${BUILD_DIR}
cd ${BUILD_DIR}
cmake ../../src \
cmake -Wno-dev ../../src \
-DAMLNN_HOME=${AMLNN_HOME:-} \
-DCMAKE_TOOLCHAIN_FILE=${ANDROID_NDK_PATH}/build/cmake/android.toolchain.cmake \
-DANDROID_ABI=${TARGET_ABI} \
-DANDROID_PLATFORM=android-24 \

View file

@ -1,31 +1,21 @@
cmake_minimum_required(VERSION 3.5)
cmake_minimum_required(VERSION 3.10...3.27)
project(retinaface_demo)
set(CMAKE_CXX_STANDARD 17)
# Set NNSDK path
if(NOT DEFINED NNSDK_DIR)
set(NNSDK_DIR "${CMAKE_SOURCE_DIR}/../../../../../amlnn-toolkit/nn_runtime/nnsdk")
endif()
set(NNSDK_ROOT "${NNSDK_DIR}")
message(STATUS "NNSDK_ROOT: ${NNSDK_ROOT}")
list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/../../../../cmake")
find_package(AMLNN REQUIRED)
include_directories(${AMLNN_INCLUDE_DIR})
link_directories(${AMLNN_LIBRARY_DIR})
include_directories(${NNSDK_ROOT}/include)
include_directories(${CMAKE_SOURCE_DIR}/../../../../common)
# Set dependency path
set(3RDPARTY_DIR "${CMAKE_SOURCE_DIR}/../../../../dependency")
if(CMAKE_SYSTEM_NAME STREQUAL "Android")
if (ANDROID_ABI STREQUAL "arm64-v8a")
link_directories(${NNSDK_ROOT}/android/arm64-v8a)
else()
link_directories(${NNSDK_ROOT}/android/armeabi-v7a)
endif()
# Android needs log
link_libraries(log)
elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux")
link_directories(${NNSDK_ROOT}/linux/yocto/aarch64-poky-linux)
endif()
# Find OpenCV
@ -33,7 +23,6 @@ message(STATUS "OpenCV_DIR: ${OpenCV_DIR}")
find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})
add_executable(retinaface_demo
main.cpp
postprocess.cpp
@ -42,5 +31,5 @@ add_executable(retinaface_demo
target_link_libraries(retinaface_demo
${OpenCV_LIBS}
nnsdk
${AMLNN_LIBRARY}
)

View file

@ -0,0 +1,34 @@
# Whisper
## 4. Demo Run
### CPP
#### 1. Compile
#### AMLNN SDK Setup
Resolve the AMLNN nnsdk dependency using one of the following methods:
- **Priority 1 Environment variable (recommended)**
```bash
export AMLNN_HOME=/path/to/amlnn-toolkit
```
- **Priority 3 Sibling directory fallback** *(automatic)*
Place `amlnn-toolkit` as a sibling to `amlnn-model-playground`:
```bash
git clone git@github.com:Amlogic-NN/amlnn-toolkit.git ../amlnn-toolkit
```
**Prerequisites:**
- Android NDK r25c
- `ANDROID_NDK_PATH` environment variable set
**Build:**
```bash
# Build for arm64-v8a
cd examples/whisper/cpp
./build-android.sh -a arm64-v8a
```
The executable will be generated in `build/android/`.

View file

@ -65,7 +65,8 @@ echo "BUILD_DIR: ${BUILD_DIR}"
mkdir -p ${BUILD_DIR}
cd ${BUILD_DIR}
cmake ../../src \
cmake -Wno-dev ../../src \
-DAMLNN_HOME=${AMLNN_HOME:-} \
-DCMAKE_TOOLCHAIN_FILE=${ANDROID_NDK_PATH}/build/cmake/android.toolchain.cmake \
-DANDROID_ABI=${TARGET_ABI} \
-DANDROID_PLATFORM=android-24 \

View file

@ -1,31 +1,21 @@
cmake_minimum_required(VERSION 3.5)
cmake_minimum_required(VERSION 3.10...3.27)
project(whisper_demo)
set(CMAKE_CXX_STANDARD 17)
# Set NNSDK path
if(NOT DEFINED NNSDK_DIR)
set(NNSDK_DIR "${CMAKE_SOURCE_DIR}/../../../../../amlnn-toolkit/nn_runtime/nnsdk")
endif()
set(NNSDK_ROOT "${NNSDK_DIR}")
message(STATUS "NNSDK_ROOT: ${NNSDK_ROOT}")
list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/../../../../cmake")
find_package(AMLNN REQUIRED)
include_directories(${AMLNN_INCLUDE_DIR})
link_directories(${AMLNN_LIBRARY_DIR})
include_directories(${NNSDK_ROOT}/include)
include_directories(${CMAKE_SOURCE_DIR}/../../../../common)
# Set 3rdparty path
set(3RDPARTY_DIR "${CMAKE_SOURCE_DIR}/../../../../dependency")
if(CMAKE_SYSTEM_NAME STREQUAL "Android")
if (ANDROID_ABI STREQUAL "arm64-v8a")
link_directories(${NNSDK_ROOT}/android/arm64-v8a)
else()
link_directories(${NNSDK_ROOT}/android/armeabi-v7a)
endif()
# Android needs log
link_libraries(log)
elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux")
link_directories(${NNSDK_ROOT}/linux/yocto/aarch64-poky-linux)
endif()
add_executable(${PROJECT_NAME}
@ -38,7 +28,7 @@ add_executable(${PROJECT_NAME}
)
target_link_libraries(${PROJECT_NAME}
nnsdk
${AMLNN_LIBRARY}
dl
m
)

View file

@ -0,0 +1,34 @@
# YOLOE
## 4. Demo Run
### CPP
#### 1. Compile
#### AMLNN SDK Setup
Resolve the AMLNN nnsdk dependency using one of the following methods:
- **Priority 1 Environment variable (recommended)**
```bash
export AMLNN_HOME=/path/to/amlnn-toolkit
```
- **Priority 3 Sibling directory fallback** *(automatic)*
Place `amlnn-toolkit` as a sibling to `amlnn-model-playground`:
```bash
git clone git@github.com:Amlogic-NN/amlnn-toolkit.git ../amlnn-toolkit
```
**Prerequisites:**
- Android NDK r25c
- `ANDROID_NDK_PATH` environment variable set
**Build:**
```bash
# Build for arm64-v8a
cd examples/yoloe/cpp
./build-android.sh -a arm64-v8a
```
The executable will be generated in `build/android/`.

View file

@ -65,7 +65,8 @@ echo "BUILD_DIR: ${BUILD_DIR}"
mkdir -p ${BUILD_DIR}
cd ${BUILD_DIR}
cmake ../../src \
cmake -Wno-dev ../../src \
-DAMLNN_HOME=${AMLNN_HOME:-} \
-DCMAKE_TOOLCHAIN_FILE=${ANDROID_NDK_PATH}/build/cmake/android.toolchain.cmake \
-DANDROID_ABI=${TARGET_ABI} \
-DANDROID_PLATFORM=android-24 \

View file

@ -1,31 +1,21 @@
cmake_minimum_required(VERSION 3.5)
cmake_minimum_required(VERSION 3.10...3.27)
project(yoloe_demo)
set(CMAKE_CXX_STANDARD 17)
# Set NNSDK path
if(NOT DEFINED NNSDK_DIR)
set(NNSDK_DIR "${CMAKE_SOURCE_DIR}/../../../../../amlnn-toolkit/nn_runtime/nnsdk")
endif()
set(NNSDK_ROOT "${NNSDK_DIR}")
message(STATUS "NNSDK_ROOT: ${NNSDK_ROOT}")
list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/../../../../cmake")
find_package(AMLNN REQUIRED)
include_directories(${AMLNN_INCLUDE_DIR})
link_directories(${AMLNN_LIBRARY_DIR})
include_directories(${NNSDK_ROOT}/include)
include_directories(${CMAKE_SOURCE_DIR}/../../../../common)
# Set dependency path
set(3RDPARTY_DIR "${CMAKE_SOURCE_DIR}/../../../../dependency")
if(CMAKE_SYSTEM_NAME STREQUAL "Android")
if (ANDROID_ABI STREQUAL "arm64-v8a")
link_directories(${NNSDK_ROOT}/android/arm64-v8a)
else()
link_directories(${NNSDK_ROOT}/android/armeabi-v7a)
endif()
# Android needs log
link_libraries(log)
elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux")
link_directories(${NNSDK_ROOT}/linux/yocto/aarch64-poky-linux)
endif()
# Find OpenCV
@ -40,5 +30,5 @@ add_executable(yoloe_demo
target_link_libraries(yoloe_demo
${OpenCV_LIBS}
nnsdk
${AMLNN_LIBRARY}
)

View file

@ -70,6 +70,20 @@ example
#### 1. Compile
#### AMLNN SDK Setup
Resolve the AMLNN nnsdk dependency using one of the following methods:
- **Priority 1 Environment variable (recommended)**
```bash
export AMLNN_HOME=/path/to/amlnn-toolkit
```
- **Priority 3 Sibling directory fallback** *(automatic)*
Place `amlnn-toolkit` as a sibling to `amlnn-model-playground`:
```bash
git clone git@github.com:Amlogic-NN/amlnn-toolkit.git ../amlnn-toolkit
```
**Prerequisites:**
- Android NDK (r25e recommended)
- `ANDROID_NDK_PATH` environment variable set

View file

@ -65,7 +65,8 @@ echo "BUILD_DIR: ${BUILD_DIR}"
mkdir -p ${BUILD_DIR}
cd ${BUILD_DIR}
cmake ../../src \
cmake -Wno-dev ../../src \
-DAMLNN_HOME=${AMLNN_HOME:-} \
-DCMAKE_TOOLCHAIN_FILE=${ANDROID_NDK_PATH}/build/cmake/android.toolchain.cmake \
-DANDROID_ABI=${TARGET_ABI} \
-DANDROID_PLATFORM=android-24 \

View file

@ -1,31 +1,21 @@
cmake_minimum_required(VERSION 3.5)
cmake_minimum_required(VERSION 3.10...3.27)
project(yolo11_demo)
set(CMAKE_CXX_STANDARD 17)
# Set NNSDK path
if(NOT DEFINED NNSDK_DIR)
set(NNSDK_DIR "${CMAKE_SOURCE_DIR}/../../../../../amlnn-toolkit/nn_runtime/nnsdk")
endif()
set(NNSDK_ROOT "${NNSDK_DIR}")
message(STATUS "NNSDK_ROOT: ${NNSDK_ROOT}")
list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/../../../../cmake")
find_package(AMLNN REQUIRED)
include_directories(${AMLNN_INCLUDE_DIR})
link_directories(${AMLNN_LIBRARY_DIR})
include_directories(${NNSDK_ROOT}/include)
include_directories(${CMAKE_SOURCE_DIR}/../../../../common)
# Set dependency path
set(3RDPARTY_DIR "${CMAKE_SOURCE_DIR}/../../../../dependency")
if(CMAKE_SYSTEM_NAME STREQUAL "Android")
if (ANDROID_ABI STREQUAL "arm64-v8a")
link_directories(${NNSDK_ROOT}/android/arm64-v8a)
else()
link_directories(${NNSDK_ROOT}/android/armeabi-v7a)
endif()
# Android needs log
link_libraries(log)
elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux")
link_directories(${NNSDK_ROOT}/linux/yocto/aarch64-poky-linux)
endif()
# Find OpenCV
@ -33,7 +23,6 @@ message(STATUS "OpenCV_DIR: ${OpenCV_DIR}")
find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})
add_executable(yolo11_demo
main.cpp
postprocess.cpp
@ -42,5 +31,5 @@ add_executable(yolo11_demo
target_link_libraries(yolo11_demo
${OpenCV_LIBS}
nnsdk
${AMLNN_LIBRARY}
)

View file

@ -70,6 +70,20 @@ example
#### 1. Compile
#### AMLNN SDK Setup
Resolve the AMLNN nnsdk dependency using one of the following methods:
- **Priority 1 Environment variable (recommended)**
```bash
export AMLNN_HOME=/path/to/amlnn-toolkit
```
- **Priority 3 Sibling directory fallback** *(automatic)*
Place `amlnn-toolkit` as a sibling to `amlnn-model-playground`:
```bash
git clone git@github.com:Amlogic-NN/amlnn-toolkit.git ../amlnn-toolkit
```
**Prerequisites:**
- Android NDK (r25e recommended)
- `ANDROID_NDK_PATH` environment variable set

View file

@ -65,13 +65,13 @@ echo "BUILD_DIR: ${BUILD_DIR}"
mkdir -p ${BUILD_DIR}
cd ${BUILD_DIR}
cmake ../../src \
cmake -Wno-dev ../../src \
-DAMLNN_HOME=${AMLNN_HOME:-} \
-DCMAKE_TOOLCHAIN_FILE=${ANDROID_NDK_PATH}/build/cmake/android.toolchain.cmake \
-DANDROID_ABI=${TARGET_ABI} \
-DANDROID_PLATFORM=android-24 \
-DCMAKE_BUILD_TYPE=Release \
-DOpenCV_DIR=${ROOT_PWD}/../../../dependency/opencv/opencv-android-sdk-build/sdk/native/jni/abi-${TARGET_ABI} \
-DNNSDK_DIR=${ROOT_PWD}/../../../../amlnn-toolkit/nn_runtime/nnsdk
make -j4

View file

@ -1,31 +1,21 @@
cmake_minimum_required(VERSION 3.5)
cmake_minimum_required(VERSION 3.10...3.27)
project(yolo_world_demo)
set(CMAKE_CXX_STANDARD 17)
# Set NNSDK path
if(NOT DEFINED NNSDK_DIR)
set(NNSDK_DIR "${CMAKE_SOURCE_DIR}/../../../../../amlnn-toolkit/nn_runtime/nnsdk")
endif()
set(NNSDK_ROOT "${NNSDK_DIR}")
message(STATUS "NNSDK_ROOT: ${NNSDK_ROOT}")
list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/../../../../cmake")
find_package(AMLNN REQUIRED)
include_directories(${AMLNN_INCLUDE_DIR})
link_directories(${AMLNN_LIBRARY_DIR})
include_directories(${NNSDK_ROOT}/include)
include_directories(${CMAKE_SOURCE_DIR}/../../../../common)
# Set 3rdparty path
set(3RDPARTY_DIR "${CMAKE_SOURCE_DIR}/../../../../dependency")
if(CMAKE_SYSTEM_NAME STREQUAL "Android")
if (ANDROID_ABI STREQUAL "arm64-v8a")
link_directories(${NNSDK_ROOT}/android/arm64-v8a)
else()
link_directories(${NNSDK_ROOT}/android/armeabi-v7a)
endif()
# Android needs log
link_libraries(log)
elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux")
link_directories(${NNSDK_ROOT}/linux/yocto/aarch64-poky-linux)
endif()
# Find OpenCV
@ -42,5 +32,5 @@ add_executable(yolov8_demo
target_link_libraries(yolov8_demo
${OpenCV_LIBS}
nnsdk
${AMLNN_LIBRARY}
)

View file

@ -4,6 +4,20 @@
#### 1. Compile
#### AMLNN SDK Setup
Resolve the AMLNN nnsdk dependency using one of the following methods:
- **Priority 1 Environment variable (recommended)**
```bash
export AMLNN_HOME=/path/to/amlnn-toolkit
```
- **Priority 3 Sibling directory fallback** *(automatic)*
Place `amlnn-toolkit` as a sibling to `amlnn-model-playground`:
```bash
git clone git@github.com:Amlogic-NN/amlnn-toolkit.git ../amlnn-toolkit
```
**Prerequisites:**
- Android NDK (r25e recommended)
- `ANDROID_NDK_PATH` environment variable set

View file

@ -65,7 +65,8 @@ echo "BUILD_DIR: ${BUILD_DIR}"
mkdir -p ${BUILD_DIR}
cd ${BUILD_DIR}
cmake ../../src \
cmake -Wno-dev ../../src \
-DAMLNN_HOME=${AMLNN_HOME:-} \
-DCMAKE_TOOLCHAIN_FILE=${ANDROID_NDK_PATH}/build/cmake/android.toolchain.cmake \
-DANDROID_ABI=${TARGET_ABI} \
-DANDROID_PLATFORM=android-24 \

View file

@ -1,31 +1,21 @@
cmake_minimum_required(VERSION 3.5)
cmake_minimum_required(VERSION 3.10...3.27)
project(yolo_world_demo)
set(CMAKE_CXX_STANDARD 17)
# Set NNSDK path
if(NOT DEFINED NNSDK_DIR)
set(NNSDK_DIR "${CMAKE_SOURCE_DIR}/../../../../../amlnn-toolkit/nn_runtime/nnsdk")
endif()
set(NNSDK_ROOT "${NNSDK_DIR}")
message(STATUS "NNSDK_ROOT: ${NNSDK_ROOT}")
list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/../../../../cmake")
find_package(AMLNN REQUIRED)
include_directories(${AMLNN_INCLUDE_DIR})
link_directories(${AMLNN_LIBRARY_DIR})
include_directories(${NNSDK_ROOT}/include)
include_directories(${CMAKE_SOURCE_DIR}/../../../../common)
# Set 3rdparty path
set(3RDPARTY_DIR "${CMAKE_SOURCE_DIR}/../../../../dependency")
if(CMAKE_SYSTEM_NAME STREQUAL "Android")
if (ANDROID_ABI STREQUAL "arm64-v8a")
link_directories(${NNSDK_ROOT}/android/arm64-v8a)
else()
link_directories(${NNSDK_ROOT}/android/armeabi-v7a)
endif()
# Android needs log
link_libraries(log)
elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux")
link_directories(${NNSDK_ROOT}/linux/yocto/aarch64-poky-linux)
endif()
# Find OpenCV
@ -41,5 +31,5 @@ add_executable(yolo_world_demo
target_link_libraries(yolo_world_demo
${OpenCV_LIBS}
nnsdk
${AMLNN_LIBRARY}
)

View file

@ -65,7 +65,8 @@ echo "BUILD_DIR: ${BUILD_DIR}"
mkdir -p ${BUILD_DIR}
cd ${BUILD_DIR}
cmake ../../src \
cmake -Wno-dev ../../src \
-DAMLNN_HOME=${AMLNN_HOME:-} \
-DCMAKE_TOOLCHAIN_FILE=${ANDROID_NDK_PATH}/build/cmake/android.toolchain.cmake \
-DANDROID_ABI=${TARGET_ABI} \
-DANDROID_PLATFORM=android-24 \

View file

@ -1,31 +1,21 @@
cmake_minimum_required(VERSION 3.5)
cmake_minimum_required(VERSION 3.10...3.27)
project(yolo11_demo)
set(CMAKE_CXX_STANDARD 17)
# Set NNSDK path
if(NOT DEFINED NNSDK_DIR)
set(NNSDK_DIR "${CMAKE_SOURCE_DIR}/../../../../../amlnn-toolkit/nn_runtime/nnsdk")
endif()
set(NNSDK_ROOT "${NNSDK_DIR}")
message(STATUS "NNSDK_ROOT: ${NNSDK_ROOT}")
list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/../../../../cmake")
find_package(AMLNN REQUIRED)
include_directories(${AMLNN_INCLUDE_DIR})
link_directories(${AMLNN_LIBRARY_DIR})
include_directories(${NNSDK_ROOT}/include)
include_directories(${CMAKE_SOURCE_DIR}/../../../../common)
# Set dependency path
set(3RDPARTY_DIR "${CMAKE_SOURCE_DIR}/../../../../dependency")
if(CMAKE_SYSTEM_NAME STREQUAL "Android")
if (ANDROID_ABI STREQUAL "arm64-v8a")
link_directories(${NNSDK_ROOT}/android/arm64-v8a)
else()
link_directories(${NNSDK_ROOT}/android/armeabi-v7a)
endif()
# Android needs log
link_libraries(log)
elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux")
link_directories(${NNSDK_ROOT}/linux/yocto/aarch64-poky-linux)
endif()
# Find OpenCV
@ -33,7 +23,6 @@ message(STATUS "OpenCV_DIR: ${OpenCV_DIR}")
find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})
add_executable(yolox_demo
main.cpp
postprocess.cpp
@ -42,5 +31,5 @@ add_executable(yolox_demo
target_link_libraries(yolox_demo
${OpenCV_LIBS}
nnsdk
${AMLNN_LIBRARY}
)