Gitee 推荐 | 计算机视觉研发工具箱 MindCV

1,693次阅读
没有评论

简介

MindCV是一个基于 MindSpore
开发的,致力于计算机视觉相关技术研发的开源工具箱。它提供大量的计算机视觉领域的经典模型和SoTA模型以及它们的预训练权重和训练策略。同时,还提供了自动增强等SoTA算法来提高模型性能。通过解耦的模块设计,您可以轻松地将MindCV应用到您自己的CV任务中。

主要特性

  • 高易用性 MindCV将视觉任务分解为各种可配置的组件,用户可以轻松地构建自己的数据处理和模型训练流程。
>>> 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=/path/to/dataset

  • 高性能 MindCV集成了大量基于CNN和和Transformer的高性能模型, 如SwinTransformer,并提供预训练权重、训练策略和性能报告,帮助用户快速选型并将其应用于视觉模型。

  • 灵活高效 MindCV基于高效的深度学习框架MindSpore开发,具有自动并行和自动微分等特性,支持不同硬件平台上(CPU/GPU/Ascend),同时支持效率优化的静态图模式和调试灵活的动态图模式。

性能结果

基于MindCV进行模型实现和重训练的汇总结果详见benchmark_results.md, 所用到的训练策略和训练后的模型权重均可通过表中链接获取。

各模型讲解和训练说明详见configs目录。

安装

依赖

  • mindspore >= 1.8.1
  • numpy >= 1.17.0
  • pyyaml >= 5.3
  • tqdm
  • openmpi 4.0.3 (分布式模式需要使用)

运行以下脚本,安装相关依赖。

pip install -r requirements.txt

用户可遵从官方指导 并根据自身使用的硬件平台选择最适合您的MindSpore版本来进行安装。如果需要在分布式条件下使用,还需安装openmpi

之后的说明将默认用户已正确安装好相关依赖。

PyPI安装

MindCV的已发布版本可以通过PyPI安装。

pip install mindcv

源码安装

Git上最新的MindCV可以通过以下指令安装。

pip install git+https://github.com/mindspore-lab/mindcv.git

注:MindCV可以在Linux和Mac系统安装,但是目前还不能在Windows系统上安装。

快速入门

上手教程

在开始上手MindCV前,可以阅读MindCV的迁移学习教程,该教程可以帮助用户快速了解MindCV的各个重要组件以及训练、验证、测试流程。

以下是一些供您快速体验的代码样例。

>>> import mindcv
# 列出满足条件的预训练模型名称
>>> 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}

图片分类示例

Gitee 推荐 | 计算机视觉研发工具箱 MindCV

使用加载了预训练参数的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的是拉布拉多犬,正是这张图片里的狗狗的品种。

模型训练

通过train.py,用户可以很容易地在标准数据集或自定义数据集上训练模型,用户可以通过外部变量或者yaml配文件来设置训练策略(如数据增强、学习路策略)。

  • 单卡训练
# 单卡训练
python train.py –model resnet50 –dataset cifar10 –dataset_download

以上代码是在CIFAR10数据集上单卡(CPU/GPU/Ascend)训练ResNet的示例,通过modeldataset参数分别指定需要训练的模型和数据集。

  • 分布式训练

对于像ImageNet这样的大型数据集,有必要在多个设备上以分布式模式进行训练。基于MindSpore对分布式相关功能的良好支持,用户可以使用mpirun来进行模型的分布式训练。

# 分布式训练
# 假设你有4张GPU或者NPU卡
mpirun –allow-run-as-root -n 4 python train.py –distribute
–model densenet121 –dataset imagenet –data_dir ./datasets/imagenet

完整的参数列表及说明在config.py中定义,可运行python train.py --help快速查看。

如需恢复训练,请指定--ckpt_path--ckpt_save_dir参数,脚本将加载路径中的模型权重和优化器状态,并恢复中断的训练进程。

  • 超参配置和预训练策略

您可以编写yaml文件或设置外部参数来指定配置数据、模型、优化器等组件及其超参。以下是使用预设的训练策略(yaml文件)进行模型训练的示例。

mpirun –allow-run-as-root -n 4 python train.py -c configs/squeezenet/squeezenet_1.0_gpu.yaml

预定义的训练策略 MindCV目前提前了超过20种模型训练策略,在ImageNet取得SoTA性能。具体的参数配置和详细精度性能汇总请见configs文件夹。您可以便捷将这些训练策略用于您的模型训练中以提高性能(复用或修改相应的yaml文件即可)

  • 在ModelArts/OpenI平台上训练

ModelArtsOpenI云平台上进行训练,需要执行以下操作,:

