怎么利用pytorch训练好的模型测试单张图片

pytorch网络输入图片的格式是[B,C,H,W],分别为batch(每批送入网络的图片数量),图片通道数,图片高,图片宽。

torchvision.transforms可以对图像对象进行一系列裁剪、翻转等转换操作,其中也包括转换为tensor张量。(transforms.ToTensor())

而opencv读取的是ndarray格式,不能进行torchvision.transforms变换。

通过PIL的Image读取的图片是一个图片对象,可以进行裁剪翻转等torchvision.transforms变换。

np.ndarray与PIL.Image对象相互转换:注意opencv读入的是BGR格式,PIL读入的是RGB格式,pytorch中传入网络中的tensor通道也是RGB,所以如果将opencv读入的图片送入网络识别,需要先img=cv2.cvtColor(img, cv2.COLOR_BGR2RGB),然后再转换为PIL读入的格式pil_img=Image.fromarray(img),再通过transforms.Compose将其转换为网络输入格式送去识别。

numpy.array(img)                       img对象转化为np数组

Image.fromarray(arr)                 np数组转化为img对象

测试代码如下:

from PIL import Image
import torchvision.transforms as T
from models.mobilenet_master2 import MobileNet#导入自己定义的网络模型
from

你可能感兴趣的:(pytorch,pytorch,人工智能,python)