computervision-recipes 项目介绍
背景介绍
近年来,计算机视觉领域经历了惊人的增长,应用包括人脸识别、图像理解、搜索、无人机、地图构建以及半自动和自动驾驶车辆等。这些应用中一个关键部分是视觉识别任务,比如图像分类、物体检测和图像相似度等。
项目目标
computervision-recipes 项目旨在提供构建计算机视觉系统的示例和最佳实践指南。其目标是利用最新的计算机视觉算法和神经网络架构,结合云端环境的实际应用,创建一套全面的工具和示例。相较于从头开始实现,项目更倾向于使用现有的前沿库,并提供数据加载、模型优化、评估和扩展到云端等额外的实用工具。
该项目希望,通过简化从业务问题定义到解决方案开发的流程,大幅减少市场推向时间。此外,提供的示例笔记本旨在作为指南,展示在各种编程语言中的最佳实践和工具使用。
项目特点
- 提供采用 PyTorch 的计算机视觉示例,并配有 Jupyter 笔记本以及常用的实用函数。
- 包含的视觉场景既支持对单张图片操作,也支持视频序列输入的动作识别等复杂场景。
- 项目对象为具备不同程度计算机视觉知识的数据科学家和机器学习工程师,旨在为实际视觉问题提供解决方案加速器。
使用指南
使用者可以通过访问项目的设置指南进行环境配置,然后浏览Scenarios文件夹开始探索各个笔记本。建议从图像分类的笔记本开始,因为其中引入的概念也适用于其他场景,比如基于 ImageNet 的预训练。
项目还通过Binder支持在线运行笔记本,虽然性能可能受到限制。
支持的场景
项目覆盖多种常用的计算机视觉场景,包括:
- 分类 (Classification):学习和预测给定图像的类别。
- 相似度 (Similarity):计算两张图片间的相似度分数。
- 检测 (Detection):检测图像中物体的边界框。
- 关键点 (Keypoints):检测物体上的特定点,比如人体姿态的关节点。
- 分割 (Segmentation):为图像每个像素分配类别。
- 动作识别 (Action recognition):识别视频录像中的动作及其开始和结束时间。
- 追踪 (Tracking):在视频序列中检测并追踪多个物体。
- 人群计数 (Crowd counting):在不同人群密度下计数。
项目代码库分为两部分:基础的“base”代码(代码和笔记本遵循严格性编码规范,并进行充分的测试和维护),以及位于“contrib”文件夹的“contrib”代码,主要覆盖不常见的前沿计算机视觉场景。
Azure上的计算机视觉
对于某些计算机视觉问题,Azure 提供的预构建或易于定制的解决方案可能已经足够解决问题,这些不需要自定义编码或机器学习知识。例如:
- Vision Services:预训练的 REST APIs,可以实现图像标记、人脸识别、文字识别等。
- Custom Vision:提供了一种简单的界面,通过用户提供的训练集训练和部署模型,并提供更高的灵活性。
若需自己训练模型,Azure Machine Learning 服务和 Azure AI 参考架构则可以为扩展和可靠的训练和部署提供支持。项目中的多个笔记本展示了如何在云端使用这些工具进行模型部署。
贡献及建议
该项目欢迎各种贡献和建议,具体请参考贡献指南。