Build Type | Linux |
MacOS |
Windows |
---|---|---|---|
Build Status | Not tested |
English | 中文
简介 |
安装 |
快速入门 |
教程 |
模型列表 |
支持算法 |
日志
MindCV是一个基于 MindSpore
开发的,致力于计算机视觉相关技术研发的开源工具箱。它提供大量的计算机视觉领域的经典模型和SoTA模型以及它们的预训练权重。同时,还提供了AutoAugment等SoTA算法来提高性能。通过解耦的模块设计,您可以轻松地将MindCV应用到您自己的CV任务中。
>>> import mindcv
# 创建一个数据集
>>> dataset = mindcv.create_dataset('cifar10', download=True)
# 创建一个模型
>>> network = mindcv.create_model('resnet50', pretrained=True)
用户可以在一个命令行中自定义和启动他们的迁移学习或训练任务。
# 仅使用一个命令行即可启动迁移学习任务
python train.py --model swin_tiny --pretrained --opt adamw --lr 0.001 --data_dir = {data_dir}
业内最佳 MindCV提供了大量包括SwinTransformer在内的基于CNN和基于Transformer结构的视觉模型。同时,还提供了它们的预训练权重以及性能测试报告,帮助用户正确地选择和使用他们所需要的模型。
灵活高效 MindCV是基于新一代高效的深度学习框架MindSpore编写的,可以运行在多种硬件平台上(CPU/GPU/Ascend),还同时支持高效的图模式和灵活的调试模式。
即将更新
运行以下脚本,安装相关依赖。
pip install -r requirements.txt
用户可遵从官方指导 并根据自身使用的硬件平台选择最适合您的MindSpore版本来进行安装。如果需要在在分布式条件下使用,还需安装openmpi 。
之后的说明将默认用户已正确安装好相关依赖。
MindCV的已发布版本可以通过PyPI安装。
pip install https://github.com/mindspore-lab/mindcv/releases/download/v0.0.1-beta/mindcv-0.0.1b0-py3-none-any.whl
Git上最新的MindCV可以通过以下指令安装。
pip install git+https://github.com/mindspore-lab/mindcv.git
注:MindCV可以在Linux和Mac系统安装,但是目前还不能在Windows系统上安装。
在开始上手MindCV前,可以阅读MindCV的迁移学习教程,该教程可以帮助用户快速了解MindCV的各个重要组件以及训练、验证、测试流程。
以下是一些供您练习的代码片段。
>>> import mindcv
# List and find a pretrained vision model 列出满足条件的预训练模型名称
>>> mindcv.list_models("swin*", pretrained=True)
['swin_tiny']
# 创建模型
>>> network = mindcv.create_model('swin_tiny', pretrained=True)
# 验证模型的准确率
>>> !python validate.py - -model = swin_tiny - -pretrained - -dataset = imagenet - -val_split = validation
{'Top_1_Accuracy': 0.808343989769821, 'Top_5_Accuracy': 0.9527253836317136, 'loss': 0.8474242982580839}
图片分类示例
使用加载了预训练参数的SoTA模型对一张图片进行推理。
>>> !python
infer.py - -model = swin_tiny - -image_path = './tutorials/data/test/dog/dog.jpg'
{'Labrador retriever': 0.5700152, 'golden retriever': 0.034551315, 'kelpie': 0.010108651,
'Chesapeake Bay retriever': 0.008229004, 'Walker hound, Walker foxhound': 0.007791956}
预测结果排名前1的是拉布拉多犬,正是这张图片里的狗狗的品种。
使用MindCV,用户可以很容易地在标准数据集或自定义数据集上训练模型。仅几行代码就可以完成模型训练、迁移学习、模型验证等任务。
用户可以使用train.py
便捷地进行模型训练。下面是一个示例是在CIFAR10数据集上单卡训练DenseNet(单卡GPU)。
python train.py --model resnet50 --dataset cifar10 --dataset_download
更多参数说明,请运行`python train.py --help'。用户可以便捷地修改模型名称,优化器等其他超参。
训练过程中进行验证 要跟踪训练期间验证精度的变化,请启用参数--val_while_train
。
python train.py -model resnet50 -dataset cifar10 -val_while_train -val_split test -val_interval 1
每个轮次的训练损失和验证精度将保存在{ckpt_save_dir}/results.log
中。
恢复训练 要恢复训练,需要为恢复的指定检查点--ckpt_path
和--ckpt_save_dir
。包括上一轮次的学习率在内的优化器状态也将被恢复。
python train.py --model resnet50 --dataset cifar10 --ckpt_save_dir checkpoints --ckpt_path checkpoints/resnet50_30-100.ckpt
对于像ImageNet这样的大型数据集,有必要在多个设备上以分布式模式进行训练,MindCV对分布式相关功能支持良好。以下脚本是在ImageNet上使用4个GPU训练DenseNet121的示例。
export CUDA_VISIBLE_DEVICES=0,1,2,3 # suppose there are 4 GPUs
mpirun --allow-run-as-root -n 4 python train.py --distribute \
--model densenet121 --dataset imagenet --data_dir ./datasets/imagenet
用户可以使用yaml文件或设置外部参数来指定要使用的模型等其他组件。以下是使用预设的yaml文件进行训练的示例。
mpirun --allow-run-as-root -n 4 python train.py -c configs/squeezenet/squeezenet_1.0_gpu.yaml
用于模型训练的参数文件汇总在configs
文件夹中。
使用validate.py
可以便捷地验证训练好的模型。
# 验证模型的预训练参数
python validate.py --model resnet50 --dataset imagenet --val_split validation --ckpt_path './ckpt/densenet121-best.ckpt'
在默认情况下,训练管道(train.py
)在图模式 下运行,虽然在该模型下运行的性能极佳,但是该模式不方便进行调试。为了方便调试,用户可以使用参数--mode
将运行模式设置为调试模式。
使用ms_function的调试模式 是兼顾了MindSpore的效率和灵活的混合模式。用户可通过使用train_with_func.py
文件来使用该混合模式进行训练。
python train_with_func.py --model resnet50 --dataset cifar10 --dataset_download --epoch_size 10
train_with_func.py
为试验性的训练脚本,待MindSpore 2.0发布后改进。
更多样例请参见examples/scripts。
我们提供了系列教程,帮助用户学习如何使用MindCV.
目前,MindCV支持以下列出的模型族。更多包含预训练权重的模型正在开发中,将于近期发布。
更多关于模型性能和预训练权重的信息请查看 configs 文件夹。
Repeated Augmenation
操作,可以通过--aug_repeats
对其进行设置,设置值应大于1(通常为3或4)。欢迎开发者用户提issue或提交代码PR,或贡献更多的算法和模型,一起让MindCV变得更好。
有关贡献指南,请参阅CONTRIBUTING.md。请遵循模型编写指南所规定的规则来贡献模型接口:)
本项目遵循Apache License 2.0开源协议。
MindCV是由MindSpore团队、西安电子科技大学、西安交通大学联合开发的开源项目。
衷心感谢所有参与的研究人员和开发人员为这个项目所付出的努力。
十分感谢 OpenI 平台所提供的算力资源。
如果你觉得MindCV对你的项目有帮助,请考虑引用:
@misc{MindSpore Computer Vision 2022,
title={{MindSpore Computer Vision}:MindSpore Computer Vision Toolbox and Benchmark},
author={MindSpore Vision Contributors},
howpublished = {\url{https://github.com/mindspore-lab/mindcv/}},
year={2022}
}
Dear OpenI User
Thank you for your continuous support to the Openl Qizhi Community AI Collaboration Platform. In order to protect your usage rights and ensure network security, we updated the Openl Qizhi Community AI Collaboration Platform Usage Agreement in January 2024. The updated agreement specifies that users are prohibited from using intranet penetration tools. After you click "Agree and continue", you can continue to use our services. Thank you for your cooperation and understanding.
For more agreement content, please refer to the《Openl Qizhi Community AI Collaboration Platform Usage Agreement》