在 Azure Custom Vision 上训练自定义对象检测模型(第 2 部分):测试模型





5.00/5 (2投票s)
在上一篇文章中,我们训练了一个简单的机器学习模型,用于识别图像中何时何地出现人类。本文将演示如何测试此模型并根据需要对其进行再训练。
本三部分系列文章演示了如何使用 Azure Custom Vision 高效地训练、测试和部署行人检测 AI 模型。
上一篇文章演示了如何训练模型以检测图像中是否存在人类。本文将在 Azure Custom Vision 中测试之前训练过的模型。它还将演示如何进一步训练模型并提高其准确性。
请注意,本系列中的所有代码都可以在GitHub上找到。
快速测试模型
Azure Custom Vision 提供了多种测试模型的方法。快速测试使用图像 URL 或上传的测试文件。
首先,转到 Azure Custom Vision 服务并选择您的项目。
在下一页上,单击右上角的“快速测试”。
现在,选择一张您未用于训练模型的图片。图片成功上传后,模型将返回预测结果,并在对象周围创建边界框。您还可以看到预测的对象标签以及置信度。
模型预测该测试图像中人的概率为 99.9%。然而,这个测试相对容易——图片清晰,没有其他物体。
找到另一张图片再次测试模型。这次,使用一张与下图类似的图片来了解模型在处理更复杂的图片时的表现。
糟糕!模型未能检测到图像中的人类。角度和视角可能与第一张图片中的差异很大。无论原因如何,模型尚未准备好部署,需要进一步训练。
用更多图像训练模型
为了提高模型的准确性,我们必须用更多图像来训练它。为此迭代提供更多图片,确保选择从不同角度拍摄的图片。此外,请考虑添加不同程度遮挡和截断的照片,以提高这些情况下的识别能力。这些多样化的照片也有助于模型涵盖极端情况并进行更准确的预测。
在行人检测项目中,单击“添加图像”以添加更多用于训练的图片。
此操作将打开一个窗口,用于选择和上传新的训练图像。上传所需的照片后,选择并标记每一张。请务必添加一些包含不同对象以及不包含任何对象的图像。此外,可以考虑使用具有看起来像人类的对象图像。
上传并标记完所有新图像后,单击右上角的“训练”。
在下一页上,再次选择“快速训练”以开始训练模型。您还可以调整“置信度”阈值。
训练完成后,再次测试模型性能。
单击右上角的“快速测试”并上传图像进行预测。
模型现在能够准确地检测图像中的人类——即使是那些以前让它困惑的人。
使用预测 API 测试模型
到目前为止,所有模型测试都通过上传到 Custom Vision UI 的测试图像完成。然而,Azure Custom Vision 还提供了预测 API 来从训练好的模型中获取预测。
在我们调用预测 API 之前,它的资源必须能够访问模型。因此,我们必须发布模型。
在您的项目中,单击“性能”选项卡。
在“性能”选项卡上选择要发布的迭代,然后单击顶部的“发布”。
在下一页上,指定“模型名称”并从菜单中选择“预测资源”。完成后,单击“发布”。
模型发布后,您将在已发布的迭代旁边看到“已发布”标签。
检索预测 URL 和密钥
模型发布后,下一步是调用预测 API。为此,请从项目“性能”选项卡上的“预测 URL”中检索所需信息。
预测 URL 提供了使用预测 API、预测 URL 和 预测密钥 的说明。
记下“预测 URL”和“预测密钥”,因为调用 API 时需要它们。
调用预测 API
预测 API 允许使用预测 URL 提交本地存储和互联网上的图像数据。首先,尝试使用本地存储中的图像调用服务。
有多种方法可以调用预测 API。在这种情况下,创建一个简单的 Python 程序,将图像提交给预测 API 并返回预测结果。
创建一个名为 _prediction.py_ 的 Python 文件。添加以下代码
import requests
url="<YOUR_PREDICTION_URL>"
headers={'content-type':'application/octet-stream','Prediction-Key':'<YOUR_PREDICTION_KEY>'}
result =requests.post(url,data=open("./test.jpeg","rb"),headers=headers)
json_obj = result.json()
for prediction in json_obj["predictions"]:
print(prediction)
该代码接收指定的图像,使用预测 URL 和预测密钥向 Custom Vision 服务发送请求。它还使用预测 URL 中选定的模型对图像进行评分并返回预测结果。
不要忘记用提供的 URL 和预测密钥替换它们。此外,请确保 `requests.post` 中的 `data` 参数指向测试图像。
完成后,执行程序
$ python3 prediction.py
成功执行后,程序将返回带有 `probability`、`tagName` 甚至 `boundingBox` 的预测结果。
转到 Custom Vision Web 门户并导航到“预测”以验证预测。在这里,您应该找到刚刚用于调用服务的图像。单击该图像。
边界框现在在图像中的人类周围可见。随意测试更多图片,以确保模型性能良好。
启用主动学习
当将图像提交到预测终结点时,无论是使用预测模型还是通过 UI 上传图像进行模型测试,Custom Vision 服务都会存储这些图像。开发人员可以在“预测”选项卡上查看这些图像,并使用它们进一步提高模型的性能。
转到“预测”选项卡,查看此迭代的所有预测图像。将鼠标悬停在图像上可查看预测的标签。
这些图像的顺序是那些最能改进模型的图像。
要将这些图像添加到训练数据中,请选择图像并更正标签。
单击正确预测的区域,并跳过未正确预测的区域。选定区域的边界将显示为白色而不是红色。
从“预测”选项卡中移除已更正的图像,并将其添加到训练图像集中。开发人员可以在“训练图像”中查看这些图像。
更正完所有图像后,单击“训练”以进行另一轮训练。
后续步骤
本文演示了如何使用 Custom Vision 服务的快速测试功能快速测试先前训练的 AI 模型。它还表明 Azure 的 Custom Vision 服务允许开发人员在任何阶段重新迭代和改进模型的性能。最后,它讨论了发布模型并通过调用预测 API 进行测试。
现在您已经训练并测试了模型,下一步是将模型部署到边缘设备。本系列最后一篇文章将演示如何在 Raspberry Pi 设备上部署 Custom Vision 模型以检测车辆前方的行人。
要了解如何通过更快的 AI 方法来驱动应用程序创新并获得持久的业务优势,请参阅Forrester 研究:通过专业的云 AI 服务为应用程序创新提供动力。