PyTorch中图像识别模型的测试

17 Mar 2025 | 5 分钟阅读

在上一节中,我们实现了一个神经网络或创建了一个对手写数字进行分类的模型。现在,我们通过从网络上获取图像来测试我们的模型。我们使用了以下图像

https://images.homedepot-static.com/productImages/007164ea-d47e-4f66-8d8c-fd9f621984a2/svn/architectural-mailboxes-house-letters-numbers-3585b-5-64_1000.jpg

当您将此链接粘贴到您的浏览器中时,您将看到数字5的图像,如下图所示

Testing of Image Recognition Model in PyTorch

看完之后,我们会意识到它是数字5。现在,我们将尝试让我们的网络来预测它。

我们有以下步骤来预测数字图像

步骤 1

第一步,我们将执行一个 GET 请求来检索图像数据。要发出 GET 请求,我们需要导入request,如下所示

现在,我们设置一个变量URL,并将链接赋值为一个字符串。

步骤 2

下一步,我们设置一个变量response,它的值将从request的get()方法中获得。 get() 方法将包含两个参数,即URL和stream,stream将等于true。

步骤 3

我们将使用响应的原始内容来获取图像。为此,我们首先必须从 PIL (Python Image Library) 导入 Image ,如下所示。

我们使用图像的 open() 方法,并将响应的原始内容作为参数传递。从该方法返回的值将被赋值给一个名为img的变量,如下所示

现在,我们绘制图像以确保一切正常。

当我们运行它时,会因为PIL而生成错误。我们必须首先安装pillow才能运行此代码。我们必须在anaconda命令提示符上运行 conda install -c anaconda pillow 命令来安装pillow。

当您运行代码时,它将给出预期的输出。

Testing of Image Recognition Model in PyTorch

步骤 4

我们需要确保图像与神经网络接受训练的内容相对应。我们的图像是1000*1000像素的,所以我们需要把它变成28*28的灰度图像,就像训练数据中的图像一样。在我们的训练图像数据集中,图像有一个黑色背景和一个白色前景,而在上面的图像中,有一个白色背景和一个黑色前景。现在,我们的首要任务是预处理这个图像。

我们将使用 PIL.ImageOpsinvert () 方法,并将我们的图像作为参数传递。此方法将反转图像的颜色。

此图像是RGB格式的,具有三个像素强度值通道,这将因多种原因而产生问题。为此,我们必须将此图像转换为二进制黑白图像,我们将按如下方式转换此图像

我们将以与转换所有其他训练图像相同的方式转换此图像。我们必须将图像转换为28*28像素,因此我们必须在转换链组合中添加一个参数 resize ,如下所示

现在,我们的图像是张量形式,所以我们必须将它转换为numpy数组。在绘制图像之前,我们必须导入 PIL.ImageOps ,然后按如下方式绘制图像


Testing of Image Recognition Model in PyTorch

步骤 5

现在,我们将把这个图像输入到我们的神经网络中进行预测。我们将以与MNIST相同的方式进行。

它会给我们预期的预测,如下所示

Testing of Image Recognition Model in PyTorch

步骤 6

下一步,我们包装我们的验证加载器。它将创建一个对象,允许我们一次遍历一个可变的验证加载器元素。我们通过在我们的dataiter上调用next来一次访问一个元素。 next () 函数将抓取我们的验证数据的第一批数据,并且该验证数据将被拆分为图像和标签,如下所示

为了进行预测,我们必须像以前一样重塑图像,并且我们需要所有图像的输出和预测。

步骤 7

现在,我们将绘制批处理中的图像及其相应的标签。它将在plt的figure函数的帮助下完成,并将fig大小设置为整数25*4的元组,这将指定图形的宽度和高度。

现在,我们从批处理中绘制20个MNIST图像。我们使用add_subplot()方法将一个子图添加到当前图中,并将2、10和idx作为函数的参数传递。这里,2是行数,10是列数,idx是索引。

现在,我们将借助im_show()函数显示我们的图像,并为每个图像图添加标题,如下所示

最后调用plt.show(),它会给我们预期的结果。

Testing of Image Recognition Model in PyTorch

完整代码


Testing of Image Recognition Model in PyTorch

Testing of Image Recognition Model in PyTorch

它正确地预测了除一个之外的所有图像,这是我们深度神经网络所期望的,因为实际上图像分类最好用卷积神经网络来完成。