如何在Flux.jl中加载图像进行推理



我有一个使用特定数据集训练的模型。我最初并没有把这个设置分解成一个训练和测试集(我本应该这样做(。话虽如此,我想做一些特殊的测试,看看当我给它特定的图像时,模型是如何表现的。我试着做一些类似Images.load("/Users/logankilpatrick/Desktop/train/dog.10697.jpg")的事情来加载图像,然后将其直接传递给模型,但我没有得到大小不匹配的错误。加载图像的正确方式是什么?

要使用图像进行推理,您需要执行以下几个步骤:

x = Images.load("/Users/logankilpatrick/Desktop/train/dog.10697.jpg")
x = Images.imresize(x, (224,224)...) # 224x224 depends on the model size
x = permutedims(channelview(x), (3,2,1))
# Channelview returns a view of A, splitting out (if necessary) the color channels of A into a new first dimension.
x = reshape(x, size(x)..., 1) # Add an extra dim to show we only have 1 image
float32.(x) # Convert to float32 instead of float64
model(x)

请注意,根据您使用的模型和其他因素,其中一些可能会发生变化,但这是您需要做什么的总体想法。编写一个简单的函数来为您完成这项工作很可能会奏效。

最新更新