PaddleX icon indicating copy to clipboard operation
PaddleX copied to clipboard

C# deploy分割模型部署问题

Open QIANXUNZDL123 opened this issue 3 years ago • 9 comments

paddlex==2.0.0 cuda ==10.2 paddlepaddle==2.1 根据文档进行dll的导出,参考了文档里面的分割模型代码 https://github.com/PaddlePaddle/PaddleX/tree/develop/deploy/cpp/docs/csharp_deploy

出现一下问题: image

我的语义分割模型是基于paddlex训练的UNet模型,

C#代码: byte[] color_map = get_color_map_list(256); string model_type = "seg"; string model_filename = "F:\PaddleData2\semantic_seg\segmodel\unet\inference_model\inference_model\model.pdmodel"; string params_filename = "F:\PaddleData2\semantic_seg\segmodel\unet\inference_model\inference_model\model.pdiparams"; string cfg_file = "F:\PaddleData2\semantic_seg\segmodel\unet\inference_model\inference_model\model.yml";

        bool use_gpu = true;
        int gpu_id = 0;

        InitModel(model_type, model_filename, params_filename, cfg_file, use_gpu, gpu_id, ref paddlex_model_type[0]);

        string img_file = "F:\\PaddleData2\\semantic_seg\\dataset\\data_seg\\JPEGImages\\horse001.jpg";


        Bitmap origin_bmp = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(Cv2.ImRead(img_file));
        Bitmap input_bmp = null;

        // resize()
        OpenCvSharp.Mat input_mat = OpenCvSharp.Extensions.BitmapConverter.ToMat(origin_bmp);
        OpenCvSharp.Mat output_mat = OpenCvSharp.Extensions.BitmapConverter.ToMat(origin_bmp);

        Cv2.Resize(input_mat, output_mat, new OpenCvSharp.Size(512, 512));
        input_bmp = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(output_mat);
        input_mat = null;
        output_mat = null;

        byte[] inputData = GetBGRValues(input_bmp, out int stride);

        byte[] output_map = new byte[input_bmp.Height * input_bmp.Width];    

        TimeSpan infer_start_time = new TimeSpan(DateTime.Now.Ticks);
                
        Seg_ModelPredict(inputData, input_bmp.Width, input_bmp.Height, 3, ref output_map[0]);
        TimeSpan infer_end_time = new TimeSpan(DateTime.Now.Ticks);

                
        input_bmp = CreateBitmap(output_map, input_bmp.Width, input_bmp.Height, color_map); 

        input_mat = OpenCvSharp.Extensions.BitmapConverter.ToMat(input_bmp);
        output_mat = OpenCvSharp.Extensions.BitmapConverter.ToMat(input_bmp); 
        Cv2.Resize(input_mat, output_mat, new OpenCvSharp.Size(origin_bmp.Width, origin_bmp.Height)); 
        input_mat = null;  

        input_mat = OpenCvSharp.Extensions.BitmapConverter.ToMat(origin_bmp); 

        Cv2.AddWeighted(output_mat, 0.5, input_mat, 0.35, 1, output_mat);  
        input_bmp = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(output_mat);

                
        if (pictureBox1.Image != null) pictureBox1.Image.Dispose();
        pictureBox1.Image = origin_bmp; 
        pictureBox1.SizeMode = PictureBoxSizeMode.Zoom; 

        if (pictureBox2.Image != null) pictureBox2.Image.Dispose();
        pictureBox2.Image = input_bmp;
        pictureBox2.SizeMode = PictureBoxSizeMode.Zoom;

QIANXUNZDL123 avatar Nov 18 '21 14:11 QIANXUNZDL123

我的语义分割模型是基于paddlex训练的UNet模型,

如果是用paddlex训练的话,string model_type = "seg";要设成"paddlex",文档里面有说明,再看下吧

FlyingQianMM avatar Nov 19 '21 11:11 FlyingQianMM

我的语义分割模型是基于paddlex训练的UNet模型,

如果是用paddlex训练的话,string model_type = "seg";要设成"paddlex",文档里面有说明,再看下吧

如果使用string model="paddlex" 就会报错 image

QIANXUNZDL123 avatar Nov 19 '21 13:11 QIANXUNZDL123

你的模型是用paddlex训练并导出的么?还是用PaddleSeg?

FlyingQianMM avatar Nov 22 '21 06:11 FlyingQianMM

另外C++部署方式之前有测过过能正常运行么?https://github.com/PaddlePaddle/PaddleX/blob/develop/deploy/cpp/docs/deployment.md 可视化:FAQ Q4

FlyingQianMM avatar Nov 22 '21 06:11 FlyingQianMM

你的模型是用paddlex训练并导出的么?还是用PaddleSeg?

你好,刚进行了测试 模型是paddlex训练并导出的。模型是Unet,刚测试了下C++部署,Unet不行的。没有输出结果。下面是输出的信息。

image

QIANXUNZDL123 avatar Nov 22 '21 08:11 QIANXUNZDL123

另外C++部署方式之前有测过过能正常运行么?https://github.com/PaddlePaddle/PaddleX/blob/develop/deploy/cpp/docs/deployment.md 可视化:FAQ Q4

测试了deeplabv3b是可以的

QIANXUNZDL123 avatar Nov 22 '21 08:11 QIANXUNZDL123

情况已了解,c#调用我们正在定位问题。

刚测试了下C++部署,Unet不行的。没有输出结果

这个不行是直接报错?还是没有可视化结果保存?

FlyingQianMM avatar Nov 23 '21 02:11 FlyingQianMM

情况已了解,c#调用我们正在定位问题。

刚测试了下C++部署,Unet不行的。没有输出结果

这个不行是直接报错?还是没有可视化结果保存? 都没输出到我设置的输出信息,直接就退了,也没有什么报错信息 image

这是我基于paddlex训练的Unet模型: 链接:https://pan.baidu.com/s/1FWuLJXYnqpf-FFWiDbs08Q 提取码:knqr

这是用python跑的 image

QIANXUNZDL123 avatar Nov 23 '21 04:11 QIANXUNZDL123

问题被搁置了吗

CamelKing1997 avatar Nov 15 '22 13:11 CamelKing1997