1、在云平台上创建新的训练任务。
2、在网站UI界面添加运行参数`config`,并指定yaml配置文件的路径。
3、在网站UI界面添加运行参数`enable_modelarts`并设置为True。
4、在网站上填写其他训练信息并启动培训任务。

模型验证

使用validate.py可以便捷地验证训练好的模型。

# 验证模型
python validate.py –model=resnet50 –dataset=imagenet –data_dir=/path/to/data –ckpt_path=/path/to/model.ckpt

  • 训练过程中进行验证

当需要在训练过程中,跟踪模型在测试集上精度的变化时,请启用参数--val_while_train,如下

python train.py –model=resnet50 –dataset=cifar10
–val_while_train –val_split=test –val_interval=1

各轮次的训练损失和测试精度将保存在{ckpt_save_dir}/results.log中。

  • 静态图和动态图模式

在默认情况下,模型训练(train.py)在MindSpore上以图模式 运行,该模式对使用静态图编译对性能和并行计算进行了优化。相比之下,pynative模式的优势在于灵活性和易于调试。
为了方便调试,您可以将参数--mode设为1以将运行模式设置为调试模式。

基于ms_function的混合模式 是兼顾了MindSpore的效率和灵活的混合模式。用户可通过使用train_with_func.py文件来使用该混合模式进行训练。

python train_with_func.py –model=resnet50 –dataset=cifar10 –dataset_download –epoch_size=10

注:此为试验性质的训练脚本,仍在改进,在1.8.1或更早版本的MindSpore上使用此模式目前并不稳定。

教程

我们提供了系列教程,帮助用户学习如何使用MindCV.

模型列表

目前,MindCV支持以下模型。

支持模型

关于模型性能和预训练权重的信息请查看 configs 文件夹。

我们将持续加入更多SoTA模型及其训练策略,敬请关注。

支持算法

支持算法列表

  • 数据增强
  • 优化器
    • Adam
    • Adamw
    • Lion
    • Adan (experimental)
    • AdaGrad
    • LAMB
    • Momentum
    • RMSProp
    • SGD
    • NAdam
  • 学习率调度器
    • Warmup Cosine Decay
    • Step LR
    • Polynomial Decay
    • Exponential Decay
  • 正则化
    • Weight Decay
    • Label Smoothing
    • Stochastic Depth (depends on networks)
    • Dropout (depends on networks)
  • 损失函数
    • Cross Entropy (w/ class weight and auxiliary logit support)
    • Binary Cross Entropy (w/ class weight and auxiliary logit support)
    • Soft Cross Entropy Loss (automatically enabled if mixup or label smoothing is used)
    • Soft Binary Cross Entropy Loss (automatically enabled if mixup or label smoothing is used)
  • 模型融合
    • Warmup EMA (Exponential Moving Average)

日志

更新

  • 2023/03/05
  1. 增加Lion (EvoLved Sign Momentum)优化器,论文 https://arxiv.org/abs/2302.06675
    • Lion所使用的学习率一般比Adamw小3到10倍,而权重衰减(weigt_decay)要大3到10倍.
  2. 增加6个模型及其训练策略、预训练权重:
  3. Support gradient clip
  • 2023/01/10
  1. MindCV v0.1发布! 支持通过PyPI安装 (pip install mindcv).
  2. 新增4个模型的预训练权重及其策略: googlenet, inception_v3, inception_v4, xception
  • 2022/12/09
  1. 支持在所有学习率策略中添加学习率预热操作,除cosine decay策略外。
  2. 支持Repeated Augmenation操作,可以通过--aug_repeats对其进行设置,设置值应大于1(通常为3或4)。
  3. 支持EMA。
  4. 通过支持mixup和cutmix操作进一步优化BCE损失函数。
  • 2022/11/21
  1. 支持模型损失和正确率的可视化。
  2. 支持伦次维度的cosine decay策略的学习率预热操作(之前仅支持步维度)。
  • 2022/11/09
  1. 支持2个ViT预训练模型。
  2. 支持RandAugment augmentation操作。
  3. 提高了CutMix操作的可用性,CutMix和Mixup目前可以一起使用。
  4. 解决了学习率画图的bug。
  • 2022/10/12
  1. BCE和CE损失函数目前都支持class-weight config操作、label smoothing操作、auxilary logit input操作(适用于类似Inception模型)。
  • 2022/09/13
  1. 支持Adan优化器(试用版)。

贡献方式

欢迎开发者用户提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}
}

Read More 

正文完
可以使用微信扫码关注公众号(ID:xzluomor)
post-qrcode
 0
评论(没有评论)

文心AIGC

2023 年 3 月
 12345
