C# OnnxRuntime 图像去雨

💡 原文中文,约9100字,阅读约需22分钟。
📝

内容提要

这篇文章介绍了一个基于注意力GAN的去雨模型的代码实现,提供了官方网址和代码实现的参考链接,使用了Microsoft.ML.OnnxRuntime库和OpenCvSharp库,并提供了图形界面。文章详细介绍了代码的使用方法和运行流程。

🔎

延伸解读

模型输入输出与预处理

模型输入为Float[1,3,240,360],输出为Float[1,240,360,3]。代码中先将图像缩放到240x360,再通过ConvertTo进行归一化(1/127.5f, -1.0f),使像素值映射到[-1,1]范围。这种预处理与注意力GAN去雨模型的训练方式一致,是保证推理效果的关键步骤。

后处理与颜色通道顺序

推理输出为NHWC格式,代码先转换为NCHW,再分离B、G、R三个通道,分别进行最小-最大归一化到0-255,然后合并并转换为8位图像。最后将BGR转为RGB以正确显示。注意通道顺序和归一化方式必须与训练时匹配,否则会出现颜色偏差。

推理性能与运行环境

代码使用CPU执行提供程序(AppendExecutionProvider_CPU),并记录推理耗时。由于模型输入尺寸固定为240x360,实际处理时会将原图缩放至此尺寸,推理后再缩放回原尺寸。这可能导致细节损失,且CPU推理速度可能较慢,适合对实时性要求不高的场景。

代码结构与扩展性

示例提供了完整的图形界面,包含图像加载、推理和保存功能。保存支持多种格式,但核心推理逻辑与界面耦合较紧。若需集成到其他应用,可提取Common类中的ExtractMat和NHWCToNCHW方法,并注意模型路径和输入尺寸的硬编码,建议改为可配置参数。

❓

Q&A

如何使用基于注意力GAN的去雨模型?

用户可以通过提供图像文件,使用图形界面加载图像,然后点击按钮进行去雨处理。

该去雨模型的输入和输出格式是什么?

模型输入格式为Float[1, 3, 240, 360],输出格式为Float[1, 240, 360, 3]。

这个去雨模型使用了哪些库?

该模型使用了Microsoft.ML.OnnxRuntime库和OpenCvSharp库。

如何保存处理后的图像?

用户可以通过点击保存按钮,选择图像格式并指定保存位置来保存处理后的图像。

去雨模型的效果如何?

文章中未提供具体的效果示例,但提到该模型基于注意力GAN,旨在有效去除图像中的雨水。

如何获取该去雨模型的代码实现?

可以访问提供的官方网址和代码实现参考链接,获取模型的代码。

🏷️

标签

➡️

继续阅读