Azure 上的对象检测入门

已完成

可以通过使用高级深度学习方法来创建对象检测机器学习模型。 但是,此方法需要大量的专业知识和训练数据。 Azure 中的 Azure AI 自定义视觉服务让你能够创建对象检测模型来满足许多计算机视觉方案的需求,你无需具备太多深度学习专业知识,也不用训练很多图像。

Azure AI 自定义视觉的 Azure 资源

使用 Azure AI 自定义视觉创建对象检测解决方案,包括三个主要任务:

  • 上传和标记图像
  • 定型模型
  • 发布训练的模型,以便客户端应用程序可以使用它来生成预测

对于上述每个任务,都需要 Azure 订阅中的资源。 可以使用以下类型的资源:

  • 自定义视觉:Azure AI 自定义视觉的专用资源。 可以创建训练资源、预测资源,或者同时创建训练预测资源。
  • Azure AI 服务:通用资源,包括 Azure AI 自定义视觉以及许多其他 Azure AI 服务。 可将此类资源用于训练、预测或同时用于两者。

如果希望从使用模型预测图像分类的客户端应用程序单独跟踪模型训练的资源使用情况,可以将训练资源和预测资源分开。 但是,这会让图像分类解决方案的开发变得有点混乱。

最简单的方法是将常规 Azure AI 服务资源用于训练和预测。 当你使用常规资源时,只需关心一个终结点(托管服务的 HTTP 地址)和密钥(客户端应用程序用来验证自身身份的机密值)。

如果选择创建自定义视觉资源,可以选择训练预测两者。 重要提示,如果选择“两者”,则会创建两个资源,一个用于训练,一个用于预测。

也可以采用混合搭配的方法,即将专用的自定义视觉资源用于训练,但将模型部署到 Azure AI 服务资源以用于预测。 使用此方法时,请确保在同一区域中创建训练和预测资源。

图像标记

在训练对象检测模型之前,必须在一组训练图像中标记类和边界框的坐标。 此过程会非常耗时,但自定义视觉门户提供了能简化该过程的图形界面。 该接口可以自动检测图像中的独立物体,并为你标出这些区域。 你可以在这些建议的边界框上应用类标签,或拖动调整边界框区域。 此外,在使用初始数据集进行标记和训练后,Azure AI 计算机视觉可使用智能标记为添加到训练数据集的图像建议类和边界框。

为物体检测标记训练图像时,请记住一些关键注意事项。 确保有足够的相关物体的图像,最好是从多个角度。 确保每个物体周围的边界框紧凑也很重要。

模型训练和评估

若要训练模型,可以使用自定义视觉门户,或者如果你有必要的编程经验,也可以使用 Azure AI 自定义视觉的特定于编程语言的软件开发工具包 (SDK)。 训练对象检测模型可能需要一些时间,具体取决于训练图像、类和每个图像中对象的数量。

模型训练是一个迭代过程。 Azure AI 自定义视觉会使用部分数据反复训练模型,但会保留部分数据以评估模型。 训练过程结束时,你可以使用以下评估指标来判断训练后的模型的性能:

  • 精准率:该模型正确识别的类预测的百分比是多少? 例如,如果模型预测 10 张图像是橘子,实际上其中 8 张是橘子,那么精准率为 0.8 (80%)。
  • 召回率:该模型正确做出的类预测的百分比是多少? 例如,如果有 10 张苹果的图像,而模型找到了其中 7 张,那么召回率为 0.7 (70%)。
  • 平均精准率 (mAP):总体指标,同时考虑所有类的精准率和召回率。

使用模型进行预测

在对模型进行训练并对其评估性能满意之后,可以将模型发布到预测资源中。 发布模型时,可为其指定一个名称(默认名称为“IterationX”,其中 X 是训练模型的次数)。

若要使用你的模型,客户端应用程序开发人员需要以下信息:

  • 项目 ID:你为训练模型而创建的自定义视觉项目的唯一 ID。
  • 模型名称:在发布期间分配给模型的名称。
  • 预测终结点:用来发布模型的预测资源(而非训练资源)的终结点的 HTTP 地址。
  • 预测密钥:用来发布模型的预测资源(而非训练资源)的身份验证密钥。