Orange Pi AI Pro 20T 运行 EdgeAndRobotics/Samples/YOLOV5MultiInput目标检测报错
收藏回复举报
Orange Pi AI Pro 20T 运行 EdgeAndRobotics/Samples/YOLOV5MultiInput目标检测报错
t('forum.solved') 已解决
新人帖
发表于2025-07-22 12:34:23
0 查看

 一、环境安装

1、安装环境 Ubuntu 22.04 - Jammy

2、安装第三方依赖

1)设置环境变量,配置程序编译依赖的头文件,库文件路径 

vi .bashrc 

export CPU_ARCH=`arch` 

export DDK_PATH=/usr/local/Ascend/ascend-toolkit/latest 

export NPU_HOST_LIB=$DDK_PATH/runtime/lib64/stub 

export THIRDPART_PATH=${DDK_PATH}/thirdpart  #代码编译时链接samples所依赖的相关库文件 

export LD_LIBRARY_PATH=/usr/lib:/usr/local/Ascend/ascend-toolkit/latest/acllib/lib64:${THIRDPART_PATH}/lib:$LD_LIBRARY_PATH  #运行时链接库文件 

export INSTALL_DIR=/usr/local/Ascend/ascend-toolkit/latest #CANN软件安装后的文件存储路径,根据安装目录自行修改 

source .bashrc 

 

2)创建THIRDPART_PATH路径 

sudo mkdir -p ${THIRDPART_PATH} 

 

3)下载samples源码仓 

git clone https://gitee.com/ascend/samples.git 

 

4)安装ffmpeg 

sudo dpkg -i ffmpeg_4.4.2-1_arm64.deb 

ffmpeg -hwaccels | grep ascend 

ffmpeg -encoders | grep ascend 

ffmpeg -decoders | grep ascend 

 

5)安装acllite  

先执行安装公共库,再执行编译具体示例 

#安装公共基础库 

cd /samples/cplusplus/common/acllite/   

make clean && make 

sudo -E make install #通过 sudo -E 保留环境变量 

 

#特定模型推理示例 

cd /home/HwHiAiUser/samples/inference/acllite/cplusplus/ 

make 

sudo -E make install 

 

6)设置Swap 内存 

 

7)安装EdgeAndRobotics 

 git clone https://gitee.com/ascend/EdgeAndRobotics.git 

 cd EdgeAndRobotics/Samples/YOLOV5MultiInput 

 

8)AI CPU 和control CPU 的设置 

npu-smi info -t cpu-num-cfg -i 0 -c 0  #查看control CPU 和AI CPU 的分配数量 

npu-smi info -t usages -i 0 -c 0 #查询AI CPU 占用率 

sudo npu-smi set -t cpu-num-cfg -i 0 -c 0 -v 3:1:0 #将3 个CPU 设置为AI CPU 

二、运行案例

# 目标检测(YoloV5s) 

#### 样例介绍 
 使用多路离线视频流(*.mp4)作为应用程序的输入,基于YoloV5s模型对输入视频中的物体做实时检测,将推理结果信息使用imshow方式显示。 

