规范代码@zy
本项目提供了一个通用的模型部署框架,支持多种模型(例如 YOLO 系列:yolov4_tiny、yolov5s、yolov8s 等)。通过本示例,用户可以了解如何根据所选模型部署相应的推理代码,只需修改前后处理函数,其他部分的代码和函数接口保持一致。
example 目录结构及其主要功能如下所示:
example ├── Makefile /* 用于构建项目的 Makefile 文件 */ │ ├── postprocess │ ├── classification_post.c │ ├── classification_post.h /* 分类网络相关后处理函数 */ │ ├── yolov4_tiny_post.c │ ├── yolov4_tiny_post.h /* yolov4-tiny 相关后处理函数 */ │ ├── yolov5s_post.c │ └── yolov5s_post.h /* yolov5s 相关后处理函数 */ │ ├── yolov8s_post.c │ └── yolov8s_post.h /* yolov8s 相关后处理函数 */ │ ├── resource │ ├── dog.jpg /* 待推理 JPEG 格式的数据 */ │ ├── input_0.dat /* yolov4-tiny待推理二进制格式的数据 */ │ ├── iter_0_input_0_out0_1_3_416_416.tensor /* yolov4-tiny待推理 tensor 格式的数据 */ │ ├── network_binary.nb /* yolov4-tiny待推理网络模型 */ │ └── yolov8s_u8.nb /* yolov8s待推理网络模型 */ | ├── yolov4_tiny_demo.c /* 网络推理流程示例代码 */ ├── yolov5s_demo.c /* 网络推理流程示例代码 */ └── yolov8s_demo.c /* 网络推理流程示例代码 */
本项目提供了一个通用框架,用户可以根据需求部署不同的模型。
本项目支持 yolov4_tiny、yolov5s 和 yolov8s 模型的部署。你可以根据需求选择相应的模型进行部署。
调用文件:yolov4_tiny_demo.c 中调用了 postprocess 文件夹下的 yolov4_tiny_post.c 和 yolov4_tiny_post.h 进行后处理。
yolov4_tiny_demo.c
postprocess
yolov4_tiny_post.c
yolov4_tiny_post.h
主要函数调用流程:
pnna_open()
nn_init()
nn_infer()
yolo_postprocess()
yolo_postprocess_fast()
print_yolov4_tiny_result()
yolov5s_demo.c
yolov5s_post.c
yolov5s_post.h
yolov8s_demo.c
yolov8s_post.c
yolov8s_post.h
如果你需要部署其他模型,可以按照以下步骤进行:
demo.c
#define NETWORK_INPUT_TYPE_JPEG 1 // #define NETWORK_INPUT_TYPE_TENSOR 1 // #define NETWORK_INPUT_TYPE_BINARY 1
// #define NETWORK_INPUT_TYPE_JPEG 1 #define NETWORK_INPUT_TYPE_TENSOR 1 // #define NETWORK_INPUT_TYPE_BINARY 1
// #define NETWORK_INPUT_TYPE_JPEG 1 // #define NETWORK_INPUT_TYPE_TENSOR 1 #define NETWORK_INPUT_TYPE_BINARY 1
修改项目根目录下的 Makefile ,以 yolov8s 为例:
Makefile
yolov8s
OBJ_MAIN=yolov8s_demo.o OBJ = postprocess/yolov8s_post.o
请根据自己项目需求选择编译相应的文件。输入以下命令编译工程。
make
编译成功后,你可以运行生成的可执行文件进行推理:
./your_executable_file -n network_binary.nb -i 1 input_file_name
其中,-n 后面跟网络二进制图文件的名称,-i 后面跟输入文件的数量和输入文件的名称。
-n
-i
input_file_name 需要根据配置参数时选择的数据类型,选择对应的 JPG 或t ensor 或二进制数据进行推理。
input_file_name
模型部署顶层示例程序
©Copyright 2023 CCF 开源发展委员会 Powered by Trustie& IntelliDE 京ICP备13000930号
示例程序使用说明
概述
本项目提供了一个通用的模型部署框架,支持多种模型(例如 YOLO 系列:yolov4_tiny、yolov5s、yolov8s 等)。通过本示例,用户可以了解如何根据所选模型部署相应的推理代码,只需修改前后处理函数,其他部分的代码和函数接口保持一致。
文件简介
example 目录结构及其主要功能如下所示:
构建项目
本项目提供了一个通用框架,用户可以根据需求部署不同的模型。
选择模型
本项目支持 yolov4_tiny、yolov5s 和 yolov8s 模型的部署。你可以根据需求选择相应的模型进行部署。
YOLOv4-tiny 模型
调用文件:
yolov4_tiny_demo.c
中调用了postprocess
文件夹下的yolov4_tiny_post.c
和yolov4_tiny_post.h
进行后处理。主要函数调用流程:
pnna_open()
:打开设备。nn_init()
:初始化网络。nn_infer()
:开始推理。yolo_postprocess()
或yolo_postprocess_fast()
:进行后处理。print_yolov4_tiny_result()
:打印推理结果。YOLOv5s 模型
yolov5s_demo.c
中调用了postprocess
文件夹下的yolov5s_post.c
和yolov5s_post.h
进行后处理。YOLOv8s 模型
yolov8s_demo.c
中调用了postprocess
文件夹下的yolov8s_post.c
和yolov8s_post.h
进行后处理。其他模型
如果你需要部署其他模型,可以按照以下步骤进行:
demo.c
文件中,将原来的前后处理函数替换为你自己编写的前后处理函数。demo.c
文件中的相关参数,如输入输出尺寸、类别数量等。配置参数
demo.c
文件中,如果运行时带推理数据为JPG格式的图片,则选择如下配置:编译项目
修改项目根目录下的
Makefile
,以yolov8s
为例:请根据自己项目需求选择编译相应的文件。输入以下命令编译工程。
运行推理
编译成功后,你可以运行生成的可执行文件进行推理:
其中,
-n
后面跟网络二进制图文件的名称,-i
后面跟输入文件的数量和输入文件的名称。input_file_name
需要根据配置参数时选择的数据类型,选择对应的 JPG 或t ensor 或二进制数据进行推理。注意事项
pnna_open()
、nn_init()
、nn_infer()
等)对于所有模型都是一样的,你无需修改这些函数的调用。