Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

YOLOv3导出后的模型如何在Paddle-Lite中使用?完全不知道模型输入输出的接口呀,郁闷呀。 #124

Closed
zhuyushi opened this issue Dec 24, 2019 · 5 comments

Comments

@zhuyushi
Copy link

您好,请教一下。
用PaddleDetection训练的网络,想用在Paddle-Lite中,但是完全不知道模型输入输出接口呀,也找不到文档,过程是这样的:
用PaddleDetection训练的网络,模型导出后得到了__modle__和__params__文件,我想将其用在嵌入式系统中,于是使用Paddle-Lite中的优化工具(model_optimize_tool)对模型进行优化,得到了__model__.nb和param.nb文档。按照Paddle-Lite中的例程编写了程序,然后就遇到问题了,问题如下:
一、对于输入接口:
(1)PaddleDetection导出模型输入接口是什么?原始图片?还是YOLO网络的输入?
(2)原本的YOLOv3模型是可以输入任何尺寸图片的,但是PaddleDetection中配置固定为[3,608,608],那需要我人为resize吗?
(3)输入网络的数据是需要用均值和方差做标准化的,这个是我来做还是模型自己会做?导出的模型有没有保存均值和方差信息?
二、对于输出接口:
(1)导出模型的输出是否就是原始YOLOv3模型的输出?为什么我在测试Paddle-Lite自己写的推理程序时,由于少了一个原始图片输入,导致程序core掉,原始YOLOv3模型需要原始图片信息?
(2)NMS是不是要我自己做?
(3)原始YOLOv3模型输出的box预测值是相对cell位置的,是否需要我自己将预测框换算为绝对值?
这一系列问题找不到对于的说明文档,PaddleDetection和Paddle-Lite中都找不到,本来Paddle-Lite就是将训练好的模型进行工程化的过程,理应按照说明文档操作很快可以完成,但事实上到处是坑,两周都无法完成,体验很差,很是让人郁闷呀。
能否请帮忙解答一下,谢谢。

@zhuyushi
Copy link
Author

补充:
下面这个表述有问题:
(1)导出模型的输出是否就是原始YOLOv3模型的输出?为什么我在测试Paddle-Lite自己写的推理程序时,由于少了一个原始图片输入,导致程序core掉,原始YOLOv3模型需要原始图片信息?
应该是:
(1)导出模型的输出是否就是原始YOLOv3模型的输出?为什么我在测试Paddle-Lite自己写的推理程序时,由于少了一个“原始图片尺寸”的输入,导致程序core掉,原始YOLOv3模型的输入需要原始图片尺寸信息?

@heavengate
Copy link
Collaborator

你好:

  1. 保存的YOLOv3模型的输入是YOLOv3网络要求的输入,即原始图片经过减均值除方差转换为[C, H, W]之后的数据,预处理过程见

    sample_transforms:

    预处理操作的python实现见
    https://github.com/PaddlePaddle/PaddleDetection/blob/master/ppdet/data/transform/operators.py
    基于PaddleLite部署的话,输出数据需要是采用上述预处理之后的图片数据,预测部署预处理的c++代码可以参考
    https://github.com/PaddlePaddle/PaddleDetection/tree/master/inference/preprocessor

  2. 保存模型的输出是已经解析好并做过NMS之后的box信息,输出是一个shape为[N, 6]的数据,其中N为预测框的个数,6为[class_id, score, x1, y1, x2, y2], 输出格式参考
    https://www.paddlepaddle.org.cn/documentation/docs/zh/api_cn/layers_cn/multiclass_nms_cn.html#multiclass-nms
    预测部署输出bbox处理C++代码参考

    void output_detection_result(const float* out_addr,

@qingqing01
Copy link
Collaborator

@zhuyushi 感谢反馈,我们也会同步增强下文档~

@jerrywgz
Copy link
Collaborator

#241 已在docs/advanced_tutorials/inference/EXPORT_MODEL.md处添加详细的导出模型的输入输出介绍,可以参考

@Yu-wy
Copy link

Yu-wy commented Mar 16, 2022

有paddlex的吗

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants