<img src="https://yellow-cdn.veclightyear.com/2b54e442/e2ece558-dc67-480d-aec2-093fa0dbd1a7.png" align="right" alt="" width="300"/>
```diff
+ 2023年7月更新:在新版本v1.2中增加了动作识别和跟踪的支持
计算机视觉
近年来,我们见证了计算机视觉领域的飞速发展,其应用涵盖了面部识别、图像理解、搜索、无人机、地图制作、半自动和自动驾驶车辆等。这些应用的关键部分是视觉识别任务,如图像分类、对象检测和图像相似度计算。
本仓库提供了构建计算机视觉系统的示例和最佳实践指南。其目标是构建一套全面的工具和示例,利用计算机视觉算法、神经架构的最新进展,以及这些系统的操作化。我们并不从头创建实现,而是借鉴现有的最先进的库,并在加载图像数据、优化和评估模型以及向云扩展方面构建更多实用工具。此外,我们在这一领域工作多年,旨在解答常见问题,指出常见陷阱,并展示如何使用云进行训练和部署。
我们希望这些示例和工具可以通过简化从定义业务问题到开发解决方案的体验,显著减少“上市时间”。此外,这些示例笔记本将作为指南,展示如何在多种语言中使用这些工具和最佳实践。
这些示例以Jupyter笔记本和常见的实用函数的形式提供。所有示例均使用PyTorch作为底层深度学习库。
示例
本仓库支持各种计算机视觉场景,这些场景要么处理单个图像:
也支持如动作识别这类将视频序列作为输入的场景:
目标受众
本仓库的目标受众包括具备不同计算机视觉知识水平的数据科学家和机器学习工程师,因为我们的内容是源代码,并针对的是定制的机器学习建模。提供的工具和示例旨在加速解决现实世界的视觉问题。
开始使用
要开始使用,请导航到设置指南,该指南列出了运行本仓库中的笔记本所需的计算环境和依赖项的设置说明。设置好环境后,请导航到场景文件夹并开始浏览笔记本。我们建议从图像分类笔记本开始,因为这介绍了其他场景也使用的概念(例如在ImageNet上进行预训练)。
或者,我们支持Binder ,这使得仅通过点击链接在Web浏览器中尝试我们的一个笔记本变得非常容易。然而,Binder是免费的,因此只提供有限的CPU计算能力且不支持GPU。预计笔记本运行速度非常慢(通过降低图像分辨率到例如60像素可以有所改善,但会以低准确性为代价)。
场景
以下是本仓库中涵盖的常用计算机视觉场景的总结。对于每个主要场景(“基础”),我们提供有效构建您自己的模型的工具。这包括简单任务如在您自己的数据上微调您的模型,复杂任务如硬负面挖掘甚至模型部署。
场景 | 支持 | 描述 |
---|---|---|
分类 | 基础 | 图像分类是一种监督的机器学习技术,用于学习和预测给定图像的类别。 |
相似度 | 基础 | 图像相似度是一种在给定一对图像的情况下计算其相似度得分的方法。给定一张图像,它可以帮助您识别数据集中最相似的图像。 |
检测 | 基础 | 目标检测是一种技术,可以检测图像中某个物体的边界框。 |
关键点 | 基础 | 关键点检测可用于检测物体上的特定点。我们提供了一个预训练模型用于人体姿态估计中的身体关节检测。 |
分割 | 基础 | 图像分割为图像的每个像素分配一个类别。 |
动作识别 | 基础 | 动作识别用于识别视频/网络摄像头中的动作是什么(例如“跑步”、“打开瓶子”)以及相应的开始/结束时间。我们还实现了动作识别的i3d实现,可以在(contrib)[contrib]下找到。 |
跟踪 | 基础 | 跟踪允许检测和跟踪视频序列中的多个目标。 |
人群计数 | 贡献 | 计算低人群密度(例如少于10人)和高人群密度(例如数千人)场景中的人数。 |
我们将支持的计算机视觉场景分为两个位置:(i) 基础:位于“utils_cv”和“scenarios”文件夹中的代码和笔记本,遵循严格的编码指南,经过良好测试并维护;(ii) 贡献:位于“contrib”文件夹中的代码和其他资产,主要涵盖使用最尖端状态技术的较不常见的计算机视觉场景。“contrib”中的代码未定期测试或维护。
Azure上的计算机视觉
请注意,对于某些计算机视觉问题,您可能不需要构建自己的模型。相反,Azure上提供了预构建或易于定制的解决方案,无需任何定制编码或机器学习专业知识。我们强烈推荐评估这些解决方案是否能充足解决您的问题。如果这些解决方案不适用,或者这些解决方案的准确性不够,则可能需要更复杂且耗时的定制方法。
以下Microsoft服务提供了可解决常见计算机视觉任务的简单解决方案:
-
视觉服务 是预训练REST API的集合,可以调用用于图像标记、面部识别、OCR、视频分析等。这些API开箱即用,对机器学习要求较低,但定制能力有限。请参阅各种可用的演示以了解功能(例如计算机视觉)。该服务可以通过API调用或通过SDK(支持.NET, Python, Java, Node和Go语言)使用
-
自定义视觉 是一种SaaS服务,用于根据用户提供的训练集训练并部署模型为REST API。所有步骤包括图像上传、注释和模型部署都可以通过直观的UI或通过SDK(支持.NET, Python, Java, Node和Go语言)进行。训练图像分类或目标检测模型可以以最低的机器学习专业知识实现。相比使用预训练的认知服务API,自定义视觉提供了更多的灵活性,但需要用户提供和注释自己的数据。
如果您需要训练自己的模型,以下服务和链接提供了可能有用的额外信息。
-
Azure机器学习服务(AzureML) 是一项帮助用户加速机器学习模型训练和部署的服务。虽然不是专门针对计算机视觉工作负载,AzureML Python SDK可以用于将机器学习解决方案可扩展且可靠地训练和部署到云。我们在本仓库中的一些笔记本中利用Azure机器学习服务(例如部署到Azure Kubernetes服务)
-
Azure AI参考架构 提供了一组示例(由代码支持),展示了如何构建利用多个云组件的常见AI工作负载。虽然不是专门针对计算机视觉,这些参考架构涵盖了许多机器学习工作负载,如模型部署或批量评分。
构建状态
AzureML测试
贡献
本项目欢迎贡献和建议。请参阅我们的贡献指南。