基于香橙派AI pro的YOLO11推理部署(调用ACLLite实现,c++和python源码)
收藏回复举报
基于香橙派AI pro的YOLO11推理部署(调用ACLLite实现,c++和python源码)
发表于2025-12-30 11:50:11
0 查看

YOLOv11 AscendCL 应用

一、项目简介

本项目已经开源位于:gitcode.com/BB_out_snow/yolov11_acl_app

项目推理的模型为 yolo11n-pose。

未作推理效果评测

本项目实现了YOLOv11模型在于华为CANN ACL接口上实现模型推理,减少对torch的依赖,使得部署更加轻量化。项目提供C++和Python两个版本的实现,均使用华为ACL框架进行模型推理,包含完整的预处理和后处理流程,支持批量图像处理,并集成骨架连接可视化。

二、项目基础配置

组件版本
昇腾开发套件香橙派AI pro 8T 16G
昇腾芯片310B4
操作系统系统openeluer22.03
Ascend-cann-toolkit版本8.3.RC1
Ascend-cann-kernels-310b版本8.3.RC1
python版本python>=3.9
python主要依赖opencv-python numpy<=2.0.0

模型训练时的配置

yolo task=pose mode=train model=yolo11_pose_train.yaml data=yolo11_pose_data.yaml epochs=300 #yolo11_pose_train.yaml为模型的yolo11的默认模型网络,未作修改

yolo11n-pose.pt模型转换为onnx模型时的参数配置

yolo export model=yolov11_pose_20251101.pt format=onnx opset=11 simplify

yolo11n-pose.onnx模型转换为om模型时的参数配置

atc --model=yolov11_pose_20251104.onnx --framework=5 --output=yolov11n_base_310B4 --input_shape="images:1,3,640,640"  --soc_version=Ascend310B4

2.1 CANN环境配置

1.删除旧版本的CANN环境

# 切换到root用户
su
# 切换目录
cd /usr/local/Ascend/ascend-toolkit/
# 删除旧版本的CANN
rm -rf *

2.下载新版本的CANN

# 下载链接
# hiascend.com/developer/download/community/result?module=cann

# 下载的文件名称如下
Ascend-cann-toolkit_8.3.RC1_linux-aarch64.run
Ascend-cann-kernels-310b_8.3.RC1_linux-aarch64.run

3.给CANN安装程序赋权

chmod +x ./Ascend-cann-toolkit_8.3.RC1_linux-aarch64.run
chmod +x ./Ascend-cann-kernels-310b_8.3.RC1_linux-aarch64.run

4.运行CANN安装程序

./Ascend-cann-toolkit_8.3.RC1_linux-aarch64.run --install
./Ascend-cann-kernels-310b_8.3.RC1_linux-aarch64.run --install
# 中间遇到的Y/N选择,全部按Y键

5.配置环境变量

source /usr/local/Ascend/ascend-toolkit/set_env.sh

2.2 ACL环境配置

1. 安装ffmpeg

1.通过如下命令查询OS版本

lsb_release -a

2.根据查询结果选择安装方式

apt安装:Ubuntu 22.04及以上版本的用户建议使用此方式安装

apt-get install ffmpeg libavcodec-dev libswscale-dev libavdevice-dev

yum安装:OpenEuler 22.03及以上的用户建议使用此方式安装

