From 146474660952f848d0f4c75c396f86a03c7aaf3d Mon Sep 17 00:00:00 2001 From: "wenmeng.zwm" Date: Wed, 20 Apr 2022 09:48:23 +0800 Subject: [PATCH 01/11] update change log --- README.md | 19 +++++++++++-------- docs/source/change_log.md | 19 ++++++++++++++++++- 2 files changed, 29 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index cfe69392..741a121c 100644 --- a/README.md +++ b/README.md @@ -33,6 +33,7 @@ EasyCV is an all-in-one computer vision toolbox based on PyTorch, mainly focus o Please refer to the installation section in [quick_start.md](docs/source/quick_start.md) for installation. + ## Get Started Please refer to [quick_start.md](docs/source/quick_start.md) for quick start. We also provides tutorials for more usages. @@ -41,24 +42,26 @@ Please refer to [quick_start.md](docs/source/quick_start.md) for quick start. We * [image classification](docs/source/tutorials/cls.md) * [object detection with yolox](docs/source/tutorials/yolox.md) + ## Model Zoo Please refer to the following model zoo for more details. -- [detection model zoo](docs/source/model_zoo_detection.md) - [self-supervised learning model zoo](docs/source/model_zoo_ssl.md) +- [detection model zoo](docs/source/model_zoo_detection.md) + + +## ChangeLog + +* 07/04/2022 EasyCV v0.2.2 was released. + +Please refer to [change_log.md](docs/source/change_log.md) for more details and history. + ## License This project licensed under the [Apache License (Version 2.0)](LICENSE). This toolkit also contains various third-party components and some code modified from other repos under other open source licenses. See the [NOTICE](NOTICE) file for more information. -## ChangeLog - -EasyCV v0.2.0 was release in 01/04/2022. - -Please refer to [change_log.md](docs/source/change_log.md) for more details and history. - - ## Contact diff --git a/docs/source/change_log.md b/docs/source/change_log.md index 96bc9c09..dfde686b 100644 --- a/docs/source/change_log.md +++ b/docs/source/change_log.md @@ -1,3 +1,20 @@ -# v 0.2.0 (01/04/2022) +# v 0.2.2 (07/04/2022) * initial commit & first release + +1. SOTA SSL Algorithms + +EasyCV provides state-of-the-art algorithms in self-supervised learning based on contrastive learning such as SimCLR, MoCO V2, Swav, DINO and also MAE based on masked image modeling. We also provides standard benchmark tools for ssl model evaluation. + +2. Vision Transformers + +EasyCV aims to provide plenty vision transformer models trained either using supervised learning or self-supervised learning, such as ViT, Swin-Transformer and XCit. More models will be added in the future. + +3. Functionality & Extensibility + +In addition to SSL, EasyCV also support image classification, object detection, metric learning, and more area will be supported in the future. Although convering different area, EasyCV decompose the framework into different componets such as dataset, model, running hook, making it easy to add new compoenets and combining it with existing modules. +EasyCV provide simple and comprehensive interface for inference. Additionaly, all models are supported on PAI-EAS, which can be easily deployed as online service and support automatic scaling and service moniting. + +3. Efficiency + +EasyCV support multi-gpu and multi worker training. EasyCV use DALI to accelerate data io and preprocessing process, and use fp16 to accelerate training process. For inference optimization, EasyCV export model using jit script, which can be optimized by PAI-Blade. From 4f6d0cdd4b6069f59f9c5e72afbd542246a967f2 Mon Sep 17 00:00:00 2001 From: "wenmeng.zwm" Date: Wed, 20 Apr 2022 10:51:33 +0800 Subject: [PATCH 02/11] remove refs/tag for debug --- .github/workflows/publish.yaml | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/.github/workflows/publish.yaml b/.github/workflows/publish.yaml index ee1c36a1..cb9a5af0 100644 --- a/.github/workflows/publish.yaml +++ b/.github/workflows/publish.yaml @@ -1,10 +1,6 @@ name: release -on: - push: - branches: - - "release/**" - +on: push concurrency: group: ${{ github.workflow }}-${{ github.ref }} @@ -13,17 +9,18 @@ concurrency: jobs: build-n-publish: runs-on: ubuntu-latest - if: startsWith(github.event.ref, 'refs/tags') + #if: startsWith(github.event.ref, 'refs/tags') steps: - uses: actions/checkout@v2 - name: Set up Python 3.6 uses: actions/setup-python@v2 with: python-version: '3.6' + - name: Install wheel + run: pip install wheel - name: Build EasyCV run: python setup.py sdist bdist_wheel - - name: Publish package - uses: pypa/gh-action-pypi-publish@27b31702a0e7fc50959f5ad993c78deac1bdfc29 - with: - user: __token__ - password: ${{ secrets.PYPI_API_TOKEN }} + - name: Publish package to PyPI + run: | + pip install twine + twine upload package/dist/* -u __token__ ${{ secrets.PYPI_API_TOKEN }} From 1f21ec5570dde492c053dd38837c7ea01134d24d Mon Sep 17 00:00:00 2001 From: "wenmeng.zwm" Date: Wed, 20 Apr 2022 10:53:57 +0800 Subject: [PATCH 03/11] fix twine upload error --- .github/workflows/publish.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/publish.yaml b/.github/workflows/publish.yaml index cb9a5af0..5e6262b4 100644 --- a/.github/workflows/publish.yaml +++ b/.github/workflows/publish.yaml @@ -23,4 +23,4 @@ jobs: - name: Publish package to PyPI run: | pip install twine - twine upload package/dist/* -u __token__ ${{ secrets.PYPI_API_TOKEN }} + twine upload package/dist/* -u __token__ -p ${{ secrets.PYPI_API_TOKEN }} From 740d450e1d84d927414c8efcf22ed943d0b3f801 Mon Sep 17 00:00:00 2001 From: "wenmeng.zwm" Date: Wed, 20 Apr 2022 11:40:53 +0800 Subject: [PATCH 04/11] add dingding qrcode and fix pypi doc format --- README.md | 4 +++- docs/source/_static/dingding_qrcode.jpg | Bin 0 -> 99430 bytes setup.py | 3 ++- 3 files changed, 5 insertions(+), 2 deletions(-) create mode 100644 docs/source/_static/dingding_qrcode.jpg diff --git a/README.md b/README.md index 741a121c..9fee2ff7 100644 --- a/README.md +++ b/README.md @@ -65,4 +65,6 @@ This project licensed under the [Apache License (Version 2.0)](LICENSE). This to ## Contact -This repo is currently maintained by PAI-CV team. +This repo is currently maintained by PAI-CV team, you can contact us by easycv@list.alibaba-inc.com or join the dingding group ([join url](https://h5.dingtalk.com/circle/healthCheckin.html?dtaction=os&corpId=ding3ff8258c1c5850ef6ef3dd1a991739ff&9abd5705-5633=d069c338-d566&cbdbhh=qwertyuiop)). + +![dingding group QR code](docs/source/_static/dingding_qrcode.jpg) diff --git a/docs/source/_static/dingding_qrcode.jpg b/docs/source/_static/dingding_qrcode.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c9dd79dfbd339250e6db2c9cfb44e8187744cd28 GIT binary patch literal 99430 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

