目录
快速测试模型
用更多图像训练模型
使用预测API测试模型
检索预测URL和密钥
调用预测API
启用主动学习
下一步
在这里,我们演示了如何测试模型,既可以手动使用通过自定义视觉UI上传的图像,也可以自动使用测试数据集。然后我们演示如何添加额外数据并在需要额外训练时重新训练模型。
这个由三部分组成的系列演示了如何使用Azure自定义视觉有效地训练、测试和部署行人检测AI模型。
上一篇文章演示了如何训练模型来检测图像中是否存在人类。本文将在Azure自定义视觉中测试之前训练的模型。它还将演示如何进一步训练模型并提高其准确性。
请注意,本系列中的所有代码都可以在GitHub上找到。
快速测试模型Azure自定义视觉提供了用于测试模型的各种选项。快速测试使用图像URL或上传的测试文件。
首先,转到Azure自定义视觉服务并选择您的项目。
在下一页上,单击右上角的快速测试。
现在,选择您未用于训练模型的图像。图片上传成功后,模型会返回预测结果并在对象周围创建一个边界框。您还可以查看预测的对象标签以及概率。
该模型预测测试图像有99.9%的概率是人类。然而,这个测试相对容易——图片很清晰,没有其他物体。
找到另一张图像再次测试模型。这一次,使用类似于下图的图片来了解模型将如何处理更复杂的图片。
哎呀!该模型无法检测到图像中的人。角度和视角可能与第一张图像中的有很大不同。无论出于何种原因,该模型尚未准备好部署,需要进一步培训。
用更多图像训练模型为了提高模型的准确性,我们必须用更多的图像来训练它。为这次迭代提供额外的图片,确保选择从不同角度拍摄的图像。此外,考虑添加具有不同程度遮挡和截断的照片,以提高在这些情况下的识别能力。这些多样化的照片也有助于模型覆盖极端情况并更准确地进行预测。
单击添加图像以添加更多照片以在行人检测项目中进行训练。
此操作会打开一个窗口以选择和上传新的训练图像。上传所需的照片后,选择并标记每张照片。请务必添加一些包含不同对象的图像和一些不包含任何对象的图像。此外,考虑使用带有与人类相似的对象的图像。
上传并标记所有新图像后,单击右上角的训练。
在下一页上再次选择快速训练以开始训练模型。您还可以调整概率阈值。
训练完成后,再次测试模型性能。
点击右上角的快速测试,上传图片进行预测。
该模型现在可以准确地检测图像中的人类——即使是那些以前混淆它的人。
使用预测API测试模型到目前为止,所有模型测试都是通过上传到自定义视觉UI的测试图像进行的。但是,Azure自定义视觉还提供了预测API以从经过训练的模型中获取预测。
在我们调用Prediction API之前,它的资源必须访问模型。所以,我们必须发布模型。
在您的项目中,单击性能选项卡。
在Performance选项卡上选择要发布的迭代,然后单击顶部的Publish 。
指定模型名称并从下一页的菜单中选择预测资源。完成后,单击发布。
发布模型后,您会看到已发布的标签出现在已发布的迭代旁边。
检索预测URL和密钥模型发布后,下一步是调用预测API。为此,请从项目的性能选项卡上的预测URL中检索所需信息。
预测URL提供有关使用预测API、预测URL和Prediction-Key的说明。
请注意Prediction URL和Prediction-Key, 因为您需要它们来调用API。
调用预测API预测API允许使用预测URL从本地存储和Internet提交图像数据。首先,尝试使用本地存储中的图像调用服务。
各种方法可以调用预测API。在这种情况下,创建一个简单的Python程序,将图像提交到预测API并返回预测。
创建一个名为prediction.py的Python文件。添加以下代码:
import requests
url=""
headers={'content-type':'application/octet-stream','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和预测键向自定义视觉服务发布请求。它还使用预测URL中的选定模型对图像进行评分并返回预测。
不要忘记将URL和Prediction Key替换为提供的内容。此外,确保requests.post中的数据参数指向测试图像。
完成后,执行程序:
$ python3 prediction.py
成功执行后,程序会返回带有probability、tagName甚至boundingBox的预测。
转到自定义视觉门户网站并导航到预测以验证预测。在这里,您应该找到刚刚用于调用服务的图像。单击图像。
边界框现在在图像中的人周围可见。随意测试更多图片以确保模型表现良好。
启用主动学习将图像提交到预测端点时,无论是使用预测模型还是通过UI上传图像来测试模型,自定义视觉服务都会存储这些图像。开发人员可以在“预测”选项卡上查看这些图像,并使用它们进一步提高模型的性能。
移动到预测选项卡以查看此迭代的所有预测图像。将鼠标悬停在图像上以查看预测的标签。
这些图像按最能改进模型的顺序排列。
要将这些图像添加到训练数据中,请选择图像并更正标签。
单击准确预测的区域并跳过未预测的区域。选定区域的边界显示为白色而不是红色。
从“预测”选项卡中删除校正后的图像,并将其添加到训练图像集中。开发人员可以在Training Images中查看这些图像。
校正完所有图像后,单击“训练”进行另一轮训练。
本文演示了如何使用自定义视觉服务的快速测试功能快速测试之前训练的AI模型。它还表明,Azure的自定义视觉服务允许开发人员在任何阶段重新迭代和改进模型的性能。最后,它讨论了发布模型并通过调用预测API对其进行测试。
现在您已经训练和测试了模型,下一步是将模型部署到边缘设备。本系列的最后一篇文章将演示如何在Raspberry Pi设备上部署自定义视觉模型来检测车辆前方的行人。
要了解如何通过更快的AI方法推动应用程序创新并获得持久的业务收益,请查看Forrester研究:通过专业云AI服务推动应用程序创新。
https://www.codeproject.com/Articles/5326982/Training-a-Custom-Object-Detection-Model-on-Azur-2