C# 人像卡通化 Onnx photo2cartoon
内容提要
这篇文章介绍了一个人像卡通化的项目,使用了VS2022、.net framework 4.8、OpenCvSharp 4.8和Microsoft.ML.OnnxRuntime 1.16.2等工具和库。文章主要讲解了如何使用这些工具和库进行人像卡通化的操作。
延伸解读
模型输入输出规格
文章显示模型输入和输出均为Float[1,3,256,256]的张量,这意味着模型固定接受256x256的RGB图像,且输出也是相同尺寸。这种对称设计简化了预处理和后处理,但要求输入图像必须调整到该尺寸,可能影响非正方形图像的宽高比。
图像预处理与后处理细节
代码中先将图像按比例缩放,使最长边为256,然后填充白色边框至256x256,再转换为RGB。输入张量归一化到[-1,1]范围。输出张量同样在[-1,1]范围,后处理时先反归一化到[0,255],再合并通道并裁剪填充区域,最后恢复原始尺寸。
推理性能与运行环境
项目使用CPU进行推理,并在界面上显示推理耗时。由于模型输入尺寸较小,推理速度可能较快,但具体耗时取决于硬件。代码中未提及GPU加速,因此对于大批量处理可能效率有限。
实现注意事项
代码在Form1_Load中初始化模型和输入张量,并默认加载"1.jpg"。用户可通过按钮选择图片并执行卡通化。需注意模型文件需与可执行文件同目录,且输入图像路径不能为空。此外,输出图像可能因填充和裁剪导致边缘轻微失真。
Q&A
这个人像卡通化项目使用了哪些工具和库?
该项目使用了VS2022、.net framework 4.8、OpenCvSharp 4.8和Microsoft.ML.OnnxRuntime 1.16.2。
如何选择图片进行人像卡通化处理?
使用OpenFileDialog选择图片,选择后会在界面上显示该图片。
人像卡通化的推理过程是怎样的?
推理过程包括将处理后的图像数据转换为输入张量,运行推理模型,并将输出结果转换为图像格式。
如何处理输入图像以适应模型要求?
输入图像会被缩放和颜色转换,以适应模型的输入要求,最终转换为输入张量。
推理结果如何显示在界面上?
推理结果被转换为图像格式后,会显示在界面的第二个图片框中。
如何记录推理耗时并在界面上显示?
在推理开始和结束时记录时间差,并在界面上的文本框中显示推理耗时。