tAhlRT@2-@=oZkum?az%!fd)0^16qN?yWK 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 literal 0 HcmV?d00001 diff --git a/setup.py b/setup.py index ef1b1be1..b5751947 100644 --- a/setup.py +++ b/setup.py @@ -173,8 +173,9 @@ if __name__ == '__main__': setup( name='pai-easycv', version=get_version(), - description='EasyCV framework', + description='An all-in-one toolkit for computer vision', long_description=readme(), + long_description_content_type='text/markdown', author='Alibaba PAI team', author_email='easycv@list.alibaba-inc.com', keywords='self-supvervised, classification, vision', From f0a1fd0e3d29bf9f26b717e1236b7c560354c2de Mon Sep 17 00:00:00 2001 From: "wenmeng.zwm" Date: Wed, 20 Apr 2022 11:45:22 +0800 Subject: [PATCH 05/11] add support for overwrite whl --- .github/workflows/publish.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/publish.yaml b/.github/workflows/publish.yaml index 5e6262b4..ff0ce466 100644 --- a/.github/workflows/publish.yaml +++ b/.github/workflows/publish.yaml @@ -23,4 +23,4 @@ jobs: - name: Publish package to PyPI run: | pip install twine - twine upload package/dist/* -u __token__ -p ${{ secrets.PYPI_API_TOKEN }} + twine upload package/dist/* --skip-existing -u __token__ -p ${{ secrets.PYPI_API_TOKEN }} From 523120a8b8254f7fef1eae446f1285bfde798c91 Mon Sep 17 00:00:00 2001 From: "wenmeng.zwm" Date: Wed, 20 Apr 2022 11:53:04 +0800 Subject: [PATCH 06/11] update workflow --- .github/workflows/publish.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/publish.yaml b/.github/workflows/publish.yaml index ff0ce466..80e6c132 100644 --- a/.github/workflows/publish.yaml +++ b/.github/workflows/publish.yaml @@ -9,7 +9,7 @@ concurrency: jobs: build-n-publish: runs-on: ubuntu-latest - #if: startsWith(github.event.ref, 'refs/tags') + if: startsWith(github.event.ref, 'refs/tags') steps: - uses: actions/checkout@v2 - name: Set up Python 3.6 From 41d239db1f9ca72b9b6de633a2bb9906ae4b9dff Mon Sep 17 00:00:00 2001 From: "wenmeng.zwm" Date: Wed, 20 Apr 2022 12:07:33 +0800 Subject: [PATCH 07/11] update citest ignore --- .github/workflows/citest.yaml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/.github/workflows/citest.yaml b/.github/workflows/citest.yaml index 9618ed9b..410fd661 100644 --- a/.github/workflows/citest.yaml +++ b/.github/workflows/citest.yaml @@ -6,19 +6,29 @@ on: - master - "release/**" paths-ignore: + - "setup.*" + - "requirements/**" - "docs/**" - "tools/**" - "scripts/**" - "README.md" - "README_zh-CN.md" + - "NOTICE" + - ".github/workflows/lint.yaml" + - ".github/workflows/publish.yaml" pull_request: paths-ignore: + - "setup.*" + - "requirements/**" - "docs/**" - "tools/**" - "scripts/**" - "README.md" - "README_zh-CN.md" + - "NOTICE" + - ".github/workflows/lint.yaml" + - ".github/workflows/publish.yaml" concurrency: group: ${{ github.workflow }}-${{ github.ref }} From b3761b48c4661e78a58aa63f4cd682f575cdedd5 Mon Sep 17 00:00:00 2001 From: "wenmeng.zwm" Date: Thu, 21 Apr 2022 11:52:35 +0800 Subject: [PATCH 08/11] update quick start --- docs/source/quick_start.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/quick_start.md b/docs/source/quick_start.md index 2865bee0..8fb95626 100644 --- a/docs/source/quick_start.md +++ b/docs/source/quick_start.md @@ -48,7 +48,7 @@ You can simply install easycv with the following command: ```shell - pip install easycv + pip install pai-easycv ``` or clone the repository and then install it: From 2a7eac471d9aa173d6c2e28c705342062727d0cd Mon Sep 17 00:00:00 2001 From: "wenmeng.zwm" Date: Thu, 21 Apr 2022 11:53:44 +0800 Subject: [PATCH 09/11] fix cls predictor error --- easycv/apis/export.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/easycv/apis/export.py b/easycv/apis/export.py index bb5edc01..e7aaf154 100644 --- a/easycv/apis/export.py +++ b/easycv/apis/export.py @@ -112,11 +112,20 @@ def _export_cls(model, cfg, filename): if hasattr(cfg, 'test_pipeline'): test_pipeline = cfg.test_pipeline + for pipe in test_pipeline: + if pipe['type'] == 'Collect': + remove_names = [] + for k in pipe['keys']: + if k.startswith('gt'): + remove_names.append(k) + for k in remove_names: + pipe['keys'].remove(k) else: test_pipeline = [ dict(type='Resize', size=[224, 224]), dict(type='ToTensor'), dict(type='Normalize', **img_norm_cfg), + dict(type='Collect', keys=['img']) ] config = dict( From 7534a80195b9bee3f5042918f024f5139eed42d3 Mon Sep 17 00:00:00 2001 From: "wenmeng.zwm" Date: Thu, 21 Apr 2022 16:07:33 +0800 Subject: [PATCH 10/11] add unittest and fix another bug using cls_head with_avg_pool=True --- easycv/apis/export.py | 11 +++-------- easycv/models/heads/cls_head.py | 1 - tests/apis/test_export.py | 24 +++++++++++++++++++++++- 3 files changed, 26 insertions(+), 10 deletions(-) diff --git a/easycv/apis/export.py b/easycv/apis/export.py index e7aaf154..9b50242f 100644 --- a/easycv/apis/export.py +++ b/easycv/apis/export.py @@ -81,7 +81,7 @@ def _export_cls(model, cfg, filename): else: export_cfg = dict(export_neck=False) - export_neck = export_cfg.get('export_neck', False) + export_neck = export_cfg.get('export_neck', True) label_map_path = cfg.get('label_map_path', None) class_list = None if label_map_path is not None: @@ -103,7 +103,7 @@ def _export_cls(model, cfg, filename): print("this cls model doesn't contain cls head, we add a dummy head!") model_config['head'] = head = dict( type='ClsHead', - with_avg_pool=False, + with_avg_pool=True, in_channels=model_config['backbone'].get('num_classes', 2048), num_classes=1000, ) @@ -114,12 +114,7 @@ def _export_cls(model, cfg, filename): test_pipeline = cfg.test_pipeline for pipe in test_pipeline: if pipe['type'] == 'Collect': - remove_names = [] - for k in pipe['keys']: - if k.startswith('gt'): - remove_names.append(k) - for k in remove_names: - pipe['keys'].remove(k) + pipe['keys'] = ['img'] else: test_pipeline = [ dict(type='Resize', size=[224, 224]), diff --git a/easycv/models/heads/cls_head.py b/easycv/models/heads/cls_head.py index f1a6769e..2ab7e824 100644 --- a/easycv/models/heads/cls_head.py +++ b/easycv/models/heads/cls_head.py @@ -77,7 +77,6 @@ class ClsHead(nn.Module): def forward(self, x: List[torch.Tensor]) -> List[torch.Tensor]: x1 = x[self.input_feature_index[0]] - if self.with_avg_pool and x1.dim() > 2: assert x1.dim() == 4, \ 'Tensor must has 4 dims, got: {}'.format(x1.dim()) diff --git a/tests/apis/test_export.py b/tests/apis/test_export.py index 7125692d..3f350998 100644 --- a/tests/apis/test_export.py +++ b/tests/apis/test_export.py @@ -5,8 +5,10 @@ import subprocess import tempfile import unittest +import numpy as np import torch -from tests.ut_config import PRETRAINED_MODEL_MOCO, PRETRAINED_MODEL_RESNET50 +from tests.ut_config import (IMAGENET_LABEL_TXT, PRETRAINED_MODEL_MOCO, + PRETRAINED_MODEL_RESNET50) from easycv.apis.export import export from easycv.utils.config_tools import mmcv_config_fromfile @@ -47,6 +49,26 @@ class ModelExportTest(unittest.TestCase): export(cfg, ori_ckpt, target_ckpt) self.assertTrue(os.path.exists(target_ckpt)) + def test_export_classification_and_inference(self): + config_file = 'configs/classification/imagenet/imagenet_rn50_jpg.py' + cfg = mmcv_config_fromfile(config_file) + # cfg.model.backbone = dict( + # type='ResNet', + # depth=50, + # out_indices=[4], + # norm_cfg=dict(type='BN')) + cfg.export = dict(use_jit=False) + ori_ckpt = PRETRAINED_MODEL_RESNET50 + target_ckpt = f'{self.tmp_dir}/classification_export.pth' + export(cfg, ori_ckpt, target_ckpt) + self.assertTrue(os.path.exists(target_ckpt)) + + from easycv.predictors.classifier import TorchClassifier + classifier = TorchClassifier( + target_ckpt, label_map_path=IMAGENET_LABEL_TXT) + img = np.random.randint(0, 255, (256, 256, 3)) + r = classifier.predict([img]) + def test_export_cls_syncbn(self): config_file = 'configs/classification/imagenet/imagenet_rn50_jpg.py' cfg = mmcv_config_fromfile(config_file) From eaae92a4a5bfb3ea122ccd44fc94b7f2adc5dab5 Mon Sep 17 00:00:00 2001 From: "wenmeng.zwm" Date: Thu, 21 Apr 2022 16:07:59 +0800 Subject: [PATCH 11/11] remove comment --- tests/apis/test_export.py | 5 ----- 1 file changed, 5 deletions(-) diff --git a/tests/apis/test_export.py b/tests/apis/test_export.py index 3f350998..df42d909 100644 --- a/tests/apis/test_export.py +++ b/tests/apis/test_export.py @@ -52,11 +52,6 @@ class ModelExportTest(unittest.TestCase): def test_export_classification_and_inference(self): config_file = 'configs/classification/imagenet/imagenet_rn50_jpg.py' cfg = mmcv_config_fromfile(config_file) - # cfg.model.backbone = dict( - # type='ResNet', - # depth=50, - # out_indices=[4], - # norm_cfg=dict(type='BN')) cfg.export = dict(use_jit=False) ori_ckpt = PRETRAINED_MODEL_RESNET50 target_ckpt = f'{self.tmp_dir}/classification_export.pth'