海思SS928搭建NNN环境并添加opencv库

环境要求:ubuntu18.04

参考文件:

《ATC工具使用指南》《应用开发指南》《驱动和开发环境安装指南》

《昇腾模型压缩工具使用指南(ONNX)》

交叉编译器的安装

直接./aarch64-mix210-linux.install

vi /etc/profile

source /etc/profile使之生效

atc安装(非root)

1:检查相关依赖

gcc --version

g++ --version

cmake --version

make --version

unzip --version

dpkg -l build-essential | grep build-essential | grep ii

dpkg -l zlib1g-dev| grep zlib1g-dev| grep ii

dpkg -l libbz2-dev| grep libbz2-dev| grep ii

dpkg -l libsqlite3-dev| grep libsqlite3-dev| grep ii

dpkg -l libssl-dev| grep libssl-dev| grep ii

dpkg -l libxslt1-dev| grep libxslt1-dev| grep ii

dpkg -l libffi-dev| grep libffi-dev| grep ii

如没有安装可以使用sudo apt-get install xxxx进行安装

2:安装python3.7.5

1)获取安装包--wget https://www.python.org/ftp/python/3.7.5/Python-3.7.5.tgz

  1. 解压 tar -xzvf Python-3.7.5.tgz

cd  Python-3.7.5

./configure --prefix=/usr/local/python3.7.5 --enable-loadable-sqlite-extensions --enable-shared

make

sudo make install

  1. 设置软连接

sudo ln -s /usr/local/python3.7.5/bin/python3 /usr/local/python3.7.5/bin/python3.7.5

sudo ln -s /usr/local/python3.7.5/bin/pip3 /usr/local/python3.7.5/bin/pip3.7.5

  1. 设置环境变量,非root

vi ~/.bashrc

在最后加入

#用于设置 python3.7.5 库文件路径

export LD_LIBRARY_PATH=/usr/local/python3.7.5/lib:$LD_LIBRARY_PATH

#如果用户环境存在多个 python3 版本,则指定使用 python3.7.5 版本

export PATH=/usr/local/python3.7.5/bin:$PATH

source ~/.bashrc

  1. 测试一下

python3.7.5 --version

pip3.7.5 install --upgrade(升级pip)

pip3.7.5 --version

3)安装相关的依赖

4:./Ascend-cann-toolkit_5.20.t6.2.b060_linux-x86_64.run --install

5:配置环境变量

 source /home/warren/Ascend/ascend-toolkit/latest/x86_64-linux/bin/setenv.bash

:6:安装aarch64-mix210-linux

7:若需要卸载

bash /home/warren/Ascend/ascend-toolkit/latest/x86_64-linux/script/toolkit_uninstall.sh

atc使用:

1:首先设置环境变量

source /home/warren/Ascend/ascend-toolkit/latest/x86_64-linux/bin/setenv.bash

2:框架转换案例

atc --model=/home/warren/ss928/model_onnx/resnet101_v11.onnx \

--soc_version=OPTG  --framework=5 \

--output=/home/warren/ss928/model_onnx/out \

--input_shape="input:-1,3,224,224"  --dynamic_batch_size="1,2,4,8"

amct(主要用于量化)安装

  1. 所需文件
  2. 所需依赖

3)pip3 install amct_onnx-0.3.2-py3-none-linux_x86_64.whl

可以查看是否安装成功

  1. 编译自定义算子

4:cd amct_onnx_op/ && python3 setup.py build(请使用root权限)

至此完成

转换案例

1:获取sample--> samples: CANN Samples

2:文件结构如下,其中data里放矫正的图片

3:python3 ./src/resnet-101_calibration.py(请使用root)

至此量化完成。

应用开发测试

PC端:

下载sample

https://gitee.com/ascend/samples/tree/master/cplusplus/level2_simple_inference/1_classification/resnet50_imagenet_classification

1:添加环境变量:

