简介
OpenVINO™ 训练扩展是一个用于计算机视觉的低代码迁移学习框架。该框架的API和CLI命令使用户能够轻松快速地训练、推理、优化和部署模型,即使在深度学习领域经验不足的情况下也能使用。OpenVINO™ 训练扩展基于PyTorch和OpenVINO™ toolkit,提供了多种模型架构、学习方法和任务类型的组合。
OpenVINO™ 训练扩展为每种支持的任务类型提供了一个"配方",其中包含构建模型所需的全部信息。模型模板在各种数据集上经过验证,可作为获取最佳通用模型的一站式商店。如果您是经验丰富的用户,可以基于torchvision、mmcv和OpenVINO Model Zoo (OMZ)配置自己的模型。
此外,OpenVINO™ 训练扩展还提供了自动配置功能,以提高易用性。框架将分析您的数据集,识别最适合的模型,并确定最佳输入尺寸设置和其他超参数。开发团队正在不断扩展这些自动配置功能,以使训练尽可能简单,使得单个CLI命令就能获得准确、高效且稳健的模型,可直接集成到您的项目中。
主要特性
OpenVINO™ 训练扩展支持以下计算机视觉任务:
- 分类,包括多类、多标签和层次图像分类任务。
- 目标检测,包括旋转边界框支持
- 语义分割
- 实例分割,包括分块算法支持
- 动作识别,包括动作分类和检测
- 异常识别任务,包括异常分类、检测和分割
- 视觉提示任务,包括分割任意模型、零样本视觉提示
OpenVINO™ 训练扩展支持以下学习方法:
- 监督学习,增量训练,包括类增量场景。
OpenVINO™ 训练扩展提供以下易用性功能:
- 自动配置。OpenVINO™ 训练扩展分析提供的数据集并选择合适的任务和模型,以提供最佳的精度/速度平衡。
- Datumaro 数据前端:OpenVINO™ 训练扩展支持每个任务最常见的学术领域数据集格式。我们不断努力扩展支持的格式,以提供更多数据集格式选择的自由。
- 分布式训练,当您拥有多个 GPU 时可加速训练过程
- 混合精度训练,以节省 GPU 内存并使用更大的批量大小
- 集成高效的超参数优化模块(HPO)。通过数据集代理和内置超参数优化器,与其他现成工具相比,您可以获得更快的超参数优化。超参数优化根据您的资源预算动态调度。
安装
请参阅安装指南。 如果您想对库进行修改,建议进行本地安装。
从 PyPI 安装
使用 pip 安装库是开始使用 otx 最简单的方法。pip install otx[base]
对于 zsh 用户,可以使用以下替代方法:
pip install 'otx[base]'
从源代码安装
要从源代码安装,您需要克隆存储库并使用 pip 通过可编辑模式安装库。# 强烈建议使用虚拟环境
# 使用 conda
yes | conda create -n otx_env python=3.10
conda activate otx_env
# 或使用您喜欢的虚拟环境
# ...
# 克隆存储库并以可编辑模式安装
git clone https://github.com/openvinotoolkit/training_extensions.git
cd training_extensions
pip install -e .[base] # 对于 zsh:pip install -e '.[base]'
快速入门
OpenVINO™ 训练扩展支持基于 API 和 CLI 的训练。API 更灵活,允许更多定制,而 CLI 训练利用命令行界面,对于那些希望直接使用 OpenVINO™ 训练扩展的人来说可能更容易。
对于 CLI,以下命令提供子命令、如何使用每个子命令以及更多信息:
# 查看可用的子命令
otx --help
# 打印来自 train 子命令的帮助信息
otx train --help
# 打印更多详细的帮助信息
otx train --help -v # 打印必需参数
otx train --help -vv # 打印所有可配置参数
您可以在 CLI 指南 和 API 快速指南 中找到带有示例的详细信息。
以下是如何使用自动配置进行训练,这是为具有数据集和任务的用户提供的:
通过 API 训练
# 通过 Engine 使用自动配置进行训练
from otx.engine import Engine
engine = Engine(data_root="data/wgisd", task="DETECTION")
engine.train()
更多示例,请参阅文档:CLI 指南
除了上述示例外,请参阅文档以获取有关使用自定义模型、训练参数覆盖以及每种任务类型的教程等内容。
更新
v2.1.0 (2024 年第三季度)
注意
OpenVINO™ 训练扩展 2.1.0 版本不包含最新的功能和安全更新。OpenVINO™ 训练扩展 2.2.0 版本计划于 2024 年 9 月发布,将包含额外的功能和安全更新。客户应在新版本可用时更新到最新版本。
新功能
- 添加启用dGPU上OV推理的标志
- 添加带预热的早停。移除语义分割任务中的强制背景标签
- 为检测任务启用RTMDet-tiny
- 添加OTXDataModule中的数据格式验证和更新
- 添加torchvision.MaskRCNN
- 为多类分类添加半监督学习(EfficientNet-B0)
- 解耦动作分类的mmaction (MoviNet, X3D)
- 为mv3-large、effnet-v2、deit-tiny、dino-v2添加半监督学习算法
- 为检测任务启用RTMDet-tiny(导出/优化)
- 在otx/algo/classification/backbones中启用ruff和ruff-format
- 添加TV MaskRCNN Tile配方
- 添加旋转检测OV配方
改进
- 将load_stat_dict更改为on_load_checkpoint
- 添加try-except以继续运行剩余测试
- 更新instance_segmentation.py以解决与2.0.0的冲突
- 更新XPU安装
- 同步动作分类任务中torch和ov推理的rgb顺序
- 使性能测试能够加载之前的性能测试以跳过训练阶段
- 重新启用e2e分类XAI测试
- 移除动作检测任务支持
- 提高HPO期间pickle错误日志的可读性并修复小bug
- 更新RTMDet检查点url
- 重构分类半监督学习的Torchvision模型
- 添加覆盖率忽略mm相关代码
- 添加半监督学习部分文档
- 重构文档设计并添加内容
- 在文档中添加自动批量大小的执行示例
- 为分类添加半监督学习基准测试
- 在记录指标前将值移至设备
- 添加.codecov.yaml
- 更新otx2.1的基准工具
- 在一处收集预训练权重二进制文件
- 最小化编译依赖文件
- 更新README和CODEOWNERS
- 更新Engine的文档字符串和CLI --help输出
- 将集成测试与发布分支的可导出代码接口更新对齐
- 重构异常检测任务的导出器并修复可导出代码的bug
- 更新pandas版本约束
- 将更多模型的导出测试纳入test_otx_e2e
- 将任务分配从Engine移至异常检测模型类
- 重构检测模块
Bug修复
- 修复develop和2.0.0之间的冲突
- 修复多边形掩码
- 修复vpm集成测试错误
- 修复异常检测
- 修复语义分割的bug并在ONNX中启用DINOV2导出
- 修复一些导出问题。移除EXPORTABLE_CODE作为导出参数
- 修复
load_from_checkpoint
以应用原始模型的超参数 - 修复
load_from_checkpoint
参数以应用原始模型的超参数 - 修复ov模型的零样本
learn
- 修复2.1中XAI的各种问题
- 修复测试以在无mm环境中工作
- 修复基准代码中的bug
- 更新可导出代码依赖并修复bug
- 修复调整大小时获取错误形状的问题
- 修复检测预测输出
- 修复RTMDet PTQ性能
- 修复VPM PTQ上的分段错误
- 修复NNCF MaskRCNN-Eff准确度下降
- 修复带半监督学习数据管道的优化
- 修复MaskRCNN SwinT NNCF准确度下降
已知问题
- 应用于实例分割任务中maskrcnn_swint的训练后量化(PTQ)优化可能导致准确度显著降低。预计这个问题将在未来版本中通过升级OpenVINO和NNCF得到解决。
发布历史
请参阅CHANGELOG.md
分支
许可证
OpenVINO™工具包根据Apache License Version 2.0许可。 通过为项目做出贡献,您同意其中的许可和版权条款,并根据这些条款发布您的贡献。
问题/讨论
请使用Issues标签报告bug、请求功能或提出任何问题。
已知限制
- misc分支包含基于TensorFlow和PyTorch的模型的训练、评估和导出脚本。 这些脚本尚未准备好用于生产。它们是探索性的,尚未经过验证。
免责声明
英特尔致力于尊重人权并避免参与侵犯人权的行为。 请参阅英特尔的全球人权原则。 英特尔的产品和软件仅用于不会导致或促成违反国际公认人权的应用。
贡献
对于那些希望为该库做出贡献的人,请查看CONTRIBUTING.md以了解详细信息。
感谢您!我们非常感谢您的支持!