我应该如何预处理图像以使用高效的netv2-b0网络进行推理?

问题描述 投票:0回答:1

我使用 openmmlab 训练了一个用于图像分类的高效 netv2-b0 模型。此外,我使用 mmdeploy 创建并推断相应的 onnx 模型(在 cpu 上),它给出了正确的结果。但是,我现在尝试使用 TensorRT 在 C++ 中实现模型,但我不明白在将图像加载到 GPU 内存中进行模型推理之前必须如何预处理图像。

  1. 我目前正在使用双线性插值将图像从原始尺寸 256x256 缩放到模型预期格式 224x224。在训练期间,使用双三次插值来缩放图像,但我认为差异可以忽略不计。

  2. 据我了解,像素需要通过减去平均值并除以标准差来转换为[1.0,-1.0]范围内的浮点值(keras的模型信息)。我使用的是我在 openmmlab 训练期间使用的模型的 config_file 中给出的平均值和标准差 (config_file)。

    mean[103.53, 116.28, 123.675], std[57.375, 57.12, 58.395]
    

如何正确处理图像的rgb值([255,0]范围内)以将其转换为所需的[1.0,-1.0]范围?

artificial-intelligence image-classification tensorrt efficientnet openmmlab
1个回答
0
投票

我做了更多研究。

  • 方便的是,与使用双三次调整大小的 v1 相比,efficientnet 的 v2 使用双线性调整大小。

  • 8位图像通过执行

    从[255,0]标准化到范围[1.0,-1.0]

    (n - 128)/ 128

    所有价值观。不减去平均值或除以标准差。

这些是我的来源:
https://github.com/google/automl/blob/master/efficientnetv2/preprocessing.py https://github.com/NVIDIA/TensorRT/blob/master/samples/python/efficientnet/README.md

© www.soinside.com 2019 - 2024. All rights reserved.