Closed MrMzl closed 1 year ago
可按如下流程排查
部署RKNN官方的模型能够正确部署,说明FastDeploy代码没有问题。我猜过去大概率是你ONNX模型导出到RKNN模型这一步出错了。我看了一下你的C++日志,按照正常的转换代码,模型应该是三个输出,你这里只有1个。
能够成功解决问题吗?
部署RKNN官方的模型能够正确部署,说明FastDeploy代码没有问题。我猜过去大概率是你ONNX模型导出到RKNN模型这一步出错了。我看了一下你的C++日志,按照正常的转换代码,模型应该是三个输出,你这里只有1个。
![]()
郑工您好,我这边对比了一下(Netron)我自己转的rknn格式YOLOv5模型和RK官方提供的rknn格式YOLOv5模型,确实存在您提到的输出结果问题,我这边显示的的确只有一个输出结果,应该就是格式转换过程中出现的问题,但我这边按照模型转换文档里面的操作(https://github.com/airockchip/rknn_model_zoo/tree/main/models/CV/object_detection/yolo/RKNN_model_convert)
将我导出的onnx格式模型转换为rknn格式模型的过程中并没有提示错误,下面是我转换过程中的配置文件yolo_ppyolo.yml中的内容
模型转换运行日志.附上链接: https://pan.baidu.com/s/1EyqLLNu0w3wWkQ7TEI1ohQ 提取码: csu6
你是用官方修改过的yolov5仓库进行训练吗?如果没有的话,可能输出节点会对不上哦
你是用官方修改过的yolov5仓库进行训练吗?如果没有的话,可能输出节点会对不上哦
我用的是YOLO官方github提供的代码和自己的数据训练的模型https://github.com/ultralytics/yolov5/tree/v7.0 您说的官方修改的yolov5模型是rk官方修改的模型嘛https://github.com/airockchip/yolov5/tree/v4.0
你是用官方修改过的yolov5仓库进行训练吗?如果没有的话,可能输出节点会对不上哦
我用的是YOLO官方github提供的代码和自己的数据训练的模型https://github.com/ultralytics/yolov5/tree/v7.0 您说的官方修改的yolov5模型是rk官方修改的模型嘛https://github.com/airockchip/yolov5/tree/v4.0
对,他们对模型是进行了优化的,所以对应的导出节点也不一致。如果你要用YOLO官方的模型,需要对比一下两个模型,看看RK官方的导出节点对应的是你模型的哪个节点。替换一下节点名称应该就可以运行了。
你是用官方修改过的yolov5仓库进行训练吗?如果没有的话,可能输出节点会对不上哦
我用的是YOLO官方github提供的代码和自己的数据训练的模型https://github.com/ultralytics/yolov5/tree/v7.0 您说的官方修改的yolov5模型是rk官方修改的模型嘛https://github.com/airockchip/yolov5/tree/v4.0
对,他们对模型是进行了优化的,所以对应的导出节点也不一致。如果你要用YOLO官方的模型,需要对比一下两个模型,看看RK官方的导出节点对应的是你模型的哪个节点。替换一下节点名称应该就可以运行了。
好的,谢谢郑工,那我这边目前的解决方案就是两种,一种是用rk官方的YOLOv5代码进行模型训练,导出,转换;另一种就是对比rk官方提供的yolov5s_tk2.pt和我自己训练的pt格式模型进行对比,按您说的替换节点名称后再转换。
@Zheng-Bicheng 郑工您好,我这边用rk官方的YOLOv5重新训练了模型,然后转换成了rknn格式,通过netron查看,转换后的模型是三个输出,但是在板端推理的时候仍然会出现segmentation fault的错误,我调试推理代码,发现模型读取、数据读取都正常,就是在执行推理model.predict(im)的时候会报错,这个可能是什么原因呢? Run_log: firefly@firefly:~/FastDeploy-release-1.0.3/examples/vision/detection/rkyolo/python$ bash run_me_yolov5s_sar.sh [INFO] fastdeploy/backends/rknpu/rknpu2/rknpu2_backend.cc(56)::GetSDKAndDeviceVersion rknn_api/rknnrt version: 1.4.0 (a10f100eb@2022-09-09T09:07:14), driver version: 0.7.2 E RKNN: [09:32:33.253] rknn_set_core_mask: No implementation found for current platform! index=0, name=images, n_dims=4, dims=[1, 640, 640, 3], n_elems=1228800, size=1228800, fmt=NHWC, type=INT8, qnt_type=AFFINE, zp=-128, scale=0.003922, pass_through=0 index=0, name=output, n_dims=4, dims=[1, 18, 80, 80], n_elems=115200, size=115200, fmt=NCHW, type=INT8, qnt_type=AFFINE, zp=-128, scale=0.003922, pass_through=0 index=1, name=272, n_dims=4, dims=[1, 18, 40, 40], n_elems=28800, size=28800, fmt=NCHW, type=INT8, qnt_type=AFFINE, zp=-128, scale=0.003922, pass_through=0 index=2, name=274, n_dims=4, dims=[1, 18, 20, 20], n_elems=7200, size=7200, fmt=NCHW, type=INT8, qnt_type=AFFINE, zp=-128, scale=0.003922, pass_through=0 [INFO] fastdeploy/runtime.cc(624)::Init Runtime initialized with Backend::RKNPU2 in Device::RKNPU. Run to model input step! Run to image read step! [WARNING] fastdeploy/backends/rknpu/rknpu2/rknpu2_backend.cc(312)::Infer The input tensor type != model's inputs type.The input_type need INT8,but inputs[0].type is UINT8 run_me_yolov5s_sar.sh: line 1: 1628 Segmentation fault python3 infer.py --model_file ./model_sar/yolov5s_rk_sar_RK356X_i8.rknn --image Gao_ship_hh_02017010717010304.jpg
解决了吗?没解决的话模型和图片上传一下。涉及商业内容的话,可以发送模型和图片至zheng_bicheng@outlook.com
按如下步骤解决:
@MrMzl 您好,我您自己训练的模型label和官方不一致,因此导致了推理过程中产生了段错误。解决办法为调用SetClassNum接口,再进行Predict
auto option = fastdeploy::RuntimeOption();
option.UseRKNPU2();
auto format = fastdeploy::ModelFormat::RKNN;
auto model = fastdeploy::vision::detection::RKYOLOV5(
model_file, option,format);
model.GetPostprocessor().SetClassNum(3);
@MrMzl 没问题的话,issues回复下哈.
@MrMzl 没问题的话,issues回复下哈.
郑工,您好,我这边按照您的建议加了调用代码model.GetPostprocessor().SetClassNum(3);
,但是在重新编译(make -j8)的时候会提示没有成员变量‘SetClassNum’
代码:
build log:
firefly@firefly:~/FastDeploy-release-1.0.3/examples/vision/detection/rkyolo/cpp/build$ make -j8
Scanning dependencies of target infer_rkyolo
[ 50%] Building CXX object CMakeFiles/infer_rkyolo.dir/infer_rkyolo.cc.o
/home/firefly/mazeliang/FastDeploy-release-1.0.3/examples/vision/detection/rkyolo/cpp/infer_rkyolo.cc: In function ‘void RKNPU2Infer(const string&, const string&)’:
/home/firefly/FastDeploy-release-1.0.3/examples/vision/detection/rkyolo/cpp/infer_rkyolo.cc:25:27: error: ‘class fastdeploy::vision::detection::RKYOLOPostprocessor’ has no member named ‘SetClassNum’
model.GetPostprocessor().SetClassNum(3);
^
~~
make[2]: [CMakeFiles/infer_rkyolo.dir/build.make:63: CMakeFiles/infer_rkyolo.dir/infer_rkyolo.cc.o] Error 1
make[1]: [CMakeFiles/Makefile2:73: CMakeFiles/infer_rkyolo.dir/all] Error 2
make: *** [Makefile:130: all] Error 2
你更新到最新版本了吗?我看你之前的log压根不是最新版本啊。
2023年2月17日 10:28,MrMzl @.***> 写道:
@MrMzlhttps://github.com/MrMzl 没问题的话,issues回复下哈.
郑工,您好,我这边按照您的建议加了调用代码model.GetPostprocessor().SetClassNum(3);
,但是在重新编译(make -j8)的时候会提示没有成员变量‘SetClassNum’
代码:
[image]https://user-images.githubusercontent.com/85120075/219533808-c85f8a2b-6f39-46ba-a487-8ca2103b3d49.png
build log:
@.:~/FastDeploy-release-1.0.3/examples/vision/detection/rkyolo/cpp/build$ make -j8
Scanning dependencies of target infer_rkyolo
[ 50%] Building CXX object CMakeFiles/infer_rkyolo.dir/infer_rkyolo.cc.o
/home/firefly/mazeliang/FastDeploy-release-1.0.3/examples/vision/detection/rkyolo/cpp/infer_rkyolo.cc: In function ‘void RKNPU2Infer(const string&, const string&)’:
/home/firefly/FastDeploy-release-1.0.3/examples/vision/detection/rkyolo/cpp/infer_rkyolo.cc:25:27: error: ‘class fastdeploy::vision::detection::RKYOLOPostprocessor’ has no member named ‘SetClassNum’
model.GetPostprocessor().SetClassNum(3);
^~~
make[2]: [CMakeFiles/infer_rkyolo.dir/build.make:63: CMakeFiles/infer_rkyolo.dir/infer_rkyolo.cc.o] Error 1
make[1]: [CMakeFiles/Makefile2:73: CMakeFiles/infer_rkyolo.dir/all] Error 2
make: [Makefile:130: all] Error 2
— Reply to this email directly, view it on GitHubhttps://github.com/PaddlePaddle/FastDeploy/issues/1315#issuecomment-1434008869, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AN5I5QTBYEZ6DQKFBZRUMWTWX3O5LANCNFSM6AAAAAAU3APKIE. You are receiving this because you were mentioned.Message ID: @.***>
@Zheng-Bicheng 好的,我更新到develop重新编译测试一下,我一直用的1.0.3版本,那个log是我自己加了一些打印信息。
可以用了吗?
可以用了吗? 郑工,您好,我这边更新到最新版本,可以正常推理了。非常感谢您的指导!
环境
问题日志及出现问题的操作流程