yum install ffmpeg ffmpeg-devel
# 将yum安装的ffmpeg头文件软链到系统能默认识别的路径
ln -s /usr/include/ffmpeg/* /usr/include/

3.源码编译安装

# 其他用户建议使用此方式安装
wget ffmpeg.org/releases/ffmpeg-4.2.9.tar.gz
tar -zxvf ffmpeg-4.2.9.tar.gz
cd ffmpeg-4.2.9
./configure --disable-static --enable-shared --disable-doc --enable-ffplay --enable-ffprobe --enable-avdevice --disable-debug --enable-demuxers --enable-parsers --enable-protocols --enable-small --enable-avresample
make -j8
sudo make install

4.为保证程序能识别动态库,请在/etc/ld.so.conf.d下添加ffmpeg.conf配置

cd /etc/ld.so.conf.d
# 创建ffmpeg.conf
vim ffmpeg.conf
# 添加内容:/usr/local/lib
# 保存:wq
# 生效配置文件:
ldconfig
# 设置ffmpeg安装路径环境变量,请替换为ffmpeg的实际安装路径
export FFMPEG_PATH=/usr/local/lib

2. 克隆本项目

1.克隆本项目

git clone gitcode.com/BB_out_snow/yolov11_acl_app.git

2.进入本项目的工作目录

cd /home/HwHiAiUser/yolov11_acl_app

3. ACLLite_python环境编译

1.进入python的工作目录

cd /home/HwHiAiUser/yolov11_acl_app/yolov11_acl_by_python

2.拉取ACLLite仓库,并进入其中

git clone gitee.com/ascend/ACLLite.git
cd ACLLite

3.设置环境变量,其中DDK_PATH中/usr/local请替换为实际CANN包的安装路径

# 设置环境变量,其中DDK_PATH中/usr/local请替换为实际CANN包的安装路径
export DDK_PATH=/usr/local/Ascend/ascend-toolkit/latest
export NPU_HOST_LIB=$DDK_PATH/runtime/lib64/stub

4.安装,编译过程中会将库文件安装到/lib目录下,所以会有sudo命令,需要输入密码

bash build_so.sh

4. ACLLite_C++环境编译

1.切换为root管理员

su

2.安装opencv

sudo yum install  opencv

3.环境变量配置

# 设置CPU架构
export CPU_ARCH=`arch`
# 设置第三方库路径
export THIRD_PART_PATH=/usr/local/Ascend/thirdpart/${CPU_ARCH}
# 运行时链接库文件
export LD_LIBRARY_PATH=${THIRD_PART_PATH}/lib:$LD_LIBRARY_PATH
# 设置安装目录
export INSTALL_DIR=/usr/local/Ascend/ascend-toolkit/latest

4.创建依赖文件夹

mkdir -p ${THIRD_PART_PATH}

5.下载samples源码

# sudo yum install git
cd /usr/local
git clone gitee.com/ascend/samples.git

6.拷贝公共文件到samples相关依赖路径中

cp -r /usr/local/samples/common ${THIRD_PART_PATH}

7.下载x264

cd /usr/local
git clone https://code.videolan.org/videolan/x264.git
cd x264
# 安装x264
./configure --enable-shared --disable-asm
make
sudo make install
# 安装成功之后,libx264.so.164可能是163、165、166等,去/usr/local/lib目录确定名称
sudo cp /usr/local/lib/libx264.so.164 /lib

8.编译并安装acllite

cd /usr/local/samples/cplusplus/common/acllite/
make
make install

2.3 运行python 推理

1.回到python工作目录

cd /home/HwHiAiUser/yolov11_acl_app/yolov11_acl_by_python

2.运行python版本的yolov11 pose

python yolov11_acllite-BAK.py

3.可以在yolov11_acl_by_python/om/check中看到检测结果

cd /home/HwHiAiUser/yolov11_acl_app/yolov11_acl_by_python/om/check

2.4 编译 c++程序并运行推理

1.进入本项目的目录

cd /home/HwHiAiUser/yolov11_acl_app

2.进入本项目的yolov11的acl编译文件夹

cd /home/HwHiAiUser/yolov11_acl_app/yolov11_acl_by_c/src

3.修改CMakeLists.txt里面的内容,改为实际路径

# Copyright (c) Huawei Technologies Co., Ltd. 2019. All rights reserved.

cmake_minimum_required(VERSION 3.5.1)

project(sampleYOLOV8)

add_compile_options(-std=c++11)

add_definitions(-DENABLE_DVPP_INTERFACE)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY  "../out")
set(CMAKE_CXX_FLAGS_DEBUG "-fPIC -O0 -g -Wall")
set(CMAKE_CXX_FLAGS_RELEASE "-fPIC -O2 -Wall")

set(INC_PATH $ENV{DDK_PATH})
if (NOT DEFINED ENV{DDK_PATH})
    set(INC_PATH "/usr/local/Ascend/ascend-toolkit/8.3.RC1")
    message(STATUS "set default INC_PATH: ${INC_PATH}")
else()
    message(STATUS "set INC_PATH: ${INC_PATH}")
endif ()

set(LIB_PATH $ENV{NPU_HOST_LIB})
if (NOT DEFINED ENV{NPU_HOST_LIB})
    set(LIB_PATH "/usr/local/Ascend/ascend-toolkit/8.3.RC1/runtime/lib64")
    message(STATUS "set default LIB_PATH: ${LIB_PATH}")
else()
    message(STATUS "set LIB_PATH: ${LIB_PATH}")
endif ()

set(THIRDPART $ENV{THIRDPART_PATH})
if (NOT DEFINED ENV{THIRDPART_PATH})
    set(THIRDPART "/usr/local/Ascend/thirdpart/aarch64")
    message(STATUS "set default THIRDPART: ${THIRDPART}")
else()
    message(STATUS "set THIRDPART: ${THIRDPART}")
endif()

include_directories(
   ${INC_PATH}/runtime/include/
   ${INC_PATH}/include/
   /usr/local/include/opencv4/
   ${THIRDPART}/acllite/include/
   ${THIRDPART}/include/acllite/
)

link_directories(
    ${THIRDPART}/acllite/lib/
    ${THIRDPART}/lib/
    ${LIB_PATH}
    /usr/local/lib
)

add_executable(main
        sampleYOLOV8.cpp)

add_executable(pose_main
        sampleYOLOV11Pose.cpp)

if(target STREQUAL "Simulator_Function")
    target_link_libraries(main funcsim)
    target_link_libraries(pose_main funcsim)
else()
    target_link_libraries(main ascendcl acl_dvpp stdc++ acllite opencv_core opencv_imgproc opencv_imgcodecs dl rt)
    target_link_libraries(pose_main ascendcl acl_dvpp stdc++ acllite opencv_core opencv_imgproc opencv_imgcodecs dl rt)
endif()

install(TARGETS main pose_main DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})

4.进行编译

cd /home/HwHiAiUser/yolov11_acl_app/yolov11_acl_by_c/src

cmake .

make

5.运行yolov11的执行文件

# 运行程序
../out/pose_main ../model/yolov11_pose_20251104_640310B4.om ../data/bus.jpg

6.查看检测结果

cd /home/HwHiAiUser/yolov11_acl_app/yolov11_acl_by_c/src

三、效果评测

3.1 数据集

评估数据集位于yolov11_acl_by_python/data/目录中: yolov11_acl_by_python/data/images:包含100张评估图像 yolov11_acl_by_python/data/labels:包含对应的标签文件

来源于COCO2017数据集

https://www.kaggle.com/datasets/asad11914/coco-2017-keypoints?resource=download)

3.2输出结果

切换到工作目录

cd /home/HwHiAiUser/yolov11_acl_app/yolov11_acl_by_python

运行评测程序

python yolov11_om_point_aclite.py

评估结果保存在yolov11_acl_by_python/eval_outputs/目录中:

  • evaluation_results.json:详细的评估结果
  • evaluation_summary.json:评估摘要
  • evaluation_results.csv:CSV格式的评估结果

四、主要参考项目

  1. 昇腾
https://www.hiascend.com/


  1. 基于香橙派AI PRO的yolov10推理迁移
https://gitee.com/aspartamej/yolov10_om_infer
  1. AScend 昇腾万里,让智能无所不及
https://gitee.com/ascend
  1. 推理应用开发与部署(AscendCL)
https://gitee.com/ascend/samples

本帖最后由 匿名用户2025/12/30 14:27:03 编辑

我要发帖子