『跟我做AI工程化』使用Python原生实现PyTorch的Transforms数据变换操作[已完成:Resize、ToTensor与normalize]

·  阅读 276

 

0x01:引子

 

在应用PyTorch训练好的模型时,为了保证模型的准确稳定性,需要保持与训练时相同的操作。

实际的应用部署中依赖项越少越好,所以下面笔者将演示如何在Python中不使用“torchvision.transforms”包来实现数据转换操作。抛砖引玉,讲述笔者如何思考与实现以便于读者朋友在Java与C++平台也能完成类似操作。

在模型的训练与测试时,我们通常会借助“torchvision.transforms”包来实现那个对数据变换的操作。一般会包括统一化图片的尺寸(Resize)、数据格式转化(ToTensor)与数据归一化大小(Normalize)等操作。

具体步骤:

  1. 使用“torchvision.transforms”来定义一个数据变化方法:trans_f。
  2. 通过调用trans_f实现数据转化

如下所示:

import cv2
import PIL
import numpy as np
import torchvision

trans_f = torchvision.transforms.Compose([

            torchvision.transforms.Resize((64,128)),
            torchvision.transforms.ToTensor(),
            torchvision.transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])
    ])


bgr_img = cv2.imread("demo.png")

src_img = c
复制代码