资讯 社区 文档
技术能力
语音技术
文字识别
人脸与人体
图像技术
语言与知识
视频技术

模型推理

模型推理

模型支持列表

模型类型 任务类型 模型列表 支持尺寸 NPU适配 模型详情 SDK连接
resnet 图片分类 ResNet18
ResNet34
ResNet50
224x224 模型详情 Python部署
C++部署
yolov3 目标检测 YOLOv3-Mobilenet-V1
YOLOv3-DarkNet53
YOLOv3-ResNet34
320x320
416x416
608x608
模型详情 Python部署
C++部署
hrnet 人体关键点检测 HRNet-w32 256x192 模型详情 Python部署
C++部署

AI项目流程概述

AI项目流程大致为确定应用场景和目标数据收集和预处理选择或设计AI模型模型训练模型评估模型导出模型部署多个步骤。
其中确定应用场景和目标、数据收集和预处理、选择或设计AI模型、模型训练、模型评估、模型导出前几个环节又可统称为模型生产,参考百度飞桨PaddlePaddle系列的相关开源项目,本文档重点展开和EdgeBoard DK-1A更加密切的模型部署环节。

例:clas_resnet

本例中,使用ResNet模型对图片进行分类。亦可参考支持模型列表中的对应SDK下载包中的README.md文件。

模型说明

该模型用于目标检测任务,基于PaddleClass2.5进行模型训练,paddle版本使用2.4.1,输入数据尺寸为224x224,数据格式为Imagenet格式。

效果预览

输入图片: ./test_images/ILSVRC2012_val_00000014.JPEG
clas_resnet_test.jpeg

输出结果: ./vis.jpg 图片(图片左上角被标注“label = 757”,表示该图片属于“757”类,即“RV,一种车辆类型”)。
clas_resnet_result.jpeg

模型生产

基于AIStudio中的范例项目基于ResNet进行物品分类进行模型的训练、评估和导出。(版本参考:ver23.11.28 2023-11-28 19:04:02)

模型转化

为保证模型部署在EdgeBoard DK-1A上能够更高效率运行,充分调用板卡的CPU、GPU、NPU算力,需要将模型进行特定高性能转化。

自行训练获得标准模型后,可联系百度技术支持ext_edgeboard01@baidu.com进行模型高性能转化。

此例中下载范例项目已转化好的模型。在EdgeBoard DK-1A上打开终端,执行以下命令下载模型及相关物料。

cd /home/edgeboard/
sudo wget https://bj.bcebos.com/ppdeploy/ppdeploy1.1/SDK/PPDeploy1.1_resnet_PaddleClas2.5_Paddle2.4.1_Ver1.0.0_python.zip

模型部署

Step1:安装opencv依赖库及EdgeBoard DK-1A推理工具PPNC(如已安装,可跳过此步)
打开终端,执行以下命令安装PPNC。

sudo apt update
sudo apt install libopencv-dev -y
sudo apt install python3-opencv -y
sudo apt install ppnc-runtime -y

Step2:安装PaddlePaddle(如已安装,可跳过此步)
打开终端,执行以下命令安装PaddlePaddle。

mkdir Downloads
cd Downloads
wget https://bj.bcebos.com/pp-packages/whl/paddlepaddle-2.4.2-cp38-cp38-linux_aarch64.whl  
sudo pip install paddlepaddle-2.4.2-cp38-cp38-linux_aarch64.whl -i https://pypi.tuna.tsinghua.edu.cn/simple

Step3:解压文件。 在终端输入以下命令,解压文件。

unzip PPDeploy1.1_resnet_PaddleClas2.5_Paddle2.4.1_Ver1.0.0_python.zip

Step4:安装依赖库。
在终端输入以下命令,进入resnet-python目录,并安装依赖库:

cd /home/edgeboard/resnet-python/
sudo pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

说明

参数 -i https://pypi.tuna.tsinghua.edu.cn/simple 表示此次使用清华源进行安装。由于网络原因,直接使用默认源安装可能会出现报错。

Step5:配置config.json文件(无更改可略过)
终端输入以下命令,进入config.json所在目录,并使用vim查看内容。

cd /home/edgeboard/resnet-python/
vim config.json

默认已配置完成,可直接使用,如有自定义,可另行更改配置内容。

    {
        "mode": "professional",     //固定字段无需修改
        "model_dir": "./model",     //模型文件路径 
        "model_file": "model"       //固定为model,无需修改
    }

键盘输入“:q”,回车退出。

Step6:运行推理代码。

cd /home/edgeboard/resnet-python/
sudo python3 tools/infer_demo.py \
        --config ./model/config.json \
        --test_image ./test_images/ILSVRC2012_val_00000014.jpeg \
        --visualize \
        --with_profile

参数说明

  • config: 上文建立的config.json的路径
  • test_image: 测试图片路径
  • visualize: 是否可视化,若设置则会在该路径下生成vis.jpg渲染结果
  • with_profile: 是否统计前处理、模型推理、后处理各阶段耗时,若设置会输出各阶段耗时,默认不输出

\ 表示换行,若命令过长,用于换行,可不输入。详见Maximum Line Length

Step7:查看推理结果。 在edgeboard/resnet-python/目录下可以看到新增一个名为vis.jpg的推理结果文件。 clas_resnet_result.jpeg

Paddle与PPNC推理结果对比

由于PPNC为针对特定板卡优化方案,其推理结果与Paddle推理结果可能存在差异,可参考如下对比校验流程。一般推理效果偏差不大可忽略此流程。

Step1:下载Paddle静态模型文件

将AIStudio项目中导出的Paddle静态模型文件(xx.pdmodel 和 xx.pdiparams)下载至板卡resnet/model目录下。

Step2:执行对比

在板卡终端中执行以下命令,进行推理结果对比。

cd /home/edgeboard/resnet-python
sudo python3 tools/test.py \
        --config ./model/config.json \
        --model_dir ./model \
        --test_dir ./test_images \
        --output_dir ./output_dir

参数说明

  • config: 同上
  • model_dir: paddle静态图模型文件(model.pdmodel)和(model.pdiparams)所在目录
  • test_dir: 测试图片文件夹路径
  • output_dir: 存放结果文件,分别存放paddle和ppnc结果数据。

实际项目部署

实际用于项目中时,仅需要部分脚本,因此需要提取部署包并置于实际的项目代码中运行。

Step1:提取部署包。 在终端中输入以下命令,进入resnet-python目录。

./extract.sh

执行成功后,即会在当前目录下生成resnet_deploy.zip文件。

Step2:使用部署包。

  • 准备ppnc模型及配置文件
    将模型转换阶段生成的model.json和model.nb模型文件拷贝到项目能访问的目录,并参照前序的方式编写模型配置文件config.json。
  • 准备环境
    将生成的resnet_deploy.zip部署包解压后得到lib文件夹、resnet文件夹和requirements.txt文件。其中requirements.txt是已验证过部署包可正常使用的相关库版本,实际项目开发中安装相关库时可参考该文件。
  • 使用
    部署包使用方式请参考前序案例中使用的infer_demo.py脚本。

例:yolov3

本例中,使用yolov3模型对目标物进行检索。具体可参考支持模型列表中的对应SDK下载包中的README.md文件。

例:hrnet

本例中,使用hrnet模型对人体关键点进行检测。具体可参考支持模型列表中的对应SDK下载包中的README.md文件。

上一篇
接口介绍
下一篇
系统相关