NCNN适配鲲鹏开源验证任务心得

举报
yd_258481005 发表于 2024/12/13 11:35:57 2024/12/13
【摘要】 NCNN适配昇腾开源验证任务心得 首先看了一下任务计划书:https://bbs.huaweicloud.com/blogs/437828,主要目的是将 NCNN项目适配至华为的 Kunpeng(鲲鹏)处理器以及OpenEuler的操作系统,确保其在这些硬件平台上的高效运行,也就是说验证NCNN能不能在 Kunpeng(鲲鹏)处理器以及Open...


NCNN适配鲲鹏开源验证任务心得

 

首先看了一下任务计划书:https://bbs.huaweicloud.com/blogs/437828主要目的是将 NCNN项目适配至华为Kunpeng(鲲鹏)处理器以及OpenEuler的操作系统,确保其在这些硬件平台上的高效运行,也就是说验证NCNN能不能在 Kunpeng(鲲鹏)处理器以及OpenEuler操作系统中运行。

 

开发过程

明确目的后开始熟悉模型,NCNNgithub网址:https://github.com/Tencent/ncnn。从github上用git拉取下来。

git clone https://github.com/Tencent/ncnn.git

下载ncnn源码之后,通过下面命令安装依赖的第三方库。

cd ncnn

git submodule update --init

1 鲲鹏、OpenEuler验证

1.1  安装环境依赖

NCNN主要使用C++开发,需要以下环境依赖:

  1. GCC/G++编译器
  2. 基础构建工具 make Cmake
  3. Protobuf c++开发库,用于序列化数据结构
  4. Protobuf-compiler编译器,用于从.proto文件生成源代码
  5. OpenCV,用于计算机视觉任务

首先查了一下系统版本架构

uname -a 或者 cat /etc/os-release

1.jpg

因为系统不一样,安装命令也会有变化。

Debianlinux系统,如Ubuntu,使用apt 命令安装

    sudo apt update

    sudo apt install build-essential cmake libprotobuf-dev protobuf-compiler libopencv-dev

Red Hat CentosFedora的系统,使用yum命令安装

    sudo yum groupinstall “Development Tools”

    sudo yum install cmake libprotobuf-devel protobuf-compiler opencv-devel

欧拉系统,尝试使用yum安装找不到依赖。然后可以使用dnf命令安装

    sudo dnf update

    sudo dnf groupinstall “Development Tools”

    sudo dnf install cmake protobuf-devel opencv-devel

因为系统已经安装了gcc/g++cmakeprotobuf,只需要安装OpenCV,但是dnf命令安装opencv失败,仓库没有安装包,所以考虑源码编译安装。

编译OpenCV基本步骤如下:

    git clone https://github.com/opencv/opencv.git

    git clone https://github.com/opencv/opencv_contrib.git

    cd opencv

    mkdir build .

    cd build

    cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules -D OPENCV_ENABLE_NONFREE=ON ..

    编译

    make

    安装

    sudo make install

   

1.2   编译NCNN

NCNN可以源码编译,也可以从github官网下载编译之后的库。

考虑到具体环境适配,本次验证采用源码编译。

cd ncnn

mkdir -p build && cd build

cmake 预编译

2.jpg

***注:

     参数 -DNCNN_BENCHMARK=ON 打印每个算子的执行耗时

     参数 -DNCNN_VULKAN=OFF  不采用硬件加速,cpu推理

     参数 -DNCNN_BUILD_TOOLS=OFF 不编译生成工具,用于模型转换

     参数 -DNCNN_BUILD_EXAMPLES=ON 编译生成案例

3.jpg

make 编译过程

4.jpg

预计等待约20分钟

编译完成

5.jpg

编译完成,可以看到生成很多案例的可执行文件。

安装make install

cd install

会看到include lib64两个文件夹

6.jpg

其中 include 包含头文件。

其中libncnn.a 就是通过源码编译得到静态库,可以用于其他项目开发中。

 

1.3   运行推理

执行推理程序前,需要准备模型文件,和测试文件。

模型文件下载地址:

https://github.com/nihui/ncnn-assets/tree/master/models

仓库里面,所有模型已经转换成NCNN适配的格式,不需要再转换。

测试文件,本次验证使用的是yolov8官方提供的bus.jpgzidane.jpg

yolov8为例,下载模型文件,与可执行文件放在同一目录。

7.jpg

NCNN推理,模型文件格式包含两部分

     .bin文件是权重转化为二进制之后

     .param是描述模型结构的

支持CaffaTensorflowPytorch框架训练的模型,都需要转换成NCNN适配的格式。

      cd examples

     ./yolov8 ./images/bus.jpg

运行可执行文件yolov8,需要传入测试文件路径。

8.jpg

运行程序会报错

Opencv 图片显示的时候,需要依赖的库 gtk

9.jpg

可以安装gtk依赖库,重新编译,也可以通过改变代码。

10.jpg

注释掉384行,386行,增加385行,模型推理结果保存到当前目录。

11.jpg

2 测试结果

Yolov8程序推理结果

14.jpg

Yolov8目标检测结果,检测到图片中的目标(人和车)

yolov8_res.jpg

retinaface推理结果,检测到人脸和人脸关键点信息。

retina_res.jpg

scrfd推理结果,检测到人脸。

scrfd_res.jpg

Squeezenet程序推理结果

15.jpg

可以看到打印出每个算子耗时统计。

16.jpg

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。