C# onnxruntime 部署LYT-Net轻量级低光图像增强
内容提要
LYT-Net是一个轻量级的基于YUV转换器的网络,用于低光图像增强。该模型接受低光图像作为输入,并通过改善可见性来增强图像。项目的代码可在GitHub上找到。模型的输入张量大小为[-1, 240, 320, 3],输出张量大小为[-1, 240, 320, 3]。文章还包括在Microsoft.ML.OnnxRuntime和OpenCvSharp库中使用模型的代码片段。
延伸解读
模型输入输出与预处理要点
LYT-Net 的 ONNX 模型输入和输出张量形状均为 [-1, 240, 320, 3],输入名称为 'input_1',输出名称为 'output_1'。在 C# 部署时,需将图像缩放到 320x240,并归一化到 [-1, 1] 范围(通过 ConvertTo 设置 alpha=1/127.5, beta=-1.0)。输出数据需反归一化(加 1 后乘 127.5)才能得到可视图像。这些步骤是保证推理结果正确的关键。
推理流程与性能测量
文章示例展示了完整的推理流程:读取图像、调整大小、转换数据类型、创建 DenseTensor 并放入 NamedOnnxValue 容器,然后调用 onnx_session.Run 执行推理。代码中通过记录 DateTime 计算推理耗时,并显示在文本框中。这有助于开发者评估模型在 CPU 上的性能。注意,示例中固定了输入尺寸为 240x320,实际使用时需根据模型要求调整。
结果保存与格式支持
推理结果可以显示在第二个图片框中,并支持保存为多种图像格式,包括 JPG、PNG、BMP、EMF、EXIF、GIF、ICO、TIFF 和 WMF。保存功能通过 SaveFileDialog 实现,根据用户选择的过滤器索引调用 Bitmap.Save 方法并指定对应的 ImageFormat。这为后续处理或展示提供了便利。
Q&A
LYT-Net是什么?
LYT-Net是一个轻量级的基于YUV转换器的网络,用于低光图像增强。
LYT-Net的输入和输出张量大小是多少?
模型的输入张量大小为[-1, 240, 320, 3],输出张量大小为[-1, 240, 320, 3]。
如何在C#中使用LYT-Net模型进行推理?
可以使用Microsoft.ML.OnnxRuntime和OpenCvSharp库,通过创建输入容器并运行推理来使用LYT-Net模型。
LYT-Net模型的主要功能是什么?
LYT-Net模型的主要功能是接受低光图像作为输入,并通过改善可见性来增强图像。
LYT-Net的代码在哪里可以找到?
LYT-Net的项目代码可以在GitHub上找到。
如何保存处理后的图像?
处理后的图像可以通过SaveFileDialog保存为多种格式,如JPEG、PNG等。