ONNX Runtime简介
ONNX Runtime 是一个跨平台的推理和训练机器学习加速器。ONNX 运行时推理可以实现更快的客户体验和更低的成本,支持来自深度学习框架(如 PyTorch 和 TensorFlow/Keras)以及经典机器学习库(如 scikit-learn、LightGBM、XGBoost 等)的模型。 ONNX 运行时与不同的硬件、驱动程序和操作系统兼容,并通过利用硬件加速器(如果适用)以及图形优化和转换来提供最佳性能。

ResNet50v2简介
ResNet50v2 是一种深度卷积神经网络架构,是 ResNet(Residual Network,残差网络)系列的一部分。ResNet 是由何凯明等人在 2015 年提出的,它通过引入残差块(Residual Block)解决了深度神经网络训练过程中梯度消失和梯度爆炸的问题,使得构建非常深的网络成为可能。ResNet50v2 被广泛应用于各种计算机视觉任务,如图像分类、目标检测、图像分割等。由于其深度和强大的特征学习能力,ResNet50v2 在众多基准测试中表现出色,是许多研究和应用中的首选模型之一。
示例
这个示例代码在
https://github.com/microsoft/onnxruntime/tree/main/csharp/sample/Microsoft.ML.OnnxRuntime.ResNet50v2Sample
fork一份,克隆到本地,在本地打开这个项目,项目结构如下所示:

依赖的包除了OnnxRuntime还有ImageSharp。
ImageSharp简介
ImageSharp 是一个新的、功能齐全、完全托管的跨平台 2D 图形库。ImageSharp 旨在简化图像处理,为您带来一个非常强大而又非常简单的 API。
ImageSharp 从头开始设计,具有灵活性和可扩展性。该库为常见的图像处理操作提供了 API 端点,并为开发其他操作提供了构建块。
ImageSharp 针对 .NET 8 构建,可用于设备、云和嵌入式/IoT 方案。

下载 ResNet50 v2 ONNX 模型,下载地址在:
https://github.com/onnx/models/blob/main/validated/vision/classification/resnet/model/resnet50-v2-7.onnx
读取路径
首先,源代码中是通过程序参数读取模型的路径和要测试的图像的路径,也可以直接赋值:
// Read paths
//string modelFilePath = args[0];
//string imageFilePath = args[1];
string modelFilePath = @"你的路径\Microsoft.ML.OnnxRuntime.ResNet50v2Sample\resnet50-v2-7.onnx";
string imageFilePath = @"你的路径\Microsoft.ML.OnnxRuntime.ResNet50v2Sample\狮子.jpg";
读取图像
接下来,我们将使用跨平台图像库 ImageSharp 读取图像:
// Read image
using Image<Rgb24> image = Image.Load<Rgb24>(imageFilePath);
调整图像大小
接下来,我们将图像大小调整为模型期望的适当大小;224 像素 x 224 像素:
using Stream imageStream = new MemoryStream();
image.Mutate(x =>
{
x.Resize(new ResizeOptions
{
Size = new Size(224, 224),
Mode = ResizeMode.Crop
})

最低0.47元/天 解锁文章
1125

被折叠的 条评论
为什么被折叠?