export DDK_PATH=$HOME/Ascend/ascend-toolkit/latest

export NPU_HOST_LIB=$DDK_PATH/runtime/lib64/stub

2:创建build目录

mkdir -p build/intermediates/host

3:cmake ../../../src -DCMAKE_CXX_COMPILER=aarch64-mix210-linux-g++ -DCMAKE_SKIP_RPATH=TRUE

板端

设置环境变量

export LD_LIBRARY_PATH=/opt/sd/lib_svp

export ASCEND_AACPU_KERNEL_PATH=/opt/sd/lib_svp

直接运行./main

2:./main

添加opencv库

默认没有带opencv库,但是实际项目中需要用到opencv库,因此添加一下此库;

1:编译opencv源码,这里具体可以参考

海思Hi3516移植opencv以及错误调试_海思hi3516摄像头开发-CSDN博客

2:在工程的根目录下新建一个3rdparty文件用于存放第三方的库,将编译安装好的库拷贝至3rdparty下并命名为opencv

3:修改src下的CMakeLists.txt,重点可以看一下#opencv的部分,总的说就是查找opencv的库,并链接到库即可

# CMake lowest version requirement
cmake_minimum_required(VERSION 3.5.1)

# project information
project(ACL_CLASSIFICATION_RESNET50)

# Compile options
add_compile_options(
    -std=c++11
    -fPIC
    -fstack-protector-all
    -D_FORTIFY_SOURCE=2 -O2
    )

# Specify target generation path
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY  "../../../out")
set(CMAKE_CXX_FLAGS_DEBUG "-fPIC -O0 -g -Wall")
set(CMAKE_CXX_FLAGS_RELEASE "-fPIC -O2 -Wall -s")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-z,relro,-z,now,-z,noexecstack -fPIE -pie")
set(CMAKE_SKIP_RPATH TRUE)

# Header path
include_directories(
$ENV{DDK_PATH}/acllib/include/
    ../inc/
    ../3rdparty/opencv/opencv-3.4.3/lib
)

# add host lib path
if (target MATCHES "Simulator_Function" OR target MATCHES "Simulator_Instruction" OR target MATCHES "Simulator_Performance")
    set(ENV{NPU_HOST_LIB} $ENV{DDK_PATH}/toolkit/tools/sim/lib)
else()
    set(ENV{NPU_HOST_LIB} $ENV{DDK_PATH}/acllib/lib64/stub) #this case
endif()

# opencv
set(OpenCV_DIR "../3rdparty/opencv/opencv-3.4.3/share/OpenCV")
# 查找opencv的path
find_package(OpenCV REQUIRED)
# 打印opencv的相关信息
message(STATUS "OpenCV library status:")
message(STATUS "version: ${OpenCV_VERSION}")
message(STATUS "libraries: ${OpenCV_LIBS}")
message(STATUS "include path: ${OpenCV_INCLUDE_DIRS}")
#
set(LIB_PATH $ENV{NPU_HOST_LIB} )
MESSAGE(NPU_HOST_LIB=$ENV{NPU_HOST_LIB})
link_directories(${LIB_PATH})
set(OPENCV_LIB ${OpenCV_DIR})
link_directories(${OPENCV_LIB})
message(${OPENCV_LIB})
FILE(GLOB SAMPLE_SRC_FILE *.cpp)

add_executable(main ${SAMPLE_SRC_FILE})

if (target MATCHES "Simulator_Function")
    target_link_libraries(main funcsim  )
elseif (target MATCHES "Simulator_Instruction" OR target MATCHES "Simulator_Performance")
    target_link_libraries(main instsim  )
else()
    target_link_libraries(main svp_acl ss_mpi_sysmem ss_mpi_km pthread securec dl protobuf-c stdc++ ${OpenCV_LIBS})
endif()

install(TARGETS main DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})

4:cmake测试

5:代码测试,头文件包含opencv的头文件

至此opencv库移植成功

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

warren@伟_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值