样例代码逻辑如下所示:![输入图片说明](https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/samples-pic/EdgeAndRobotics/%E5%A4%9A%E7%BA%BF%E7%A8%8B%E7%A4%BA%E4%BE%8B%E5%9B%BE%E7%89%87.png) 

 #### 版本配套表 
 

   | 配套                                                         | 版本    | 环境准备指导                                                 | 

   | :------------------------------------------------------------: | :-------: | :------------------------------------------------------------: | 

   | 固件与驱动                                                   | 23.0.0   | [固件驱动安装准备](https://www.hiascend.com/document/detail/zh/CANNCommunityEdition/80RC3alpha003/softwareinst/instg/instg_0005.html?Mode=PmIns&OS=Ubuntu&Software=cannToolKit) | 

   | CANN                                                         | 7.0.0 |[CANN软件包安装准备](https://www.hiascend.com/document/detail/zh/CANNCommunityEdition/80RC3alpha003/softwareinst/instg/instg_0011.html?Mode=PmIns&OS=Ubuntu&Software=cannToolKit)| 

   | Python                                                       | 3.9.2   |[Python安装准备](https://www.hiascend.com/document/detail/zh/CANNCommunityEdition/80RC3alpha003/softwareinst/instg/instg_0064.html?Mode=PmIns&OS=Ubuntu&Software=cannToolKit#ZH-CN_TOPIC_0000002017916412?Mode=PmIns&OS=Ubuntu&Software=cannToolKit)| 

   | 硬件设备型号                                                   | Orange Pi AIpro   | -                                                            | 

 

#### 准备环境 

 

1. 以HwHiAiUser用户登录开发板。 

 

2. 设置环境变量。 

    ``` 

   # 配置程序编译依赖的头文件与库文件路径 

   export DDK_PATH=/usr/local/Ascend/ascend-toolkit/latest  

   export NPU_HOST_LIB=$DDK_PATH/runtime/lib64/stub 

   ``` 

 3. 安装ACLLite库。 
    参考[ACLLite仓](https://gitee.com/ascend/ACLLite)安装ACLLite库。 
 #### 样例下载 
 可以使用以下两种方式下载,请选择其中一种进行源码准备。 
 - 命令行方式下载(**下载时间较长,但步骤简单**)。 
   ``` 

  # 登录开发板,HwHiAiUser用户命令行中执行以下命令下载源码仓。     

  cd ${HOME}      

  git clone https://gitee.com/ascend/EdgeAndRobotics.git 

  # 切换到样例目录 

  cd EdgeAndRobotics/Samples/YOLOV5MultiInput 

  ``` 

 - 压缩包方式下载(**下载时间较短,但步骤稍微复杂**)。 
   ``` 

  # 1. 仓右上角选择 【克隆/下载】 下拉框并选择 【下载ZIP】。      

  # 2. 将ZIP包上传到开发板的普通用户家目录中,【例如:${HOME}/EdgeAndRobotics-master.zip】。       

  # 3. 开发环境中,执行以下命令,解压zip包。       

  cd ${HOME}  

  chmod +x EdgeAndRobotics-master.zip 

  unzip EdgeAndRobotics-master.zip 

  # 4. 切换到样例目录 

  cd EdgeAndRobotics/Samples/YOLOV5MultiInput 

  ``` 

 

#### 运行样例 

 1. 以HwHiAiUser用户登录开发板,切换到当前样例目录。 
 2. 获取PyTorch框架的YoloV5s模型(\*.onnx),并转换为昇腾AI处理器能识别的模型(\*.om)。 

   - 当设备内存**小于8G**时,可设置如下两个环境变量减少atc模型转换过程中使用的进程数,减小内存占用。 

     ``` 

     export TE_PARALLEL_COMPILER=1 

     export MAX_COMPILE_CORE_NUMBER=1 

     ``` 

   - 为了方便下载,在这里直接给出原始模型下载及模型转换命令,可以直接拷贝执行。 

     ``` 

     cd model 

     wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/003_Atc_Models/yolov5s/yolov5s_nms.onnx --no-check-certificate 

     wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/003_Atc_Models/yolov5s/aipp.cfg --no-check-certificate 

     atc --model=yolov5s_nms.onnx --framework=5 --output=yolov5s_nms --input_shape="images:1,3,640,640;img_info:1,4"  --soc_version=Ascend310B1 --insert_op_conf=aipp.cfg 

     ``` 

      atc命令中各参数的解释如下,详细约束说明请参见[《ATC模型转换指南》](https://hiascend.com/document/redirect/CannCommunityAtc)。 
      - --model:YoloV5s网络的模型文件的路径。 

     - --framework:原始框架类型。5表示ONNX。 

     - --output:om模型文件的路径。请注意,记录保存该om模型文件的路径,后续开发应用时需要使用。 

     - --input\_shape:模型输入数据的shape。 

     - --soc\_version:昇腾AI处理器的版本。 

 3. 准备测试视频。 
    请从以下链接获取该样例的测试视频,放在data目录下。 
    ``` 

   cd ../data  

   wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/003_Atc_Models/yolov5s/test.mp4 --no-check-certificate 

   ``` 

    **注:**若需更换测试视频,则需自行准备测试视频,并将测试视频放到data目录下。 
 4. 编译样例源码。 
    执行以下命令编译样例源码。 
    ``` 

   cd ../scripts  

   bash sample_build.sh 

   ``` 

   ``` 

   cd scripts  

   bash sample_build.sh 

   ``` 

5. 运行样例。 

    - 在HDMI连接屏幕场景,执行以下脚本运行样例。此时会以画面的形式呈现推理效果。 

     ``` 

     bash sample_run.sh imshow 

     ``` 

   - 在直连电脑场景,执行以下脚本运行样例。此时会以结果打屏的形式呈现推理效果。 

     ``` 

     bash sample_run.sh stdout 

三、报错

(base) HwHiAiUser@orangepiaipro-20t:~/EdgeAndRobotics/Samples/YOLOV5MultiInput$ cd scripts 

(base) HwHiAiUser@orangepiaipro-20t:~/EdgeAndRobotics/Samples/YOLOV5MultiInput/scripts$ bash sample_build.sh 

[INFO] Sample preparation 

-- The C compiler identification is GNU 11.4.0 

-- The CXX compiler identification is GNU 11.4.0 

-- Detecting C compiler ABI info 

-- Detecting C compiler ABI info - done 

-- Check for working C compiler: /usr/bin/cc - skipped 

-- Detecting C compile features 

-- Detecting C compile features - done 

-- Detecting CXX compiler ABI info 

-- Detecting CXX compiler ABI info - done 

-- Check for working CXX compiler: /usr/bin/g++ - skipped 

-- Detecting CXX compile features 

-- Detecting CXX compile features - done 

-- set INC_PATH: /usr/local/Ascend/ascend-toolkit/latest 

-- set LIB_PATH: /usr/local/Ascend/ascend-toolkit/latest/runtime/lib64/stub 

-- Found OpenCV: /usr (found version "4.5.4") 

-- Configuring done 

-- Generating done 

-- Build files have been written to: /home/HwHiAiUser/EdgeAndRobotics/Samples/YOLOV5MultiInput/build/intermediates/host 

[ 50%] Building CXX object CMakeFiles/main.dir/main.cpp.o 

/home/HwHiAiUser/EdgeAndRobotics/Samples/YOLOV5MultiInput/src/main.cpp: In function ‘void* GetInput(void*)’: 

/home/HwHiAiUser/EdgeAndRobotics/Samples/YOLOV5MultiInput/src/main.cpp:191:18: error: ‘GetRunMode’ was not declared in this scope; did you mean ‘aclrtRunMode’? 

  191 |     int isHost = GetRunMode(); 

      |                  ^~~~~~~~~~ 

      |                  aclrtRunMode 

/home/HwHiAiUser/EdgeAndRobotics/Samples/YOLOV5MultiInput/src/main.cpp:207:44: error: ‘CopyDataToHost’ was not declared in this scope 

  207 |                     void* hostDataBuffer = CopyDataToHost(frame.data.get(), frame.size); 

      |                                            ^~~~~~~~~~~~~~ 

/home/HwHiAiUser/EdgeAndRobotics/Samples/YOLOV5MultiInput/src/main.cpp:209:21: error: ‘FreeHostMem’ was not declared in this scope 

  209 |                     FreeHostMem(hostDataBuffer); 

      |                     ^~~~~~~~~~~ 

make[2]: *** [CMakeFiles/main.dir/build.make:76: CMakeFiles/main.dir/main.cpp.o] Error 1 

make[1]: *** [CMakeFiles/Makefile2:83: CMakeFiles/main.dir/all] Error 2 

make: *** [Makefile:136: all] Error 2 

[ERROR] build failed, Please check your environment! 

我要发帖子