图像分类
本目录提供了构建图像分类系统的示例和最佳实践。我们的目标是让用户能够轻松快速地在自己的数据集上训练高精度分类器。我们提供了带有预设默认参数的示例 Notebook,这些参数已被证明在各种数据集上表现良好。我们还包括了关于常见陷阱和最佳实践的详尽文档。此外,我们展示了如何使用微软的云计算平台 Azure 来加速大型数据集的训练或将模型部署为 Web 服务。
图像分类(单个对象) | 图像分类(多个对象) |
---|---|
![]() |
![]() |
我们推荐使用 PyTorch 作为深度学习平台,因为它易于使用、调试简单且在数据科学社区中广受欢迎。对于计算机视觉功能,我们也高度依赖 fast.ai,这是一个带有丰富深度学习功能和详尽文档的 PyTorch 数据科学库。我们强烈建议观看 2019 fast.ai 讲座系列视频以了解底层技术。fast.ai 的 文档 也是宝贵的资源。
常见问题
“训练模型需要多少图像?”或“如何标注图像?”等常见问题的答案可以在 FAQ.md 文件中找到。
Notebook
我们提供了几个 Notebook,展示了图像分类算法是如何设计、评估和操作化的。以 0
开头的 Notebook 旨在按顺序运行,因为它们之间存在依赖关系。这些 Notebook 包含入门级“必需”材料。以 1
开头的 Notebook 可以被视为可选,并包含更复杂和专业的专题。
虽然所有 Notebook 都可以在 Windows 中执行,但我们发现 fast.ai 在 Linux 操作系统上速度快得多。此外,使用 GPU 可以显著提高训练速度。我们建议使用带有 V100 GPU 的 Azure 数据科学虚拟机(说明,价格表)。
我们还发现有些浏览器无法正确渲染 Jupyter 小部件。如果您遇到问题,请尝试使用其他浏览器,例如 Edge 或 Chrome。
Notebook 名称 | 描述 |
---|---|
00_webcam.ipynb | 使用预训练模型演示从计算机摄像头获取图像的推理。 |
01_training_introduction.ipynb | 介绍了模型训练和评估的一些基本概念。 |
02_multilabel_classification.ipynb | 介绍了多标签分类,并阐述了训练多标签和单标签分类模型之间的主要区别。 |
03_training_accuracy_vs_speed.ipynb | 训练一个高精度模型与一个快速推理速度的模型。 用此来训练您自己的数据集! |
10_image_annotation.ipynb | 一个简单的图像标注 UI。 |
11_exploring_hyperparameters.ipynb | 使用网格搜索寻找最佳模型参数。 |
12_hard_negative_sampling.ipynb | 演示如何使用难负例来提高模型性能。 |
20_azure_workspace_setup.ipynb | 设置您的 Azure 资源和 Azure 机器学习工作区。 |
21_deployment_on_azure_container_instances.ipynb | 使用 Azure 容器实例 (ACI) 部署通过 REST API 公开的训练模型。 |
22_deployment_on_azure_kubernetes_service.ipynb | 使用 Azure Kubernetes 服务 (AKS) 部署通过 REST API 公开的训练模型。 |
23_aci_aks_web_service_testing.ipynb | 测试部署在 ACI 或 AKS 上的模型。 |
24_exploring_hyperparameters_on_azureml.ipynb | 使用 AzureML 的 HyperDrive 执行高度并行的参数扫描。 |
Azure 增强型 Notebook
某些 Notebook 中使用了 Azure 产品和服务,以提高大规模开发分类系统的效率。
要成功运行这些 Notebook,用户需要 Azure 订阅,或者可以免费使用 Azure。
Notebook 中包含的 Azure 产品包括:
-
Azure 机器学习服务 - Azure 机器学习服务是一种云服务,用于在云提供的广泛规模下训练、部署、自动化和管理机器学习模型。它在各种 Notebook 中用于与 AI 模型开发相关的任务,例如部署。20_azure_workspace_setup 展示了如何设置您的 Azure 资源并连接到 Azure 机器学习服务工作区。
-
Azure 容器实例 - 您可以使用 Azure 机器学习服务将分类模型托管在 Azure 容器实例 (ACI) 上的 Web 服务部署中。ACI 适用于低规模、基于 CPU 的工作负载。21_deployment_on_azure_container_instances 解释了如何通过 Azure ML 将 Web 服务部署到 ACI。
-
Azure Kubernetes 服务 - 您可以使用 Azure 机器学习服务将分类模型托管在 Azure Kubernetes 服务 (AKS) 上的 Web 服务部署中。AKS 适用于大规模生产部署,并提供自动扩展和快速响应时间。22_deployment_on_azure_kubernetes_service 解释了如何通过 Azure ML 将 Web 服务部署到 AKS。