旭日x3派部署超分辨率模型Real-ESRGAN求助

在旭日x3派上部署超分辨率模型Real-ESRGAN,模型地址https://github.com/xinntao/Real-ESRGAN#european_castle-model-zoo,所使用的模型为RealESRGAN_x4plus_anime_6B.pth,之后将模型转化为onnx模型,RealESRGAN_x4plus_anime_6B.onnx的输入输出结果如下:

将RealESRGAN_x4plus_anime_6B.onnx转为RealESRGAN_x4plus_anime_6B.bin文件,转换的yaml文件如下:

模型转换完成后的结果如下:

将RealESRGAN_x4plus_anime_6B.bin上板运行,输入图像(img)后,经过前向推理(models[0].forward(img)),最后的output的结果(outputs[0].buffer[0])如下,

其中输入图像的BGR的值为0-255,但是经过模型的前向推理之后的输出值是小数且有负数,不知道是什么原因。

之后我将outputs[0].buffer[0]的值乘以3000,作为最后的结果输出,图像如下:

这是原图:

我把.bin模型和上板运行的代码都放在附件里了,麻烦大家帮忙看一看到底是哪出了问题。

超分_20230316114043.zip

感谢您使用地平线芯片算法工具链,最近我们在收集大家的满意度反馈,欢迎您填写问卷,详细情况可见:https://developer.horizon.ai/forumDetail/146177053698464782

您好,请问您是否重复配置了归一化呢?建议您先参考这篇文章来定位分析问题哈:https://developer.horizon.ai/forumDetail/71036815603174578

我在上板运行代码中没有加入归一化操作,就是直接把原图0-255的BGR的值直接输入,但是经过模型推理之后BGR的值就变成了上图所示的都是小数且有负数的出现,正常情况下应该也是输出0-255的BGR的值。您是说我的模型可能精度损失过大吗,那应该也不会出现上述的那种输出值。

不是很了解超分辨率这个领域哈,请问quantized.onnx正常嘛?

我在测试quantized.onnx时,所写代码如下:

报错:

请问expected: (N11onnxruntime17PrimitiveDataTypeIaEE)是什么数据类型,我从网上没有找到

你好,麻烦截图提供的全面一些哈,顺便打印一下feed_dict字典中value的数据类型

好的,谢谢您。原模型RealESRGAN_x4plus_anime_6B.onnx的输入是按照rgb,NCHW排布的float32型的数据,我希望转换后的RealESRGAN_x4plus_anime_6B.bin的输入是按照bgr,NHWC排布的float32型数据(即

输入是img=cv2.imread(img_path)/255),那我是只需要改input_type_rt为featuremap吗,还需要改input_type_train为featuremap吗,对于校准数据需要修改吗,对于norm_type和scale_value还需要修改吗,我看norm_type可以设置为no_preprocess?

这是我一开始的prepare_calibration_data.py程序,需要做哪些修改呢

从您的描述看,训练时是rgb的输入,那建议您不要使用featuremap输入哈,从我的理解看,您理解的原始onnx输入是float,应该是totensor进行了归一化,这个建议您配置scale_value哈,图像格式以及均值归一化操作,通过配置可以跑在BPU上实现加速,这些理解可参考文章:https://developer.horizon.ai/forumDetail/118363912788935513

您好,调试修改代码需要您自己完成哈