Are you sure you want to delete this task? Once this task is deleted, it cannot be recovered.
githubliuyang777 1c6d8c6d9e | 1 year ago | |
---|---|---|
configs | 1 year ago | |
docs | 1 year ago | |
examples | 1 year ago | |
mindcv | 1 year ago | |
requirements | 1 year ago | |
scripts | 1 year ago | |
tests | 1 year ago | |
tutorials | 1 year ago | |
.gitignore | 1 year ago | |
CONTRIBUTING.md | 1 year ago | |
LICENSE.md | 1 year ago | |
README.md | 1 year ago | |
README_CN.md | 1 year ago | |
RELEASE.md | 1 year ago | |
benchmark_results.md | 1 year ago | |
config.py | 1 year ago | |
infer.py | 1 year ago | |
package.sh | 1 year ago | |
quick_start.md | 1 year ago | |
quick_start_CN.md | 1 year ago | |
requirements.txt | 1 year ago | |
setup.py | 1 year ago | |
train.py | 1 year ago | |
train_with_func.py | 1 year ago | |
validate.py | 1 year ago | |
validate_with_func.py | 1 year ago |
Build Type | Linux |
MacOS |
Windows |
---|---|---|---|
Build Status | Not tested |
English | 中文
Introduction |
Installation |
Get Started |
Tutorials |
Model List |
Supported Algorithms |
Notes
MindCV is an open source toolbox for computer vision research and development based on MindSpore. It collects a series of classic and SoTA vision models, such as ResNet and SwinTransformer, along with their pretrained weights. SoTA methods such as AutoAugment are also provided for performance improvement. With the decoupled module design, it is easy to apply or adapt MindCV to your own CV tasks.
>>> import mindcv
# create a dataset
>>> dataset = mindcv.create_dataset('cifar10', download=True)
# create a model
>>> network = mindcv.create_model('resnet50', pretrained=True)
Users can customize and launch their transfer learning or training task in one command line.
# transfer learning in one command line
>>> !python train.py --model=swin_tiny --pretrained --opt=adamw --lr=0.001 --data_dir={data_dir}
State-of-The-Art. MindCV provides various CNN-based and Transformer-based vision models including SwinTransformer. Their pretrained weights and performance reports are provided to help users select and reuse the right model.
Flexibility and efficiency. MindCV is bulit on MindSpore which is an efficent DL framework that can run on different hardward platforms (GPU/CPU/Ascend). It supports both graph mode for high efficiency and pynative mode for flexibity.
The performance of the models trained with MindCV is summarized in benchmark_results.md, where the training recipes and weights are both available.
Model introduction and training details can be viewed in each subfolder under configs.
To install the dependency, please run
pip install -r requirements.txt
MindSpore can be easily installed by following the official instruction where you can select your hardware platform for the best fit. To run in distributed mode, openmpi is required to install.
The following instructions assume the desired dependency is fulfilled.
The released version of MindCV can be installed via PyPI
as follows:
pip install mindcv
The latest version of MindCV can be installed as follows:
pip install git+https://github.com/mindspore-lab/mindcv.git
To get started with MindCV, please see the transfer learning tutorial, which will give a quick tour on each key component and the train/validate/predict pipelines in MindCV.
Below is a few code snippets for your taste.
>>> import mindcv
# List and find a pretrained vision model
>>> mindcv.list_models("swin*", pretrained=True)
['swin_tiny']
# Create the model object
>>> network = mindcv.create_model('swin_tiny', pretrained=True)
# Validate its accuracy
>>> !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}
Image classification demo
Infer the input image with a pretrained SoTA model,
>>> !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}
The top-1 prediction result is labrador retriever (拉布拉多犬), which is the breed of this cut dog.
It is easy to train your model on standard datasets or your own dataset with MindCV. Model training, transfer learning, or evaluaiton can be done using one or a few line of code with flexible configuration.
It is easy to do model training with train.py
. Here is an example for training a DenseNet on CIFAR10 dataset using one computing device (i.e., standalone GPU).
python train.py --model=resnet50 --dataset=cifar10 --dataset_download
For more parameter description, please run `python train.py --help'. You can define change model, optimizer, and other hyper-parameters easily.
Validation while training. To track the validation accuracy change during traing, please enable --val_while_train
, for example
python train.py --model=resnet50 --dataset=cifar10 \
--val_while_train --val_split=test --val_interval=1
The training loss and validation accuracy for each epoch will be saved in {ckpt_save_dir}/results.log
.
Resume training. To resume training, please specify --ckpt_path
for the checkpoint where you want to resume and --ckpt_save_dir
. The optimizer state including learning rate of the last epoch will also be recovered.
python train.py --model=resnet50 --dataset=cifar10 \
--ckpt_save_dir=checkpoints --ckpt_path=checkpoints/resnet50_30-100.ckpt
For large datasets like ImageNet, it is necessary to do training in distributed mode on multiple devices, which is well supported in MindCV. The following script is an example for training DenseNet121 on ImageNet with 4 GPUs.
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
You can configure your model and other components either by specifying external parameters or by using a yaml config file. Here is an example for training using a preset yaml file.
mpirun --allow-run-as-root -n 4 python train.py -c configs/squeezenet/squeezenet_1.0_gpu.yaml
Well-defined config files for training SoTA models can be seen in the configs
folder, along with their performance reported on ImageNet dataset.
It is easy to validate a trained model with validate.py
.
# validate a trained checkpoint
python validate.py --model=resnet50 --dataset=imagenet --val_split=validation --ckpt_path='./ckpt/densenet121-best.ckpt'
By default, the training pipeline (train.py
) is run in graph mode, which is optimized for efficienty and speed but may not be flexible enough for debugging. You may alter the parameter --mode
to switch to pure pynative mode for debugging purpose.
Pynative mode with ms_function is a mixed mode for comprising flexibity and efficiency in MindSpore. To switch to pynative mode with ms_function, please use train_with_func.py
instead, for example:
python train_with_func.py --model=resnet50 --dataset=cifar10 --dataset_download --epoch_size=10
Note:
train_with_func.py
is an experimental training pipeline and is less stable thantrain.py
. It will be improved after MindSpore 2.0 released.
For more examples, see examples/scripts.
We provide the following jupyter notebook tutorials to help users learn to use MindCV.
Currently, MindCV supports the model families listed below. More models with pretrained weights are under development and will be released soon.
Please see configs for the details about model performance and pretrained weights.
--aug_repeats
to be a value larger than 1 (typically, 3 or 4 is a common choice).We appreciate all kind of contributions including issues and PRs to make MindCV better.
Please refer to CONTRIBUTING.md for the contributing guideline. Please follow the Model Template and Guideline for contributing a model that fits the overall interface :)
This project follows the Apache License 2.0 open-source license.
MindCV is an open-source project jointly developed by the MindSpore team, Xidian University, and Xi'an Jiaotong University.
Sincere thanks to all participating researchers and developers for their hard work on this project.
We also acknowledge the computing resources provided by OpenI.
If you find this project useful in your research, please consider citing:
@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}
}
MindCV是一个基于 MindSpore 开发的,致力于计算机视觉相关技术研发的开源工具箱。它提供大量的计算机视觉领域的经典模型和SoTA模型以及它们的预训练权重。同时,还提供了AutoAugment等SoTA算法来提高性能。通过解耦的模块设计,您可以轻松地将MindCV应用到您自己的CV任务中。
Python Markdown Text other
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》