6789101112
13141516171819
20212223242526
2728293031  
文心AIGC
文心AIGC
人工智能ChatGPT,AIGC指利用人工智能技术来生成内容,其中包括文字、语音、代码、图像、视频、机器人动作等等。被认为是继PGC、UGC之后的新型内容创作方式。AIGC作为元宇宙的新方向,近几年迭代速度呈现指数级爆发,谷歌、Meta、百度等平台型巨头持续布局
文章搜索
热门文章
潞晨尤洋:日常办公没必要上私有模型,这三类企业才需要 | MEET2026

潞晨尤洋:日常办公没必要上私有模型,这三类企业才需要 | MEET2026

潞晨尤洋:日常办公没必要上私有模型,这三类企业才需要 | MEET2026 Jay 2025-12-22 09...
面向「空天具身智能」,北航团队提出星座规划新基准丨NeurIPS’25

面向「空天具身智能」,北航团队提出星座规划新基准丨NeurIPS’25

面向「空天具身智能」,北航团队提出星座规划新基准丨NeurIPS’25 鹭羽 2025-12-13 22:37...
商汤Seko2.0重磅发布,合作短剧登顶抖音AI短剧榜No.1

商汤Seko2.0重磅发布,合作短剧登顶抖音AI短剧榜No.1

商汤Seko2.0重磅发布,合作短剧登顶抖音AI短剧榜No.1 十三 2025-12-15 14:13:14 ...
跳过“逐字生成”!蚂蚁集团赵俊博:扩散模型让我们能直接修改Token | MEET2026

跳过“逐字生成”!蚂蚁集团赵俊博:扩散模型让我们能直接修改Token | MEET2026

跳过“逐字生成”!蚂蚁集团赵俊博:扩散模型让我们能直接修改Token | MEET2026 一水 2025-1...
10亿美元OpenAI股权兑换迪士尼版权!米老鼠救Sora来了

10亿美元OpenAI股权兑换迪士尼版权!米老鼠救Sora来了

10亿美元OpenAI股权兑换迪士尼版权!米老鼠救Sora来了 一水 2025-12-12 13:56:19 ...
最新评论
ufabet ufabet มีเกมให้เลือกเล่นมากมาย: เกมเดิมพันหลากหลาย ครบทุกค่ายดัง
tornado crypto mixer tornado crypto mixer Discover the power of privacy with TornadoCash! Learn how this decentralized mixer ensures your transactions remain confidential.
ดูบอลสด ดูบอลสด Very well presented. Every quote was awesome and thanks for sharing the content. Keep sharing and keep motivating others.
ดูบอลสด ดูบอลสด Pretty! This has been a really wonderful post. Many thanks for providing these details.
ดูบอลสด ดูบอลสด Pretty! This has been a really wonderful post. Many thanks for providing these details.
ดูบอลสด ดูบอลสด Hi there to all, for the reason that I am genuinely keen of reading this website’s post to be updated on a regular basis. It carries pleasant stuff.
Obrazy Sztuka Nowoczesna Obrazy Sztuka Nowoczesna Thank you for this wonderful contribution to the topic. Your ability to explain complex ideas simply is admirable.
ufabet ufabet Hi there to all, for the reason that I am genuinely keen of reading this website’s post to be updated on a regular basis. It carries pleasant stuff.
ufabet ufabet You’re so awesome! I don’t believe I have read a single thing like that before. So great to find someone with some original thoughts on this topic. Really.. thank you for starting this up. This website is something that is needed on the internet, someone with a little originality!
ufabet ufabet Very well presented. Every quote was awesome and thanks for sharing the content. Keep sharing and keep motivating others.
热评文章
跳过“逐字生成”!蚂蚁集团赵俊博:扩散模型让我们能直接修改Token | MEET2026

跳过“逐字生成”!蚂蚁集团赵俊博:扩散模型让我们能直接修改Token | MEET2026

跳过“逐字生成”!蚂蚁集团赵俊博:扩散模型让我们能直接修改Token | MEET2026 一水 2025-1...
10亿美元OpenAI股权兑换迪士尼版权!米老鼠救Sora来了

10亿美元OpenAI股权兑换迪士尼版权!米老鼠救Sora来了

10亿美元OpenAI股权兑换迪士尼版权!米老鼠救Sora来了 一水 2025-12-12 13:56:19 ...
IDC MarketScape: 容联云位居“中国AI赋能的联络中心”领导者类别

IDC MarketScape: 容联云位居“中国AI赋能的联络中心”领导者类别

IDC MarketScape: 容联云位居“中国AI赋能的联络中心”领导者类别 量子位的朋友们 2025-1...