提交 7db32e7a 编写于 作者: H HydrogenSulfate

Merge branch 'develop' into android_demo_doc

...@@ -2,7 +2,7 @@ include LICENSE.txt ...@@ -2,7 +2,7 @@ include LICENSE.txt
include README.md include README.md
include docs/en/whl_en.md include docs/en/whl_en.md
recursive-include deploy/python *.py recursive-include deploy/python *.py
recursive-include deploy/utils *.py
recursive-include ppcls/arch *.py
recursive-include ppcls/utils *.py *.txt
recursive-include deploy/configs *.yaml recursive-include deploy/configs *.yaml
recursive-include deploy/utils get_image_list.py config.py logger.py predictor.py
recursive-include ppcls/ *.py *.txt
\ No newline at end of file
...@@ -14,4 +14,4 @@ ...@@ -14,4 +14,4 @@
__all__ = ['PaddleClas'] __all__ = ['PaddleClas']
from .paddleclas import PaddleClas from .paddleclas import PaddleClas
from ppcls.arch.backbone import * from .ppcls.arch.backbone import *
...@@ -12,10 +12,6 @@ ...@@ -12,10 +12,6 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
import os import os
import sys
__dir__ = os.path.dirname(os.path.abspath(__file__))
sys.path.append(os.path.abspath(os.path.join(__dir__, '../')))
import cv2 import cv2
import faiss import faiss
...@@ -23,10 +19,9 @@ import numpy as np ...@@ -23,10 +19,9 @@ import numpy as np
from tqdm import tqdm from tqdm import tqdm
import pickle import pickle
from python.predict_rec import RecPredictor from paddleclas.deploy.utils import logger, config
from paddleclas.deploy.python.predict_rec import RecPredictor
from utils import logger from paddleclas.deploy.python.predict_rec import RecPredictor
from utils import config
def split_datafile(data_file, image_root, delimiter="\t"): def split_datafile(data_file, image_root, delimiter="\t"):
......
...@@ -11,21 +11,17 @@ ...@@ -11,21 +11,17 @@
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
import os
import sys
__dir__ = os.path.dirname(os.path.abspath(__file__)) import os
sys.path.append(os.path.abspath(os.path.join(__dir__, '../')))
import cv2 import cv2
import numpy as np import numpy as np
from utils import logger from paddleclas.deploy.utils import logger, config
from utils import config from paddleclas.deploy.utils.predictor import Predictor
from utils.predictor import Predictor from paddleclas.deploy.utils.get_image_list import get_image_list
from utils.get_image_list import get_image_list from paddleclas.deploy.python.preprocess import create_operators
from python.preprocess import create_operators from paddleclas.deploy.python.postprocess import build_postprocess
from python.postprocess import build_postprocess
class ClsPredictor(Predictor): class ClsPredictor(Predictor):
......
...@@ -11,29 +11,23 @@ ...@@ -11,29 +11,23 @@
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
import os
import sys
__dir__ = os.path.dirname(os.path.abspath(__file__))
sys.path.append(os.path.abspath(os.path.join(__dir__, '../')))
from utils import logger
from utils import config
from utils.predictor import Predictor
from utils.get_image_list import get_image_list
from det_preprocess import det_preprocess
from preprocess import create_operators
import os import os
import argparse import argparse
import time import time
from functools import reduce
import yaml import yaml
import ast import ast
from functools import reduce
import cv2
import numpy as np import numpy as np
import cv2
import paddle import paddle
from paddleclas.deploy.utils import logger, config
from paddleclas.deploy.utils.predictor import Predictor
from paddleclas.deploy.utils.get_image_list import get_image_list
from paddleclas.deploy.python.preprocess import create_operators
from paddleclas.deploy.python.det_preprocess import det_preprocess
class DetPredictor(Predictor): class DetPredictor(Predictor):
def __init__(self, config): def __init__(self, config):
......
...@@ -12,20 +12,15 @@ ...@@ -12,20 +12,15 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
import os import os
import sys
__dir__ = os.path.dirname(os.path.abspath(__file__))
sys.path.append(os.path.abspath(os.path.join(__dir__, '../')))
import cv2 import cv2
import numpy as np import numpy as np
from utils import logger from paddleclas.deploy.utils import logger, config
from utils import config from paddleclas.deploy.utils.predictor import Predictor
from utils.predictor import Predictor from paddleclas.deploy.utils.get_image_list import get_image_list
from utils.get_image_list import get_image_list from paddleclas.deploy.python.preprocess import create_operators
from preprocess import create_operators from paddleclas.deploy.python.postprocess import build_postprocess
from postprocess import build_postprocess
class RecPredictor(Predictor): class RecPredictor(Predictor):
......
...@@ -12,24 +12,18 @@ ...@@ -12,24 +12,18 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
import os import os
import sys
__dir__ = os.path.dirname(os.path.abspath(__file__))
sys.path.append(os.path.abspath(os.path.join(__dir__, '../')))
import copy import copy
import cv2
import numpy as np import numpy as np
import cv2
import faiss import faiss
import pickle import pickle
from python.predict_rec import RecPredictor from paddleclas.deploy.utils import logger, config
from python.predict_det import DetPredictor from paddleclas.deploy.utils.get_image_list import get_image_list
from paddleclas.deploy.utils.draw_bbox import draw_bbox_results
from utils import logger from paddleclas.deploy.python.predict_rec import RecPredictor
from utils import config from paddleclas.deploy.python.predict_det import DetPredictor
from utils.get_image_list import get_image_list
from utils.draw_bbox import draw_bbox_results
class SystemPredictor(object): class SystemPredictor(object):
......
...@@ -29,7 +29,7 @@ import importlib ...@@ -29,7 +29,7 @@ import importlib
from PIL import Image from PIL import Image
from paddle.vision.transforms import ToTensor, Normalize from paddle.vision.transforms import ToTensor, Normalize
from python.det_preprocess import DetNormalizeImage, DetPadStride, DetPermute, DetResize from paddleclas.deploy.python.det_preprocess import DetNormalizeImage, DetPadStride, DetPermute, DetResize
def create_operators(params): def create_operators(params):
......
...@@ -17,7 +17,7 @@ import copy ...@@ -17,7 +17,7 @@ import copy
import argparse import argparse
import yaml import yaml
from utils import logger from . import logger
__all__ = ['get_config'] __all__ = ['get_config']
......
...@@ -27,7 +27,7 @@ ...@@ -27,7 +27,7 @@
- [20. DLA series](#20) - [20. DLA series](#20)
- [21. RedNet series](#21) - [21. RedNet series](#21)
- [22. TNT series](#22) - [22. TNT series](#22)
- [23. CSwinTransformer series](#23) - [23. CSWinTransformer series](#23)
- [24. PVTV2 series](#24) - [24. PVTV2 series](#24)
- [25. MobileViT series](#25) - [25. MobileViT series](#25)
- [26. Other models](#26) - [26. Other models](#26)
...@@ -400,14 +400,14 @@ The accuracy and speed indicators of SwinTransformer series models are shown in ...@@ -400,14 +400,14 @@ The accuracy and speed indicators of SwinTransformer series models are shown in
| Model | Top-1 Acc | Top-5 Acc | time(ms)<br>bs=1 | time(ms)<br>bs=4 | time(ms)<br/>bs=8 | FLOPs(G) | Params(M) | Pretrained Model Download Address | Inference Model Download Address | | Model | Top-1 Acc | Top-5 Acc | time(ms)<br>bs=1 | time(ms)<br>bs=4 | time(ms)<br/>bs=8 | FLOPs(G) | Params(M) | Pretrained Model Download Address | Inference Model Download Address |
| ---------- | --------- | --------- | ---------------- | ---------------- | -------- | --------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | | ---------- | --------- | --------- | ---------------- | ---------------- | -------- | --------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ |
| SwinTransformer_tiny_patch4_window7_224 | 0.8069 | 0.9534 | 6.59 | 9.68 | 16.32 | 4.35 | 28.26 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/SwinTransformer_tiny_patch4_window7_224_pretrained.pdparams) | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/inference/SwinTransformer_tiny_patch4_window7_224_infer.tar) | | SwinTransformer_tiny_patch4_window7_224 | 0.8069 | 0.9534 | 6.59 | 9.68 | 16.32 | 4.35 | 28.26 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/legendary_models/SwinTransformer_tiny_patch4_window7_224_pretrained.pdparams) | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/inference/SwinTransformer_tiny_patch4_window7_224_infer.tar) |
| SwinTransformer_small_patch4_window7_224 | 0.8275 | 0.9613 | 12.54 | 17.07 | 28.08 | 8.51 | 49.56 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/SwinTransformer_small_patch4_window7_224_pretrained.pdparams) | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/inference/SwinTransformer_small_patch4_window7_224_infer.tar) | | SwinTransformer_small_patch4_window7_224 | 0.8275 | 0.9613 | 12.54 | 17.07 | 28.08 | 8.51 | 49.56 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/legendary_models/SwinTransformer_small_patch4_window7_224_pretrained.pdparams) | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/inference/SwinTransformer_small_patch4_window7_224_infer.tar) |
| SwinTransformer_base_patch4_window7_224 | 0.8300 | 0.9626 | 13.37 | 23.53 | 39.11 | 15.13 | 87.70 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/SwinTransformer_base_patch4_window7_224_pretrained.pdparams) | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/inference/SwinTransformer_base_patch4_window7_224_infer.tar) | | SwinTransformer_base_patch4_window7_224 | 0.8300 | 0.9626 | 13.37 | 23.53 | 39.11 | 15.13 | 87.70 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/legendary_models/SwinTransformer_base_patch4_window7_224_pretrained.pdparams) | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/inference/SwinTransformer_base_patch4_window7_224_infer.tar) |
| SwinTransformer_base_patch4_window12_384 | 0.8439 | 0.9693 | 19.52 | 64.56 | 123.30 | 44.45 | 87.70 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/SwinTransformer_base_patch4_window12_384_pretrained.pdparams) | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/inference/SwinTransformer_base_patch4_window12_384_infer.tar) | | SwinTransformer_base_patch4_window12_384 | 0.8439 | 0.9693 | 19.52 | 64.56 | 123.30 | 44.45 | 87.70 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/legendary_models/SwinTransformer_base_patch4_window12_384_pretrained.pdparams) | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/inference/SwinTransformer_base_patch4_window12_384_infer.tar) |
| SwinTransformer_base_patch4_window7_224<sup>[1]</sup> | 0.8487 | 0.9746 | 13.53 | 23.46 | 39.13 | 15.13 | 87.70 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/SwinTransformer_base_patch4_window7_224_22kto1k_pretrained.pdparams) | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/inference/SwinTransformer_base_patch4_window7_224_infer.tar) | | SwinTransformer_base_patch4_window7_224<sup>[1]</sup> | 0.8487 | 0.9746 | 13.53 | 23.46 | 39.13 | 15.13 | 87.70 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/legendary_models/SwinTransformer_base_patch4_window7_224_22kto1k_pretrained.pdparams) | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/inference/SwinTransformer_base_patch4_window7_224_infer.tar) |
| SwinTransformer_base_patch4_window12_384<sup>[1]</sup> | 0.8642 | 0.9807 | 19.65 | 64.72 | 123.42 | 44.45 | 87.70 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/SwinTransformer_base_patch4_window12_384_22kto1k_pretrained.pdparams) | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/inference/SwinTransformer_base_patch4_window12_384_infer.tar) | | SwinTransformer_base_patch4_window12_384<sup>[1]</sup> | 0.8642 | 0.9807 | 19.65 | 64.72 | 123.42 | 44.45 | 87.70 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/legendary_models/SwinTransformer_base_patch4_window12_384_22kto1k_pretrained.pdparams) | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/inference/SwinTransformer_base_patch4_window12_384_infer.tar) |
| SwinTransformer_large_patch4_window7_224<sup>[1]</sup> | 0.8596 | 0.9783 | 15.74 | 38.57 | 71.49 | 34.02 | 196.43 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/SwinTransformer_large_patch4_window7_224_22kto1k_pretrained.pdparams) | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/inference/SwinTransformer_large_patch4_window7_224_22kto1k_infer.tar) | | SwinTransformer_large_patch4_window7_224<sup>[1]</sup> | 0.8596 | 0.9783 | 15.74 | 38.57 | 71.49 | 34.02 | 196.43 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/legendary_models/SwinTransformer_large_patch4_window7_224_22kto1k_pretrained.pdparams) | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/inference/SwinTransformer_large_patch4_window7_224_22kto1k_infer.tar) |
| SwinTransformer_large_patch4_window12_384<sup>[1]</sup> | 0.8719 | 0.9823 | 32.61 | 116.59 | 223.23 | 99.97 | 196.43 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/SwinTransformer_large_patch4_window12_384_22kto1k_pretrained.pdparams) | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/inference/SwinTransformer_large_patch4_window12_384_22kto1k_infer.tar) | | SwinTransformer_large_patch4_window12_384<sup>[1]</sup> | 0.8719 | 0.9823 | 32.61 | 116.59 | 223.23 | 99.97 | 196.43 | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/legendary_models/SwinTransformer_large_patch4_window12_384_22kto1k_pretrained.pdparams) | [Download link](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/inference/SwinTransformer_large_patch4_window12_384_22kto1k_infer.tar) |
[1]:It is pre-trained based on the ImageNet22k dataset, and then transferred and learned from the ImageNet1k dataset. [1]:It is pre-trained based on the ImageNet22k dataset, and then transferred and learned from the ImageNet1k dataset.
......
...@@ -23,7 +23,13 @@ git clone https://gitee.com/paddlepaddle/PaddleClas.git -b develop ...@@ -23,7 +23,13 @@ git clone https://gitee.com/paddlepaddle/PaddleClas.git -b develop
<a name='2'></a> <a name='2'></a>
## 2. Install requirements ## 2. Install PaddleClas and requirements
It is recommanded that installing from PyPI:
```shell
pip install paddleclas
```
PaddleClas dependencies are listed in file `requirements.txt`, you can use the following command to install the dependencies. PaddleClas dependencies are listed in file `requirements.txt`, you can use the following command to install the dependencies.
......
...@@ -31,7 +31,7 @@ ...@@ -31,7 +31,7 @@
- [DLA 系列](#DLA) - [DLA 系列](#DLA)
- [RedNet 系列](#RedNet) - [RedNet 系列](#RedNet)
- [TNT 系列](#TNT) - [TNT 系列](#TNT)
- [CSwinTransformer 系列](#CSwinTransformer) - [CSWinTransformer 系列](#CSWinTransformer)
- [PVTV2 系列](#PVTV2) - [PVTV2 系列](#PVTV2)
- [MobileViT 系列](#MobileViT) - [MobileViT 系列](#MobileViT)
- [其他模型](#Others) - [其他模型](#Others)
...@@ -426,14 +426,14 @@ ViT(Vision Transformer) 与 DeiT(Data-efficient Image Transformers)系列模 ...@@ -426,14 +426,14 @@ ViT(Vision Transformer) 与 DeiT(Data-efficient Image Transformers)系列模
| 模型 | Top-1 Acc | Top-5 Acc | time(ms)<br>bs=1 | time(ms)<br>bs=4 | time(ms)<br/>bs=8 | FLOPs(G) | Params(M) | 预训练模型下载地址 | inference模型下载地址 | | 模型 | Top-1 Acc | Top-5 Acc | time(ms)<br>bs=1 | time(ms)<br>bs=4 | time(ms)<br/>bs=8 | FLOPs(G) | Params(M) | 预训练模型下载地址 | inference模型下载地址 |
| ---------- | --------- | --------- | ---------------- | ---------------- | -------- | --------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | | ---------- | --------- | --------- | ---------------- | ---------------- | -------- | --------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ |
| SwinTransformer_tiny_patch4_window7_224 | 0.8069 | 0.9534 | 6.59 | 9.68 | 16.32 | 4.35 | 28.26 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/SwinTransformer_tiny_patch4_window7_224_pretrained.pdparams) | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/inference/SwinTransformer_tiny_patch4_window7_224_infer.tar) | | SwinTransformer_tiny_patch4_window7_224 | 0.8069 | 0.9534 | 6.59 | 9.68 | 16.32 | 4.35 | 28.26 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/legendary_models/SwinTransformer_tiny_patch4_window7_224_pretrained.pdparams) | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/inference/SwinTransformer_tiny_patch4_window7_224_infer.tar) |
| SwinTransformer_small_patch4_window7_224 | 0.8275 | 0.9613 | 12.54 | 17.07 | 28.08 | 8.51 | 49.56 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/SwinTransformer_small_patch4_window7_224_pretrained.pdparams) | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/inference/SwinTransformer_small_patch4_window7_224_infer.tar) | | SwinTransformer_small_patch4_window7_224 | 0.8275 | 0.9613 | 12.54 | 17.07 | 28.08 | 8.51 | 49.56 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/legendary_models/SwinTransformer_small_patch4_window7_224_pretrained.pdparams) | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/inference/SwinTransformer_small_patch4_window7_224_infer.tar) |
| SwinTransformer_base_patch4_window7_224 | 0.8300 | 0.9626 | 13.37 | 23.53 | 39.11 | 15.13 | 87.70 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/SwinTransformer_base_patch4_window7_224_pretrained.pdparams) | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/inference/SwinTransformer_base_patch4_window7_224_infer.tar) | | SwinTransformer_base_patch4_window7_224 | 0.8300 | 0.9626 | 13.37 | 23.53 | 39.11 | 15.13 | 87.70 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/legendary_models/SwinTransformer_base_patch4_window7_224_pretrained.pdparams) | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/inference/SwinTransformer_base_patch4_window7_224_infer.tar) |
| SwinTransformer_base_patch4_window12_384 | 0.8439 | 0.9693 | 19.52 | 64.56 | 123.30 | 44.45 | 87.70 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/SwinTransformer_base_patch4_window12_384_pretrained.pdparams) | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/inference/SwinTransformer_base_patch4_window12_384_infer.tar) | | SwinTransformer_base_patch4_window12_384 | 0.8439 | 0.9693 | 19.52 | 64.56 | 123.30 | 44.45 | 87.70 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/legendary_models/SwinTransformer_base_patch4_window12_384_pretrained.pdparams) | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/inference/SwinTransformer_base_patch4_window12_384_infer.tar) |
| SwinTransformer_base_patch4_window7_224<sup>[1]</sup> | 0.8487 | 0.9746 | 13.53 | 23.46 | 39.13 | 15.13 | 87.70 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/SwinTransformer_base_patch4_window7_224_22kto1k_pretrained.pdparams) | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/inference/SwinTransformer_base_patch4_window7_224_infer.tar) | | SwinTransformer_base_patch4_window7_224<sup>[1]</sup> | 0.8487 | 0.9746 | 13.53 | 23.46 | 39.13 | 15.13 | 87.70 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/legendary_models/SwinTransformer_base_patch4_window7_224_22kto1k_pretrained.pdparams) | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/inference/SwinTransformer_base_patch4_window7_224_infer.tar) |
| SwinTransformer_base_patch4_window12_384<sup>[1]</sup> | 0.8642 | 0.9807 | 19.65 | 64.72 | 123.42 | 44.45 | 87.70 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/SwinTransformer_base_patch4_window12_384_22kto1k_pretrained.pdparams) | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/inference/SwinTransformer_base_patch4_window12_384_infer.tar) | | SwinTransformer_base_patch4_window12_384<sup>[1]</sup> | 0.8642 | 0.9807 | 19.65 | 64.72 | 123.42 | 44.45 | 87.70 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/legendary_models/SwinTransformer_base_patch4_window12_384_22kto1k_pretrained.pdparams) | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/inference/SwinTransformer_base_patch4_window12_384_infer.tar) |
| SwinTransformer_large_patch4_window7_224<sup>[1]</sup> | 0.8596 | 0.9783 | 15.74 | 38.57 | 71.49 | 34.02 | 196.43 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/SwinTransformer_large_patch4_window7_224_22kto1k_pretrained.pdparams) | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/inference/SwinTransformer_large_patch4_window7_224_22kto1k_infer.tar) | | SwinTransformer_large_patch4_window7_224<sup>[1]</sup> | 0.8596 | 0.9783 | 15.74 | 38.57 | 71.49 | 34.02 | 196.43 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/legendary_models/SwinTransformer_large_patch4_window7_224_22kto1k_pretrained.pdparams) | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/inference/SwinTransformer_large_patch4_window7_224_22kto1k_infer.tar) |
| SwinTransformer_large_patch4_window12_384<sup>[1]</sup> | 0.8719 | 0.9823 | 32.61 | 116.59 | 223.23 | 99.97 | 196.43 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/SwinTransformer_large_patch4_window12_384_22kto1k_pretrained.pdparams) | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/inference/SwinTransformer_large_patch4_window12_384_22kto1k_infer.tar) | | SwinTransformer_large_patch4_window12_384<sup>[1]</sup> | 0.8719 | 0.9823 | 32.61 | 116.59 | 223.23 | 99.97 | 196.43 | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/legendary_models/SwinTransformer_large_patch4_window12_384_22kto1k_pretrained.pdparams) | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/inference/SwinTransformer_large_patch4_window12_384_22kto1k_infer.tar) |
[1]:基于 ImageNet22k 数据集预训练,然后在 ImageNet1k 数据集迁移学习得到。 [1]:基于 ImageNet22k 数据集预训练,然后在 ImageNet1k 数据集迁移学习得到。
......
...@@ -92,7 +92,6 @@ Predict complete! ...@@ -92,7 +92,6 @@ Predict complete!
* 命令行中 * 命令行中
```bash ```bash
from paddleclas import PaddleClas, get_default_confg
paddleclas --model_name=ViT_base_patch16_384 --infer_imgs='docs/images/inference_deployment/whl_demo.jpg' --resize_short=384 --crop_size=384 paddleclas --model_name=ViT_base_patch16_384 --infer_imgs='docs/images/inference_deployment/whl_demo.jpg' --resize_short=384 --crop_size=384
``` ```
......
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
#### 1.1.1 使用Paddle官方镜像 #### 1.1.1 使用Paddle官方镜像
* 切换到工作目录下,例如工作目录为`/home/Projects`,则运行命令: * 切换到工作目录下,例如工作目录为`/home/Projects`,则运行命令:
```shell ```shell
cd /home/Projects cd /home/Projects
...@@ -96,7 +96,13 @@ git clone https://gitee.com/paddlepaddle/PaddleClas.git -b release/2.4 ...@@ -96,7 +96,13 @@ git clone https://gitee.com/paddlepaddle/PaddleClas.git -b release/2.4
``` ```
<a name='1.3'></a> <a name='1.3'></a>
### 1.3 安装 Python 依赖库 ### 1.3 安装 PaddleClas 及其 Python 依赖库
建议直接从 PyPI 安装 PaddleClas:
```shell
pip install paddleclas
```
PaddleClas 的 Python 依赖库在 `requirements.txt` 中给出,可通过如下命令安装: PaddleClas 的 Python 依赖库在 `requirements.txt` 中给出,可通过如下命令安装:
...@@ -114,5 +120,3 @@ pip install --upgrade -r requirements.txt -i https://mirror.baidu.com/pypi/simpl ...@@ -114,5 +120,3 @@ pip install --upgrade -r requirements.txt -i https://mirror.baidu.com/pypi/simpl
如果您对自动化制作docker镜像感兴趣,或有自定义需求,请访问[PaddlePaddle/PaddleCloud](https://github.com/PaddlePaddle/PaddleCloud/tree/main/tekton)做进一步了解。 如果您对自动化制作docker镜像感兴趣,或有自定义需求,请访问[PaddlePaddle/PaddleCloud](https://github.com/PaddlePaddle/PaddleCloud/tree/main/tekton)做进一步了解。
**备注**:当前的镜像中的 PaddleClas 代码默认使用最新的 release/2.4 分支。 **备注**:当前的镜像中的 PaddleClas 代码默认使用最新的 release/2.4 分支。
...@@ -13,11 +13,6 @@ ...@@ -13,11 +13,6 @@
# limitations under the License. # limitations under the License.
import os import os
import sys
__dir__ = os.path.dirname(__file__)
sys.path.append(os.path.join(__dir__, ""))
sys.path.append(os.path.join(__dir__, "deploy"))
from typing import Union, Generator from typing import Union, Generator
import argparse import argparse
import shutil import shutil
...@@ -33,12 +28,16 @@ from tqdm import tqdm ...@@ -33,12 +28,16 @@ from tqdm import tqdm
from prettytable import PrettyTable from prettytable import PrettyTable
import paddle import paddle
from deploy.python.predict_cls import ClsPredictor from .ppcls.arch import backbone
from deploy.utils.get_image_list import get_image_list from .ppcls.utils import logger
from deploy.utils import config
from .deploy.python.predict_cls import ClsPredictor
from .deploy.utils.get_image_list import get_image_list
from .deploy.utils import config
import ppcls.arch.backbone as backbone # for the PaddleClas Project
from ppcls.utils import logger from . import deploy
from . import ppcls
# for building model with loading pretrained weights from backbone # for building model with loading pretrained weights from backbone
logger.init_logger() logger.init_logger()
...@@ -51,6 +50,11 @@ BASE_IMAGES_DIR = os.path.join(BASE_DIR, "images") ...@@ -51,6 +50,11 @@ BASE_IMAGES_DIR = os.path.join(BASE_DIR, "images")
IMN_MODEL_BASE_DOWNLOAD_URL = "https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/inference/{}_infer.tar" IMN_MODEL_BASE_DOWNLOAD_URL = "https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/inference/{}_infer.tar"
IMN_MODEL_SERIES = { IMN_MODEL_SERIES = {
"AlexNet": ["AlexNet"], "AlexNet": ["AlexNet"],
"CSWinTransformer": [
"CSWinTransformer_tiny_224", "CSWinTransformer_small_224",
"CSWinTransformer_base_224", "CSWinTransformer_base_384",
"CSWinTransformer_large_224", "CSWinTransformer_large_384"
],
"DarkNet": ["DarkNet53"], "DarkNet": ["DarkNet53"],
"DeiT": [ "DeiT": [
"DeiT_base_distilled_patch16_224", "DeiT_base_distilled_patch16_384", "DeiT_base_distilled_patch16_224", "DeiT_base_distilled_patch16_384",
...@@ -82,6 +86,8 @@ IMN_MODEL_SERIES = { ...@@ -82,6 +86,8 @@ IMN_MODEL_SERIES = {
"HRNet_W48_C_ssld" "HRNet_W48_C_ssld"
], ],
"Inception": ["GoogLeNet", "InceptionV3", "InceptionV4"], "Inception": ["GoogLeNet", "InceptionV3", "InceptionV4"],
"LeViT":
["LeViT_128S", "LeViT_128", "LeViT_192", "LeViT_256", "LeViT_384"],
"MixNet": ["MixNet_S", "MixNet_M", "MixNet_L"], "MixNet": ["MixNet_S", "MixNet_M", "MixNet_L"],
"MobileNetV1": [ "MobileNetV1": [
"MobileNetV1_x0_25", "MobileNetV1_x0_5", "MobileNetV1_x0_75", "MobileNetV1_x0_25", "MobileNetV1_x0_5", "MobileNetV1_x0_75",
...@@ -100,6 +106,7 @@ IMN_MODEL_SERIES = { ...@@ -100,6 +106,7 @@ IMN_MODEL_SERIES = {
"MobileNetV3_large_x1_0", "MobileNetV3_large_x1_25", "MobileNetV3_large_x1_0", "MobileNetV3_large_x1_25",
"MobileNetV3_small_x1_0_ssld", "MobileNetV3_large_x1_0_ssld" "MobileNetV3_small_x1_0_ssld", "MobileNetV3_large_x1_0_ssld"
], ],
"MobileViT": ["MobileViT_XXS", "MobileViT_XS", "MobileViT_S"],
"PPHGNet": [ "PPHGNet": [
"PPHGNet_tiny", "PPHGNet_tiny",
"PPHGNet_small", "PPHGNet_small",
...@@ -111,6 +118,10 @@ IMN_MODEL_SERIES = { ...@@ -111,6 +118,10 @@ IMN_MODEL_SERIES = {
"PPLCNet_x1_0", "PPLCNet_x1_5", "PPLCNet_x2_0", "PPLCNet_x2_5" "PPLCNet_x1_0", "PPLCNet_x1_5", "PPLCNet_x2_0", "PPLCNet_x2_5"
], ],
"PPLCNetV2": ["PPLCNetV2_base"], "PPLCNetV2": ["PPLCNetV2_base"],
"PVTV2": [
"PVT_V2_B0", "PVT_V2_B1", "PVT_V2_B2", "PVT_V2_B2_Linear", "PVT_V2_B3",
"PVT_V2_B4", "PVT_V2_B5"
],
"RedNet": ["RedNet26", "RedNet38", "RedNet50", "RedNet101", "RedNet152"], "RedNet": ["RedNet26", "RedNet38", "RedNet50", "RedNet101", "RedNet152"],
"RegNet": ["RegNetX_4GF"], "RegNet": ["RegNetX_4GF"],
"Res2Net": [ "Res2Net": [
...@@ -163,6 +174,7 @@ IMN_MODEL_SERIES = { ...@@ -163,6 +174,7 @@ IMN_MODEL_SERIES = {
"pcpvt_small", "pcpvt_base", "pcpvt_large", "alt_gvt_small", "pcpvt_small", "pcpvt_base", "pcpvt_large", "alt_gvt_small",
"alt_gvt_base", "alt_gvt_large" "alt_gvt_base", "alt_gvt_large"
], ],
"TNT": ["TNT_small"],
"VGG": ["VGG11", "VGG13", "VGG16", "VGG19"], "VGG": ["VGG11", "VGG13", "VGG16", "VGG19"],
"VisionTransformer": [ "VisionTransformer": [
"ViT_base_patch16_224", "ViT_base_patch16_384", "ViT_base_patch32_384", "ViT_base_patch16_224", "ViT_base_patch16_384", "ViT_base_patch32_384",
...@@ -202,6 +214,7 @@ class InputModelError(Exception): ...@@ -202,6 +214,7 @@ class InputModelError(Exception):
def init_config(model_type, model_name, inference_model_dir, **kwargs): def init_config(model_type, model_name, inference_model_dir, **kwargs):
cfg_path = f"deploy/configs/PULC/{model_name}/inference_{model_name}.yaml" if model_type == "pulc" else "deploy/configs/inference_cls.yaml" cfg_path = f"deploy/configs/PULC/{model_name}/inference_{model_name}.yaml" if model_type == "pulc" else "deploy/configs/inference_cls.yaml"
__dir__ = os.path.dirname(__file__)
cfg_path = os.path.join(__dir__, cfg_path) cfg_path = os.path.join(__dir__, cfg_path)
cfg = config.get_config(cfg_path, show=False) cfg = config.get_config(cfg_path, show=False)
...@@ -453,10 +466,6 @@ class PaddleClas(object): ...@@ -453,10 +466,6 @@ class PaddleClas(object):
"""PaddleClas. """PaddleClas.
""" """
if not os.environ.get('ppcls', False):
os.environ.setdefault('ppcls', 'True')
print_info()
def __init__(self, def __init__(self,
model_name: str=None, model_name: str=None,
inference_model_dir: str=None, inference_model_dir: str=None,
...@@ -471,6 +480,7 @@ class PaddleClas(object): ...@@ -471,6 +480,7 @@ class PaddleClas(object):
topk (int, optional): Return the top k prediction results with the highest score. Defaults to 5. topk (int, optional): Return the top k prediction results with the highest score. Defaults to 5.
""" """
super().__init__() super().__init__()
self.model_type, inference_model_dir = self._check_input_model( self.model_type, inference_model_dir = self._check_input_model(
model_name, inference_model_dir) model_name, inference_model_dir)
self._config = init_config(self.model_type, model_name, self._config = init_config(self.model_type, model_name,
...@@ -595,6 +605,7 @@ class PaddleClas(object): ...@@ -595,6 +605,7 @@ class PaddleClas(object):
def main(): def main():
"""Function API used for commad line. """Function API used for commad line.
""" """
print_info()
cfg = args_cfg() cfg = args_cfg()
clas_engine = PaddleClas(**cfg) clas_engine = PaddleClas(**cfg)
res = clas_engine.predict(cfg["infer_imgs"], print_pred=True) res = clas_engine.predict(cfg["infer_imgs"], print_pred=True)
......
...@@ -23,11 +23,11 @@ from . import backbone, gears ...@@ -23,11 +23,11 @@ from . import backbone, gears
from .backbone import * from .backbone import *
from .gears import build_gear from .gears import build_gear
from .utils import * from .utils import *
from ppcls.arch.backbone.base.theseus_layer import TheseusLayer from .backbone.base.theseus_layer import TheseusLayer
from ppcls.utils import logger from ..utils import logger
from ppcls.utils.save_load import load_dygraph_pretrain from ..utils.save_load import load_dygraph_pretrain
from ppcls.arch.slim import prune_model, quantize_model from .slim import prune_model, quantize_model
from ppcls.arch.distill.afd_attention import LinearTransformStudent, LinearTransformTeacher from .distill.afd_attention import LinearTransformStudent, LinearTransformTeacher
__all__ = ["build_model", "RecModel", "DistillationModel", "AttentionModel"] __all__ = ["build_model", "RecModel", "DistillationModel", "AttentionModel"]
......
...@@ -15,65 +15,65 @@ ...@@ -15,65 +15,65 @@
import sys import sys
import inspect import inspect
from ppcls.arch.backbone.legendary_models.mobilenet_v1 import MobileNetV1_x0_25, MobileNetV1_x0_5, MobileNetV1_x0_75, MobileNetV1 from .legendary_models.mobilenet_v1 import MobileNetV1_x0_25, MobileNetV1_x0_5, MobileNetV1_x0_75, MobileNetV1
from ppcls.arch.backbone.legendary_models.mobilenet_v3 import MobileNetV3_small_x0_35, MobileNetV3_small_x0_5, MobileNetV3_small_x0_75, MobileNetV3_small_x1_0, MobileNetV3_small_x1_25, MobileNetV3_large_x0_35, MobileNetV3_large_x0_5, MobileNetV3_large_x0_75, MobileNetV3_large_x1_0, MobileNetV3_large_x1_25 from .legendary_models.mobilenet_v3 import MobileNetV3_small_x0_35, MobileNetV3_small_x0_5, MobileNetV3_small_x0_75, MobileNetV3_small_x1_0, MobileNetV3_small_x1_25, MobileNetV3_large_x0_35, MobileNetV3_large_x0_5, MobileNetV3_large_x0_75, MobileNetV3_large_x1_0, MobileNetV3_large_x1_25
from ppcls.arch.backbone.legendary_models.resnet import ResNet18, ResNet18_vd, ResNet34, ResNet34_vd, ResNet50, ResNet50_vd, ResNet101, ResNet101_vd, ResNet152, ResNet152_vd, ResNet200_vd from .legendary_models.resnet import ResNet18, ResNet18_vd, ResNet34, ResNet34_vd, ResNet50, ResNet50_vd, ResNet101, ResNet101_vd, ResNet152, ResNet152_vd, ResNet200_vd
from ppcls.arch.backbone.legendary_models.vgg import VGG11, VGG13, VGG16, VGG19 from .legendary_models.vgg import VGG11, VGG13, VGG16, VGG19
from ppcls.arch.backbone.legendary_models.inception_v3 import InceptionV3 from .legendary_models.inception_v3 import InceptionV3
from ppcls.arch.backbone.legendary_models.hrnet import HRNet_W18_C, HRNet_W30_C, HRNet_W32_C, HRNet_W40_C, HRNet_W44_C, HRNet_W48_C, HRNet_W60_C, HRNet_W64_C, SE_HRNet_W64_C from .legendary_models.hrnet import HRNet_W18_C, HRNet_W30_C, HRNet_W32_C, HRNet_W40_C, HRNet_W44_C, HRNet_W48_C, HRNet_W60_C, HRNet_W64_C, SE_HRNet_W64_C
from ppcls.arch.backbone.legendary_models.pp_lcnet import PPLCNet_x0_25, PPLCNet_x0_35, PPLCNet_x0_5, PPLCNet_x0_75, PPLCNet_x1_0, PPLCNet_x1_5, PPLCNet_x2_0, PPLCNet_x2_5 from .legendary_models.pp_lcnet import PPLCNet_x0_25, PPLCNet_x0_35, PPLCNet_x0_5, PPLCNet_x0_75, PPLCNet_x1_0, PPLCNet_x1_5, PPLCNet_x2_0, PPLCNet_x2_5
from ppcls.arch.backbone.legendary_models.pp_lcnet_v2 import PPLCNetV2_base from .legendary_models.pp_lcnet_v2 import PPLCNetV2_base
from ppcls.arch.backbone.legendary_models.esnet import ESNet_x0_25, ESNet_x0_5, ESNet_x0_75, ESNet_x1_0 from .legendary_models.esnet import ESNet_x0_25, ESNet_x0_5, ESNet_x0_75, ESNet_x1_0
from ppcls.arch.backbone.legendary_models.pp_hgnet import PPHGNet_tiny, PPHGNet_small, PPHGNet_base from .legendary_models.pp_hgnet import PPHGNet_tiny, PPHGNet_small, PPHGNet_base
from ppcls.arch.backbone.model_zoo.resnet_vc import ResNet50_vc from .model_zoo.resnet_vc import ResNet50_vc
from ppcls.arch.backbone.model_zoo.resnext import ResNeXt50_32x4d, ResNeXt50_64x4d, ResNeXt101_32x4d, ResNeXt101_64x4d, ResNeXt152_32x4d, ResNeXt152_64x4d from .model_zoo.resnext import ResNeXt50_32x4d, ResNeXt50_64x4d, ResNeXt101_32x4d, ResNeXt101_64x4d, ResNeXt152_32x4d, ResNeXt152_64x4d
from ppcls.arch.backbone.model_zoo.resnext_vd import ResNeXt50_vd_32x4d, ResNeXt50_vd_64x4d, ResNeXt101_vd_32x4d, ResNeXt101_vd_64x4d, ResNeXt152_vd_32x4d, ResNeXt152_vd_64x4d from .model_zoo.resnext_vd import ResNeXt50_vd_32x4d, ResNeXt50_vd_64x4d, ResNeXt101_vd_32x4d, ResNeXt101_vd_64x4d, ResNeXt152_vd_32x4d, ResNeXt152_vd_64x4d
from ppcls.arch.backbone.model_zoo.res2net import Res2Net50_26w_4s, Res2Net50_14w_8s from .model_zoo.res2net import Res2Net50_26w_4s, Res2Net50_14w_8s
from ppcls.arch.backbone.model_zoo.res2net_vd import Res2Net50_vd_26w_4s, Res2Net101_vd_26w_4s, Res2Net200_vd_26w_4s from .model_zoo.res2net_vd import Res2Net50_vd_26w_4s, Res2Net101_vd_26w_4s, Res2Net200_vd_26w_4s
from ppcls.arch.backbone.model_zoo.se_resnet_vd import SE_ResNet18_vd, SE_ResNet34_vd, SE_ResNet50_vd from .model_zoo.se_resnet_vd import SE_ResNet18_vd, SE_ResNet34_vd, SE_ResNet50_vd
from ppcls.arch.backbone.model_zoo.se_resnext_vd import SE_ResNeXt50_vd_32x4d, SE_ResNeXt50_vd_32x4d, SENet154_vd from .model_zoo.se_resnext_vd import SE_ResNeXt50_vd_32x4d, SE_ResNeXt50_vd_32x4d, SENet154_vd
from ppcls.arch.backbone.model_zoo.se_resnext import SE_ResNeXt50_32x4d, SE_ResNeXt101_32x4d, SE_ResNeXt152_64x4d from .model_zoo.se_resnext import SE_ResNeXt50_32x4d, SE_ResNeXt101_32x4d, SE_ResNeXt152_64x4d
from ppcls.arch.backbone.model_zoo.dpn import DPN68, DPN92, DPN98, DPN107, DPN131 from .model_zoo.dpn import DPN68, DPN92, DPN98, DPN107, DPN131
from ppcls.arch.backbone.model_zoo.densenet import DenseNet121, DenseNet161, DenseNet169, DenseNet201, DenseNet264 from .model_zoo.densenet import DenseNet121, DenseNet161, DenseNet169, DenseNet201, DenseNet264
from ppcls.arch.backbone.model_zoo.efficientnet import EfficientNetB0, EfficientNetB1, EfficientNetB2, EfficientNetB3, EfficientNetB4, EfficientNetB5, EfficientNetB6, EfficientNetB7, EfficientNetB0_small from .model_zoo.efficientnet import EfficientNetB0, EfficientNetB1, EfficientNetB2, EfficientNetB3, EfficientNetB4, EfficientNetB5, EfficientNetB6, EfficientNetB7, EfficientNetB0_small
from ppcls.arch.backbone.model_zoo.resnest import ResNeSt50_fast_1s1x64d, ResNeSt50, ResNeSt101 from .model_zoo.resnest import ResNeSt50_fast_1s1x64d, ResNeSt50, ResNeSt101
from ppcls.arch.backbone.model_zoo.googlenet import GoogLeNet from .model_zoo.googlenet import GoogLeNet
from ppcls.arch.backbone.model_zoo.mobilenet_v2 import MobileNetV2_x0_25, MobileNetV2_x0_5, MobileNetV2_x0_75, MobileNetV2, MobileNetV2_x1_5, MobileNetV2_x2_0 from .model_zoo.mobilenet_v2 import MobileNetV2_x0_25, MobileNetV2_x0_5, MobileNetV2_x0_75, MobileNetV2, MobileNetV2_x1_5, MobileNetV2_x2_0
from ppcls.arch.backbone.model_zoo.shufflenet_v2 import ShuffleNetV2_x0_25, ShuffleNetV2_x0_33, ShuffleNetV2_x0_5, ShuffleNetV2_x1_0, ShuffleNetV2_x1_5, ShuffleNetV2_x2_0, ShuffleNetV2_swish from .model_zoo.shufflenet_v2 import ShuffleNetV2_x0_25, ShuffleNetV2_x0_33, ShuffleNetV2_x0_5, ShuffleNetV2_x1_0, ShuffleNetV2_x1_5, ShuffleNetV2_x2_0, ShuffleNetV2_swish
from ppcls.arch.backbone.model_zoo.ghostnet import GhostNet_x0_5, GhostNet_x1_0, GhostNet_x1_3 from .model_zoo.ghostnet import GhostNet_x0_5, GhostNet_x1_0, GhostNet_x1_3
from ppcls.arch.backbone.model_zoo.alexnet import AlexNet from .model_zoo.alexnet import AlexNet
from ppcls.arch.backbone.model_zoo.inception_v4 import InceptionV4 from .model_zoo.inception_v4 import InceptionV4
from ppcls.arch.backbone.model_zoo.xception import Xception41, Xception65, Xception71 from .model_zoo.xception import Xception41, Xception65, Xception71
from ppcls.arch.backbone.model_zoo.xception_deeplab import Xception41_deeplab, Xception65_deeplab from .model_zoo.xception_deeplab import Xception41_deeplab, Xception65_deeplab
from ppcls.arch.backbone.model_zoo.resnext101_wsl import ResNeXt101_32x8d_wsl, ResNeXt101_32x16d_wsl, ResNeXt101_32x32d_wsl, ResNeXt101_32x48d_wsl from .model_zoo.resnext101_wsl import ResNeXt101_32x8d_wsl, ResNeXt101_32x16d_wsl, ResNeXt101_32x32d_wsl, ResNeXt101_32x48d_wsl
from ppcls.arch.backbone.model_zoo.squeezenet import SqueezeNet1_0, SqueezeNet1_1 from .model_zoo.squeezenet import SqueezeNet1_0, SqueezeNet1_1
from ppcls.arch.backbone.model_zoo.darknet import DarkNet53 from .model_zoo.darknet import DarkNet53
from ppcls.arch.backbone.model_zoo.regnet import RegNetX_200MF, RegNetX_4GF, RegNetX_32GF, RegNetY_200MF, RegNetY_4GF, RegNetY_32GF from .model_zoo.regnet import RegNetX_200MF, RegNetX_4GF, RegNetX_32GF, RegNetY_200MF, RegNetY_4GF, RegNetY_32GF
from ppcls.arch.backbone.model_zoo.vision_transformer import ViT_small_patch16_224, ViT_base_patch16_224, ViT_base_patch16_384, ViT_base_patch32_384, ViT_large_patch16_224, ViT_large_patch16_384, ViT_large_patch32_384 from .model_zoo.vision_transformer import ViT_small_patch16_224, ViT_base_patch16_224, ViT_base_patch16_384, ViT_base_patch32_384, ViT_large_patch16_224, ViT_large_patch16_384, ViT_large_patch32_384
from ppcls.arch.backbone.model_zoo.distilled_vision_transformer import DeiT_tiny_patch16_224, DeiT_small_patch16_224, DeiT_base_patch16_224, DeiT_tiny_distilled_patch16_224, DeiT_small_distilled_patch16_224, DeiT_base_distilled_patch16_224, DeiT_base_patch16_384, DeiT_base_distilled_patch16_384 from .model_zoo.distilled_vision_transformer import DeiT_tiny_patch16_224, DeiT_small_patch16_224, DeiT_base_patch16_224, DeiT_tiny_distilled_patch16_224, DeiT_small_distilled_patch16_224, DeiT_base_distilled_patch16_224, DeiT_base_patch16_384, DeiT_base_distilled_patch16_384
from ppcls.arch.backbone.legendary_models.swin_transformer import SwinTransformer_tiny_patch4_window7_224, SwinTransformer_small_patch4_window7_224, SwinTransformer_base_patch4_window7_224, SwinTransformer_base_patch4_window12_384, SwinTransformer_large_patch4_window7_224, SwinTransformer_large_patch4_window12_384 from .legendary_models.swin_transformer import SwinTransformer_tiny_patch4_window7_224, SwinTransformer_small_patch4_window7_224, SwinTransformer_base_patch4_window7_224, SwinTransformer_base_patch4_window12_384, SwinTransformer_large_patch4_window7_224, SwinTransformer_large_patch4_window12_384
from ppcls.arch.backbone.model_zoo.cswin_transformer import CSWinTransformer_tiny_224, CSWinTransformer_small_224, CSWinTransformer_base_224, CSWinTransformer_large_224, CSWinTransformer_base_384, CSWinTransformer_large_384 from .model_zoo.cswin_transformer import CSWinTransformer_tiny_224, CSWinTransformer_small_224, CSWinTransformer_base_224, CSWinTransformer_large_224, CSWinTransformer_base_384, CSWinTransformer_large_384
from ppcls.arch.backbone.model_zoo.mixnet import MixNet_S, MixNet_M, MixNet_L from .model_zoo.mixnet import MixNet_S, MixNet_M, MixNet_L
from ppcls.arch.backbone.model_zoo.rexnet import ReXNet_1_0, ReXNet_1_3, ReXNet_1_5, ReXNet_2_0, ReXNet_3_0 from .model_zoo.rexnet import ReXNet_1_0, ReXNet_1_3, ReXNet_1_5, ReXNet_2_0, ReXNet_3_0
from ppcls.arch.backbone.model_zoo.gvt import pcpvt_small, pcpvt_base, pcpvt_large, alt_gvt_small, alt_gvt_base, alt_gvt_large from .model_zoo.gvt import pcpvt_small, pcpvt_base, pcpvt_large, alt_gvt_small, alt_gvt_base, alt_gvt_large
from ppcls.arch.backbone.model_zoo.levit import LeViT_128S, LeViT_128, LeViT_192, LeViT_256, LeViT_384 from .model_zoo.levit import LeViT_128S, LeViT_128, LeViT_192, LeViT_256, LeViT_384
from ppcls.arch.backbone.model_zoo.dla import DLA34, DLA46_c, DLA46x_c, DLA60, DLA60x, DLA60x_c, DLA102, DLA102x, DLA102x2, DLA169 from .model_zoo.dla import DLA34, DLA46_c, DLA46x_c, DLA60, DLA60x, DLA60x_c, DLA102, DLA102x, DLA102x2, DLA169
from ppcls.arch.backbone.model_zoo.rednet import RedNet26, RedNet38, RedNet50, RedNet101, RedNet152 from .model_zoo.rednet import RedNet26, RedNet38, RedNet50, RedNet101, RedNet152
from ppcls.arch.backbone.model_zoo.tnt import TNT_small from .model_zoo.tnt import TNT_small
from ppcls.arch.backbone.model_zoo.hardnet import HarDNet68, HarDNet85, HarDNet39_ds, HarDNet68_ds from .model_zoo.hardnet import HarDNet68, HarDNet85, HarDNet39_ds, HarDNet68_ds
from ppcls.arch.backbone.model_zoo.cspnet import CSPDarkNet53 from .model_zoo.cspnet import CSPDarkNet53
from ppcls.arch.backbone.model_zoo.pvt_v2 import PVT_V2_B0, PVT_V2_B1, PVT_V2_B2_Linear, PVT_V2_B2, PVT_V2_B3, PVT_V2_B4, PVT_V2_B5 from .model_zoo.pvt_v2 import PVT_V2_B0, PVT_V2_B1, PVT_V2_B2_Linear, PVT_V2_B2, PVT_V2_B3, PVT_V2_B4, PVT_V2_B5
from ppcls.arch.backbone.model_zoo.mobilevit import MobileViT_XXS, MobileViT_XS, MobileViT_S from .model_zoo.mobilevit import MobileViT_XXS, MobileViT_XS, MobileViT_S
from ppcls.arch.backbone.model_zoo.repvgg import RepVGG_A0, RepVGG_A1, RepVGG_A2, RepVGG_B0, RepVGG_B1, RepVGG_B2, RepVGG_B1g2, RepVGG_B1g4, RepVGG_B2g4, RepVGG_B3g4 from .model_zoo.repvgg import RepVGG_A0, RepVGG_A1, RepVGG_A2, RepVGG_B0, RepVGG_B1, RepVGG_B2, RepVGG_B1g2, RepVGG_B1g4, RepVGG_B2g4, RepVGG_B3g4
from ppcls.arch.backbone.model_zoo.van import VAN_tiny from .model_zoo.van import VAN_tiny
from ppcls.arch.backbone.model_zoo.peleenet import PeleeNet from .model_zoo.peleenet import PeleeNet
from ppcls.arch.backbone.model_zoo.convnext import ConvNeXt_tiny from .model_zoo.convnext import ConvNeXt_tiny
from ppcls.arch.backbone.variant_models.resnet_variant import ResNet50_last_stage_stride1 from .variant_models.resnet_variant import ResNet50_last_stage_stride1
from ppcls.arch.backbone.variant_models.vgg_variant import VGG19Sigmoid from .variant_models.vgg_variant import VGG19Sigmoid
from ppcls.arch.backbone.variant_models.pp_lcnet_variant import PPLCNet_x2_5_Tanh from .variant_models.pp_lcnet_variant import PPLCNet_x2_5_Tanh
from ppcls.arch.backbone.model_zoo.adaface_ir_net import AdaFace_IR_18, AdaFace_IR_34, AdaFace_IR_50, AdaFace_IR_101, AdaFace_IR_152, AdaFace_IR_SE_50, AdaFace_IR_SE_101, AdaFace_IR_SE_152, AdaFace_IR_SE_200 from .model_zoo.adaface_ir_net import AdaFace_IR_18, AdaFace_IR_34, AdaFace_IR_50, AdaFace_IR_101, AdaFace_IR_152, AdaFace_IR_SE_50, AdaFace_IR_SE_101, AdaFace_IR_SE_152, AdaFace_IR_SE_200
# help whl get all the models' api (class type) and components' api (func type) # help whl get all the models' api (class type) and components' api (func type)
......
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
from typing import Tuple, List, Dict, Union, Callable, Any from typing import Tuple, List, Dict, Union, Callable, Any
from paddle import nn from paddle import nn
from ppcls.utils import logger from ....utils import logger
class Identity(nn.Layer): class Identity(nn.Layer):
......
...@@ -22,8 +22,8 @@ from paddle.nn import AdaptiveAvgPool2D, MaxPool2D ...@@ -22,8 +22,8 @@ from paddle.nn import AdaptiveAvgPool2D, MaxPool2D
from paddle.nn.initializer import KaimingNormal from paddle.nn.initializer import KaimingNormal
from paddle.regularizer import L2Decay from paddle.regularizer import L2Decay
from ppcls.arch.backbone.base.theseus_layer import TheseusLayer from ..base.theseus_layer import TheseusLayer
from ppcls.utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url from ....utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url
MODEL_URLS = { MODEL_URLS = {
"ESNet_x0_25": "ESNet_x0_25":
......
...@@ -25,8 +25,8 @@ from paddle import ParamAttr ...@@ -25,8 +25,8 @@ from paddle import ParamAttr
from paddle.nn.functional import upsample from paddle.nn.functional import upsample
from paddle.nn.initializer import Uniform from paddle.nn.initializer import Uniform
from ppcls.arch.backbone.base.theseus_layer import TheseusLayer, Identity from ..base.theseus_layer import TheseusLayer, Identity
from ppcls.utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url from ....utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url
MODEL_URLS = { MODEL_URLS = {
"HRNet_W18_C": "HRNet_W18_C":
......
...@@ -23,8 +23,8 @@ from paddle.nn import Conv2D, BatchNorm, Linear, Dropout ...@@ -23,8 +23,8 @@ from paddle.nn import Conv2D, BatchNorm, Linear, Dropout
from paddle.nn import AdaptiveAvgPool2D, MaxPool2D, AvgPool2D from paddle.nn import AdaptiveAvgPool2D, MaxPool2D, AvgPool2D
from paddle.nn.initializer import Uniform from paddle.nn.initializer import Uniform
from ppcls.arch.backbone.base.theseus_layer import TheseusLayer from ..base.theseus_layer import TheseusLayer
from ppcls.utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url from ....utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url
MODEL_URLS = { MODEL_URLS = {
"InceptionV3": "InceptionV3":
......
...@@ -22,8 +22,8 @@ from paddle.nn import Conv2D, BatchNorm, Linear, ReLU, Flatten ...@@ -22,8 +22,8 @@ from paddle.nn import Conv2D, BatchNorm, Linear, ReLU, Flatten
from paddle.nn import AdaptiveAvgPool2D from paddle.nn import AdaptiveAvgPool2D
from paddle.nn.initializer import KaimingNormal from paddle.nn.initializer import KaimingNormal
from ppcls.arch.backbone.base.theseus_layer import TheseusLayer from ..base.theseus_layer import TheseusLayer
from ppcls.utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url from ....utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url
MODEL_URLS = { MODEL_URLS = {
"MobileNetV1_x0_25": "MobileNetV1_x0_25":
......
...@@ -21,8 +21,9 @@ import paddle.nn as nn ...@@ -21,8 +21,9 @@ import paddle.nn as nn
from paddle import ParamAttr from paddle import ParamAttr
from paddle.nn import AdaptiveAvgPool2D, BatchNorm, Conv2D, Dropout, Linear from paddle.nn import AdaptiveAvgPool2D, BatchNorm, Conv2D, Dropout, Linear
from paddle.regularizer import L2Decay from paddle.regularizer import L2Decay
from ppcls.arch.backbone.base.theseus_layer import TheseusLayer
from ppcls.utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url from ..base.theseus_layer import TheseusLayer
from ....utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url
MODEL_URLS = { MODEL_URLS = {
"MobileNetV3_small_x0_35": "MobileNetV3_small_x0_35":
......
...@@ -20,8 +20,8 @@ from paddle.nn import Conv2D, BatchNorm2D, ReLU, AdaptiveAvgPool2D, MaxPool2D ...@@ -20,8 +20,8 @@ from paddle.nn import Conv2D, BatchNorm2D, ReLU, AdaptiveAvgPool2D, MaxPool2D
from paddle.regularizer import L2Decay from paddle.regularizer import L2Decay
from paddle import ParamAttr from paddle import ParamAttr
from ppcls.arch.backbone.base.theseus_layer import TheseusLayer from ..base.theseus_layer import TheseusLayer
from ppcls.utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url from ....utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url
MODEL_URLS = { MODEL_URLS = {
"PPHGNet_tiny": "PPHGNet_tiny":
...@@ -199,6 +199,7 @@ class PPHGNet(TheseusLayer): ...@@ -199,6 +199,7 @@ class PPHGNet(TheseusLayer):
Returns: Returns:
model: nn.Layer. Specific PPHGNet model depends on args. model: nn.Layer. Specific PPHGNet model depends on args.
""" """
def __init__(self, def __init__(self,
stem_channels, stem_channels,
stage_config, stage_config,
...@@ -230,7 +231,7 @@ class PPHGNet(TheseusLayer): ...@@ -230,7 +231,7 @@ class PPHGNet(TheseusLayer):
k] k]
self.stages.append( self.stages.append(
HG_Stage(in_channels, mid_channels, out_channels, block_num, HG_Stage(in_channels, mid_channels, out_channels, block_num,
layer_num, downsample)) layer_num, downsample))
self.avg_pool = AdaptiveAvgPool2D(1) self.avg_pool = AdaptiveAvgPool2D(1)
if self.use_last_conv: if self.use_last_conv:
......
...@@ -20,8 +20,9 @@ from paddle import ParamAttr ...@@ -20,8 +20,9 @@ from paddle import ParamAttr
from paddle.nn import AdaptiveAvgPool2D, BatchNorm2D, Conv2D, Dropout, Linear from paddle.nn import AdaptiveAvgPool2D, BatchNorm2D, Conv2D, Dropout, Linear
from paddle.regularizer import L2Decay from paddle.regularizer import L2Decay
from paddle.nn.initializer import KaimingNormal from paddle.nn.initializer import KaimingNormal
from ppcls.arch.backbone.base.theseus_layer import TheseusLayer
from ppcls.utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url from ..base.theseus_layer import TheseusLayer
from ....utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url
MODEL_URLS = { MODEL_URLS = {
"PPLCNet_x0_25": "PPLCNet_x0_25":
...@@ -229,64 +230,59 @@ class PPLCNet(TheseusLayer): ...@@ -229,64 +230,59 @@ class PPLCNet(TheseusLayer):
stride=stride_list[0], stride=stride_list[0],
lr_mult=self.lr_mult_list[0]) lr_mult=self.lr_mult_list[0])
self.blocks2 = nn.Sequential(*[ self.blocks2 = nn.Sequential(* [
DepthwiseSeparable( DepthwiseSeparable(
num_channels=make_divisible(in_c * scale), num_channels=make_divisible(in_c * scale),
num_filters=make_divisible(out_c * scale), num_filters=make_divisible(out_c * scale),
dw_size=k, dw_size=k,
stride=s, stride=s,
use_se=se, use_se=se,
lr_mult=self.lr_mult_list[1]) lr_mult=self.lr_mult_list[1]) for i, (k, in_c, out_c, s, se) in
for i, (k, in_c, out_c, s, se enumerate(self.net_config["blocks2"])
) in enumerate(self.net_config["blocks2"])
]) ])
self.blocks3 = nn.Sequential(*[ self.blocks3 = nn.Sequential(* [
DepthwiseSeparable( DepthwiseSeparable(
num_channels=make_divisible(in_c * scale), num_channels=make_divisible(in_c * scale),
num_filters=make_divisible(out_c * scale), num_filters=make_divisible(out_c * scale),
dw_size=k, dw_size=k,
stride=s, stride=s,
use_se=se, use_se=se,
lr_mult=self.lr_mult_list[2]) lr_mult=self.lr_mult_list[2]) for i, (k, in_c, out_c, s, se) in
for i, (k, in_c, out_c, s, se enumerate(self.net_config["blocks3"])
) in enumerate(self.net_config["blocks3"])
]) ])
self.blocks4 = nn.Sequential(*[ self.blocks4 = nn.Sequential(* [
DepthwiseSeparable( DepthwiseSeparable(
num_channels=make_divisible(in_c * scale), num_channels=make_divisible(in_c * scale),
num_filters=make_divisible(out_c * scale), num_filters=make_divisible(out_c * scale),
dw_size=k, dw_size=k,
stride=s, stride=s,
use_se=se, use_se=se,
lr_mult=self.lr_mult_list[3]) lr_mult=self.lr_mult_list[3]) for i, (k, in_c, out_c, s, se) in
for i, (k, in_c, out_c, s, se enumerate(self.net_config["blocks4"])
) in enumerate(self.net_config["blocks4"])
]) ])
self.blocks5 = nn.Sequential(*[ self.blocks5 = nn.Sequential(* [
DepthwiseSeparable( DepthwiseSeparable(
num_channels=make_divisible(in_c * scale), num_channels=make_divisible(in_c * scale),
num_filters=make_divisible(out_c * scale), num_filters=make_divisible(out_c * scale),
dw_size=k, dw_size=k,
stride=s, stride=s,
use_se=se, use_se=se,
lr_mult=self.lr_mult_list[4]) lr_mult=self.lr_mult_list[4]) for i, (k, in_c, out_c, s, se) in
for i, (k, in_c, out_c, s, se enumerate(self.net_config["blocks5"])
) in enumerate(self.net_config["blocks5"])
]) ])
self.blocks6 = nn.Sequential(*[ self.blocks6 = nn.Sequential(* [
DepthwiseSeparable( DepthwiseSeparable(
num_channels=make_divisible(in_c * scale), num_channels=make_divisible(in_c * scale),
num_filters=make_divisible(out_c * scale), num_filters=make_divisible(out_c * scale),
dw_size=k, dw_size=k,
stride=s, stride=s,
use_se=se, use_se=se,
lr_mult=self.lr_mult_list[5]) lr_mult=self.lr_mult_list[5]) for i, (k, in_c, out_c, s, se) in
for i, (k, in_c, out_c, s, se enumerate(self.net_config["blocks6"])
) in enumerate(self.net_config["blocks6"])
]) ])
self.avg_pool = AdaptiveAvgPool2D(1) self.avg_pool = AdaptiveAvgPool2D(1)
......
...@@ -21,8 +21,9 @@ from paddle import ParamAttr ...@@ -21,8 +21,9 @@ from paddle import ParamAttr
from paddle.nn import AdaptiveAvgPool2D, BatchNorm2D, Conv2D, Dropout, Linear from paddle.nn import AdaptiveAvgPool2D, BatchNorm2D, Conv2D, Dropout, Linear
from paddle.regularizer import L2Decay from paddle.regularizer import L2Decay
from paddle.nn.initializer import KaimingNormal from paddle.nn.initializer import KaimingNormal
from ppcls.arch.backbone.base.theseus_layer import TheseusLayer
from ppcls.utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url from ..base.theseus_layer import TheseusLayer
from ....utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url
MODEL_URLS = { MODEL_URLS = {
"PPLCNetV2_base": "PPLCNetV2_base":
......
...@@ -26,9 +26,9 @@ from paddle.nn.initializer import Uniform ...@@ -26,9 +26,9 @@ from paddle.nn.initializer import Uniform
from paddle.regularizer import L2Decay from paddle.regularizer import L2Decay
import math import math
from ppcls.utils import logger from ....utils import logger
from ppcls.arch.backbone.base.theseus_layer import TheseusLayer from ..base.theseus_layer import TheseusLayer
from ppcls.utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url from ....utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url
MODEL_URLS = { MODEL_URLS = {
"ResNet18": "ResNet18":
...@@ -328,7 +328,7 @@ class ResNet(TheseusLayer): ...@@ -328,7 +328,7 @@ class ResNet(TheseusLayer):
[32, 32, 3, 1], [32, 64, 3, 1]] [32, 32, 3, 1], [32, 64, 3, 1]]
} }
self.stem = nn.Sequential(*[ self.stem = nn.Sequential(* [
ConvBNLayer( ConvBNLayer(
num_channels=in_c, num_channels=in_c,
num_filters=out_c, num_filters=out_c,
......
...@@ -21,23 +21,23 @@ import paddle.nn as nn ...@@ -21,23 +21,23 @@ import paddle.nn as nn
import paddle.nn.functional as F import paddle.nn.functional as F
from paddle.nn.initializer import TruncatedNormal, Constant from paddle.nn.initializer import TruncatedNormal, Constant
from ppcls.arch.backbone.base.theseus_layer import TheseusLayer from ..model_zoo.vision_transformer import trunc_normal_, zeros_, ones_, to_2tuple, DropPath, Identity
from ppcls.arch.backbone.model_zoo.vision_transformer import trunc_normal_, zeros_, ones_, to_2tuple, DropPath, Identity from ..base.theseus_layer import TheseusLayer
from ppcls.utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url from ....utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url
MODEL_URLS = { MODEL_URLS = {
"SwinTransformer_tiny_patch4_window7_224": "SwinTransformer_tiny_patch4_window7_224":
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/SwinTransformer_tiny_patch4_window7_224_pretrained.pdparams", "https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/legendary_models/SwinTransformer_tiny_patch4_window7_224_pretrained.pdparams",
"SwinTransformer_small_patch4_window7_224": "SwinTransformer_small_patch4_window7_224":
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/SwinTransformer_small_patch4_window7_224_pretrained.pdparams", "https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/legendary_models/SwinTransformer_small_patch4_window7_224_pretrained.pdparams",
"SwinTransformer_base_patch4_window7_224": "SwinTransformer_base_patch4_window7_224":
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/SwinTransformer_base_patch4_window7_224_pretrained.pdparams", "https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/legendary_models/SwinTransformer_base_patch4_window7_224_pretrained.pdparams",
"SwinTransformer_base_patch4_window12_384": "SwinTransformer_base_patch4_window12_384":
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/SwinTransformer_base_patch4_window12_384_pretrained.pdparams", "https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/legendary_models/SwinTransformer_base_patch4_window12_384_pretrained.pdparams",
"SwinTransformer_large_patch4_window7_224": "SwinTransformer_large_patch4_window7_224":
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/SwinTransformer_large_patch4_window7_224_22kto1k_pretrained.pdparams", "https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/legendary_models/SwinTransformer_large_patch4_window7_224_22kto1k_pretrained.pdparams",
"SwinTransformer_large_patch4_window12_384": "SwinTransformer_large_patch4_window12_384":
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/SwinTransformer_large_patch4_window12_384_22kto1k_pretrained.pdparams", "https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/legendary_models/SwinTransformer_large_patch4_window12_384_22kto1k_pretrained.pdparams",
} }
__all__ = list(MODEL_URLS.keys()) __all__ = list(MODEL_URLS.keys())
......
...@@ -20,8 +20,8 @@ import paddle.nn as nn ...@@ -20,8 +20,8 @@ import paddle.nn as nn
from paddle.nn import Conv2D, BatchNorm, Linear, Dropout from paddle.nn import Conv2D, BatchNorm, Linear, Dropout
from paddle.nn import MaxPool2D from paddle.nn import MaxPool2D
from ppcls.arch.backbone.base.theseus_layer import TheseusLayer from ..base.theseus_layer import TheseusLayer
from ppcls.utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url from ....utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url
MODEL_URLS = { MODEL_URLS = {
"VGG11": "VGG11":
......
...@@ -23,7 +23,7 @@ from paddle.nn import AdaptiveAvgPool2D, MaxPool2D, AvgPool2D ...@@ -23,7 +23,7 @@ from paddle.nn import AdaptiveAvgPool2D, MaxPool2D, AvgPool2D
from paddle.nn.initializer import Uniform from paddle.nn.initializer import Uniform
import math import math
from ppcls.utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url from ....utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url
MODEL_URLS = { MODEL_URLS = {
"AlexNet": "AlexNet":
......
...@@ -18,7 +18,7 @@ import paddle ...@@ -18,7 +18,7 @@ import paddle
import paddle.nn as nn import paddle.nn as nn
from paddle.nn.initializer import TruncatedNormal, Constant from paddle.nn.initializer import TruncatedNormal, Constant
from ppcls.utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url from ....utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url
MODEL_URLS = { MODEL_URLS = {
"ConvNeXt_tiny": "", # TODO "ConvNeXt_tiny": "", # TODO
...@@ -176,7 +176,7 @@ class ConvNeXt(nn.Layer): ...@@ -176,7 +176,7 @@ class ConvNeXt(nn.Layer):
] ]
cur = 0 cur = 0
for i in range(4): for i in range(4):
stage = nn.Sequential(*[ stage = nn.Sequential(* [
Block( Block(
dim=dims[i], dim=dims[i],
drop_path=dp_rates[cur + j], drop_path=dp_rates[cur + j],
......
...@@ -20,7 +20,7 @@ import paddle.nn as nn ...@@ -20,7 +20,7 @@ import paddle.nn as nn
import paddle.nn.functional as F import paddle.nn.functional as F
from paddle import ParamAttr from paddle import ParamAttr
from ppcls.utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url from ....utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url
MODEL_URLS = { MODEL_URLS = {
"CSPDarkNet53": "CSPDarkNet53":
......
...@@ -21,7 +21,7 @@ import paddle ...@@ -21,7 +21,7 @@ import paddle
import paddle.nn as nn import paddle.nn as nn
from .vision_transformer import trunc_normal_, zeros_, ones_, to_2tuple, DropPath, Identity from .vision_transformer import trunc_normal_, zeros_, ones_, to_2tuple, DropPath, Identity
from ppcls.utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url from ....utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url
MODEL_URLS = { MODEL_URLS = {
"CSWinTransformer_tiny_224": "CSWinTransformer_tiny_224":
......
...@@ -23,7 +23,7 @@ from paddle.nn import AdaptiveAvgPool2D, MaxPool2D, AvgPool2D ...@@ -23,7 +23,7 @@ from paddle.nn import AdaptiveAvgPool2D, MaxPool2D, AvgPool2D
from paddle.nn.initializer import Uniform from paddle.nn.initializer import Uniform
import math import math
from ppcls.utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url from ....utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url
MODEL_URLS = { MODEL_URLS = {
"DarkNet53": "DarkNet53":
......
...@@ -28,7 +28,7 @@ from paddle.nn.initializer import Uniform ...@@ -28,7 +28,7 @@ from paddle.nn.initializer import Uniform
import math import math
from ppcls.utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url from ....utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url
MODEL_URLS = { MODEL_URLS = {
"DenseNet121": "DenseNet121":
......
...@@ -19,7 +19,7 @@ import paddle ...@@ -19,7 +19,7 @@ import paddle
import paddle.nn as nn import paddle.nn as nn
from .vision_transformer import VisionTransformer, Identity, trunc_normal_, zeros_ from .vision_transformer import VisionTransformer, Identity, trunc_normal_, zeros_
from ppcls.utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url from ....utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url
MODEL_URLS = { MODEL_URLS = {
"DeiT_tiny_patch16_224": "DeiT_tiny_patch16_224":
......
...@@ -23,8 +23,8 @@ import paddle.nn.functional as F ...@@ -23,8 +23,8 @@ import paddle.nn.functional as F
from paddle.nn.initializer import Normal, Constant from paddle.nn.initializer import Normal, Constant
from ppcls.arch.backbone.base.theseus_layer import Identity from ..base.theseus_layer import Identity
from ppcls.utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url from ....utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url
MODEL_URLS = { MODEL_URLS = {
"DLA34": "DLA34":
......
...@@ -29,7 +29,7 @@ from paddle.nn.initializer import Uniform ...@@ -29,7 +29,7 @@ from paddle.nn.initializer import Uniform
import math import math
from ppcls.utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url from ....utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url
MODEL_URLS = { MODEL_URLS = {
"DPN68": "DPN68":
......
...@@ -26,7 +26,7 @@ import collections ...@@ -26,7 +26,7 @@ import collections
import re import re
import copy import copy
from ppcls.utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url from ....utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url
MODEL_URLS = { MODEL_URLS = {
"EfficientNetB0_small": "EfficientNetB0_small":
......
...@@ -24,7 +24,7 @@ from paddle.nn import Conv2D, BatchNorm, AdaptiveAvgPool2D, Linear ...@@ -24,7 +24,7 @@ from paddle.nn import Conv2D, BatchNorm, AdaptiveAvgPool2D, Linear
from paddle.regularizer import L2Decay from paddle.regularizer import L2Decay
from paddle.nn.initializer import Uniform, KaimingNormal from paddle.nn.initializer import Uniform, KaimingNormal
from ppcls.utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url from ....utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url
MODEL_URLS = { MODEL_URLS = {
"GhostNet_x0_5": "GhostNet_x0_5":
......
...@@ -24,7 +24,7 @@ from paddle.nn.initializer import Uniform ...@@ -24,7 +24,7 @@ from paddle.nn.initializer import Uniform
import math import math
from ppcls.utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url from ....utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url
MODEL_URLS = { MODEL_URLS = {
"GoogLeNet": "GoogLeNet":
......
...@@ -25,7 +25,7 @@ from paddle.regularizer import L2Decay ...@@ -25,7 +25,7 @@ from paddle.regularizer import L2Decay
from .vision_transformer import trunc_normal_, normal_, zeros_, ones_, to_2tuple, DropPath, Identity, Mlp from .vision_transformer import trunc_normal_, normal_, zeros_, ones_, to_2tuple, DropPath, Identity, Mlp
from .vision_transformer import Block as ViTBlock from .vision_transformer import Block as ViTBlock
from ppcls.utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url from ....utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url
MODEL_URLS = { MODEL_URLS = {
"pcpvt_small": "pcpvt_small":
......
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
import paddle import paddle
import paddle.nn as nn import paddle.nn as nn
from ppcls.utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url from ....utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url
MODEL_URLS = { MODEL_URLS = {
'HarDNet39_ds': 'HarDNet39_ds':
......
...@@ -23,7 +23,7 @@ from paddle.nn import AdaptiveAvgPool2D, MaxPool2D, AvgPool2D ...@@ -23,7 +23,7 @@ from paddle.nn import AdaptiveAvgPool2D, MaxPool2D, AvgPool2D
from paddle.nn.initializer import Uniform from paddle.nn.initializer import Uniform
import math import math
from ppcls.utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url from ....utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url
MODEL_URLS = { MODEL_URLS = {
"InceptionV4": "InceptionV4":
......
...@@ -27,7 +27,7 @@ from paddle.regularizer import L2Decay ...@@ -27,7 +27,7 @@ from paddle.regularizer import L2Decay
from .vision_transformer import trunc_normal_, zeros_, ones_, Identity from .vision_transformer import trunc_normal_, zeros_, ones_, Identity
from ppcls.utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url from ....utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url
MODEL_URLS = { MODEL_URLS = {
"LeViT_128S": "LeViT_128S":
......
...@@ -20,7 +20,7 @@ from functools import reduce ...@@ -20,7 +20,7 @@ from functools import reduce
import paddle import paddle
import paddle.nn as nn import paddle.nn as nn
from ppcls.utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url from ....utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url
MODEL_URLS = { MODEL_URLS = {
"MixNet_S": "MixNet_S":
......
...@@ -28,7 +28,7 @@ from paddle.nn import AdaptiveAvgPool2D, MaxPool2D, AvgPool2D ...@@ -28,7 +28,7 @@ from paddle.nn import AdaptiveAvgPool2D, MaxPool2D, AvgPool2D
import math import math
from ppcls.utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url from ....utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url
MODEL_URLS = { MODEL_URLS = {
"MobileNetV2_x0_25": "MobileNetV2_x0_25":
......
...@@ -23,7 +23,7 @@ import paddle.nn.functional as F ...@@ -23,7 +23,7 @@ import paddle.nn.functional as F
from paddle.nn.initializer import KaimingUniform, TruncatedNormal, Constant from paddle.nn.initializer import KaimingUniform, TruncatedNormal, Constant
import math import math
from ppcls.utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url from ....utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url
MODEL_URLS = { MODEL_URLS = {
"MobileViT_XXS": "MobileViT_XXS":
......
...@@ -22,7 +22,7 @@ import paddle.nn as nn ...@@ -22,7 +22,7 @@ import paddle.nn as nn
import paddle.nn.functional as F import paddle.nn.functional as F
from paddle.nn.initializer import Normal, Constant from paddle.nn.initializer import Normal, Constant
from ppcls.utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url from ....utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url
MODEL_URLS = { MODEL_URLS = {
"PeleeNet": "" # TODO "PeleeNet": "" # TODO
...@@ -37,7 +37,8 @@ ones_ = Constant(value=1.) ...@@ -37,7 +37,8 @@ ones_ = Constant(value=1.)
class _DenseLayer(nn.Layer): class _DenseLayer(nn.Layer):
def __init__(self, num_input_features, growth_rate, bottleneck_width, drop_rate): def __init__(self, num_input_features, growth_rate, bottleneck_width,
drop_rate):
super(_DenseLayer, self).__init__() super(_DenseLayer, self).__init__()
growth_rate = int(growth_rate / 2) growth_rate = int(growth_rate / 2)
...@@ -71,11 +72,12 @@ class _DenseLayer(nn.Layer): ...@@ -71,11 +72,12 @@ class _DenseLayer(nn.Layer):
class _DenseBlock(nn.Sequential): class _DenseBlock(nn.Sequential):
def __init__(self, num_layers, num_input_features, bn_size, growth_rate, drop_rate): def __init__(self, num_layers, num_input_features, bn_size, growth_rate,
drop_rate):
super(_DenseBlock, self).__init__() super(_DenseBlock, self).__init__()
for i in range(num_layers): for i in range(num_layers):
layer = _DenseLayer(num_input_features + i * layer = _DenseLayer(num_input_features + i * growth_rate,
growth_rate, growth_rate, bn_size, drop_rate) growth_rate, bn_size, drop_rate)
setattr(self, 'denselayer%d' % (i + 1), layer) setattr(self, 'denselayer%d' % (i + 1), layer)
...@@ -83,16 +85,32 @@ class _StemBlock(nn.Layer): ...@@ -83,16 +85,32 @@ class _StemBlock(nn.Layer):
def __init__(self, num_input_channels, num_init_features): def __init__(self, num_input_channels, num_init_features):
super(_StemBlock, self).__init__() super(_StemBlock, self).__init__()
num_stem_features = int(num_init_features/2) num_stem_features = int(num_init_features / 2)
self.stem1 = BasicConv2D( self.stem1 = BasicConv2D(
num_input_channels, num_init_features, kernel_size=3, stride=2, padding=1) num_input_channels,
num_init_features,
kernel_size=3,
stride=2,
padding=1)
self.stem2a = BasicConv2D( self.stem2a = BasicConv2D(
num_init_features, num_stem_features, kernel_size=1, stride=1, padding=0) num_init_features,
num_stem_features,
kernel_size=1,
stride=1,
padding=0)
self.stem2b = BasicConv2D( self.stem2b = BasicConv2D(
num_stem_features, num_init_features, kernel_size=3, stride=2, padding=1) num_stem_features,
num_init_features,
kernel_size=3,
stride=2,
padding=1)
self.stem3 = BasicConv2D( self.stem3 = BasicConv2D(
2*num_init_features, num_init_features, kernel_size=1, stride=1, padding=0) 2 * num_init_features,
num_init_features,
kernel_size=1,
stride=1,
padding=0)
self.pool = nn.MaxPool2D(kernel_size=2, stride=2) self.pool = nn.MaxPool2D(kernel_size=2, stride=2)
def forward(self, x): def forward(self, x):
...@@ -109,11 +127,10 @@ class _StemBlock(nn.Layer): ...@@ -109,11 +127,10 @@ class _StemBlock(nn.Layer):
class BasicConv2D(nn.Layer): class BasicConv2D(nn.Layer):
def __init__(self, in_channels, out_channels, activation=True, **kwargs): def __init__(self, in_channels, out_channels, activation=True, **kwargs):
super(BasicConv2D, self).__init__() super(BasicConv2D, self).__init__()
self.conv = nn.Conv2D(in_channels, out_channels, self.conv = nn.Conv2D(
bias_attr=False, **kwargs) in_channels, out_channels, bias_attr=False, **kwargs)
self.norm = nn.BatchNorm2D(out_channels) self.norm = nn.BatchNorm2D(out_channels)
self.activation = activation self.activation = activation
...@@ -141,15 +158,18 @@ class PeleeNetDY(nn.Layer): ...@@ -141,15 +158,18 @@ class PeleeNetDY(nn.Layer):
class_num (int) - number of classification classes class_num (int) - number of classification classes
""" """
def __init__(self, growth_rate=32, block_config=[3, 4, 8, 6], def __init__(self,
num_init_features=32, bottleneck_width=[1, 2, 4, 4], growth_rate=32,
drop_rate=0.05, class_num=1000): block_config=[3, 4, 8, 6],
num_init_features=32,
bottleneck_width=[1, 2, 4, 4],
drop_rate=0.05,
class_num=1000):
super(PeleeNetDY, self).__init__() super(PeleeNetDY, self).__init__()
self.features = nn.Sequential(*[ self.features = nn.Sequential(* [('stemblock', _StemBlock(
('stemblock', _StemBlock(3, num_init_features)), 3, num_init_features)), ])
])
if type(growth_rate) is list: if type(growth_rate) is list:
growth_rates = growth_rate growth_rates = growth_rate
...@@ -168,20 +188,31 @@ class PeleeNetDY(nn.Layer): ...@@ -168,20 +188,31 @@ class PeleeNetDY(nn.Layer):
# Each denseblock # Each denseblock
num_features = num_init_features num_features = num_init_features
for i, num_layers in enumerate(block_config): for i, num_layers in enumerate(block_config):
block = _DenseBlock(num_layers=num_layers, block = _DenseBlock(
num_input_features=num_features, num_layers=num_layers,
bn_size=bottleneck_widths[i], num_input_features=num_features,
growth_rate=growth_rates[i], bn_size=bottleneck_widths[i],
drop_rate=drop_rate) growth_rate=growth_rates[i],
drop_rate=drop_rate)
setattr(self.features, 'denseblock%d' % (i + 1), block) setattr(self.features, 'denseblock%d' % (i + 1), block)
num_features = num_features + num_layers * growth_rates[i] num_features = num_features + num_layers * growth_rates[i]
setattr(self.features, 'transition%d' % (i + 1), BasicConv2D( setattr(
num_features, num_features, kernel_size=1, stride=1, padding=0)) self.features,
'transition%d' % (i + 1),
BasicConv2D(
num_features,
num_features,
kernel_size=1,
stride=1,
padding=0))
if i != len(block_config) - 1: if i != len(block_config) - 1:
setattr(self.features, 'transition%d_pool' % setattr(
(i + 1), nn.AvgPool2D(kernel_size=2, stride=2)) self.features,
'transition%d_pool' % (i + 1),
nn.AvgPool2D(
kernel_size=2, stride=2))
num_features = num_features num_features = num_features
# Linear layer # Linear layer
...@@ -192,7 +223,8 @@ class PeleeNetDY(nn.Layer): ...@@ -192,7 +223,8 @@ class PeleeNetDY(nn.Layer):
def forward(self, x): def forward(self, x):
features = self.features(x) features = self.features(x)
out = F.avg_pool2d(features, kernel_size=features.shape[2:4]).flatten(1) out = F.avg_pool2d(
features, kernel_size=features.shape[2:4]).flatten(1)
if self.drop_rate > 0: if self.drop_rate > 0:
out = F.dropout(out, p=self.drop_rate, training=self.training) out = F.dropout(out, p=self.drop_rate, training=self.training)
out = self.classifier(out) out = self.classifier(out)
......
...@@ -24,7 +24,7 @@ from paddle.nn.initializer import TruncatedNormal, Constant ...@@ -24,7 +24,7 @@ from paddle.nn.initializer import TruncatedNormal, Constant
from .vision_transformer import trunc_normal_, zeros_, ones_, to_2tuple, DropPath, Identity, drop_path from .vision_transformer import trunc_normal_, zeros_, ones_, to_2tuple, DropPath, Identity, drop_path
from ppcls.utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url from ....utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url
MODEL_URLS = { MODEL_URLS = {
"PVT_V2_B0": "PVT_V2_B0":
......
...@@ -20,7 +20,7 @@ import paddle.nn as nn ...@@ -20,7 +20,7 @@ import paddle.nn as nn
from paddle.vision.models import resnet from paddle.vision.models import resnet
from ppcls.utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url from ....utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url
MODEL_URLS = { MODEL_URLS = {
"RedNet26": "RedNet26":
......
...@@ -29,7 +29,7 @@ from paddle.nn import AdaptiveAvgPool2D, MaxPool2D, AvgPool2D ...@@ -29,7 +29,7 @@ from paddle.nn import AdaptiveAvgPool2D, MaxPool2D, AvgPool2D
from paddle.nn.initializer import Uniform from paddle.nn.initializer import Uniform
import math import math
from ppcls.utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url from ....utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url
MODEL_URLS = { MODEL_URLS = {
"RegNetX_200MF": "RegNetX_200MF":
......
...@@ -19,7 +19,7 @@ import paddle.nn as nn ...@@ -19,7 +19,7 @@ import paddle.nn as nn
import paddle import paddle
import numpy as np import numpy as np
from ppcls.utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url from ....utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url
MODEL_URLS = { MODEL_URLS = {
"RepVGG_A0": "RepVGG_A0":
......
...@@ -29,7 +29,7 @@ from paddle.nn.initializer import Uniform ...@@ -29,7 +29,7 @@ from paddle.nn.initializer import Uniform
import math import math
from ppcls.utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url from ....utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url
MODEL_URLS = { MODEL_URLS = {
"Res2Net50_26w_4s": "Res2Net50_26w_4s":
......
...@@ -29,7 +29,7 @@ from paddle.nn.initializer import Uniform ...@@ -29,7 +29,7 @@ from paddle.nn.initializer import Uniform
import math import math
from ppcls.utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url from ....utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url
MODEL_URLS = { MODEL_URLS = {
"Res2Net50_vd_26w_4s": "Res2Net50_vd_26w_4s":
......
...@@ -30,7 +30,7 @@ from paddle.nn import Conv2D, BatchNorm, Linear, Dropout ...@@ -30,7 +30,7 @@ from paddle.nn import Conv2D, BatchNorm, Linear, Dropout
from paddle.nn import AdaptiveAvgPool2D, MaxPool2D, AvgPool2D from paddle.nn import AdaptiveAvgPool2D, MaxPool2D, AvgPool2D
from paddle.regularizer import L2Decay from paddle.regularizer import L2Decay
from ppcls.utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url from ....utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url
MODEL_URLS = { MODEL_URLS = {
"ResNeSt50_fast_1s1x64d": "ResNeSt50_fast_1s1x64d":
......
...@@ -29,7 +29,7 @@ from paddle.nn.initializer import Uniform ...@@ -29,7 +29,7 @@ from paddle.nn.initializer import Uniform
import math import math
from ppcls.utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url from ....utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url
MODEL_URLS = { MODEL_URLS = {
"ResNet50_vc": "ResNet50_vc":
......
...@@ -29,7 +29,7 @@ from paddle.nn.initializer import Uniform ...@@ -29,7 +29,7 @@ from paddle.nn.initializer import Uniform
import math import math
from ppcls.utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url from ....utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url
MODEL_URLS = { MODEL_URLS = {
"ResNeXt50_32x4d": "ResNeXt50_32x4d":
......
...@@ -22,7 +22,7 @@ from paddle.nn import Conv2D, BatchNorm, Linear, Dropout ...@@ -22,7 +22,7 @@ from paddle.nn import Conv2D, BatchNorm, Linear, Dropout
from paddle.nn import AdaptiveAvgPool2D, MaxPool2D, AvgPool2D from paddle.nn import AdaptiveAvgPool2D, MaxPool2D, AvgPool2D
from paddle.nn.initializer import Uniform from paddle.nn.initializer import Uniform
from ppcls.utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url from ....utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url
MODEL_URLS = { MODEL_URLS = {
"ResNeXt101_32x8d_wsl": "ResNeXt101_32x8d_wsl":
......
...@@ -29,7 +29,7 @@ from paddle.nn.initializer import Uniform ...@@ -29,7 +29,7 @@ from paddle.nn.initializer import Uniform
import math import math
from ppcls.utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url from ....utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url
MODEL_URLS = { MODEL_URLS = {
"ResNeXt50_vd_32x4d": "ResNeXt50_vd_32x4d":
......
...@@ -24,7 +24,7 @@ from paddle import ParamAttr ...@@ -24,7 +24,7 @@ from paddle import ParamAttr
import paddle.nn as nn import paddle.nn as nn
from math import ceil from math import ceil
from ppcls.utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url from ....utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url
MODEL_URLS = { MODEL_URLS = {
"ReXNet_1_0": "ReXNet_1_0":
......
...@@ -28,7 +28,7 @@ from paddle.nn.initializer import Uniform ...@@ -28,7 +28,7 @@ from paddle.nn.initializer import Uniform
import math import math
from ppcls.utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url from ....utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url
MODEL_URLS = { MODEL_URLS = {
"SE_ResNet18_vd": "SE_ResNet18_vd":
......
...@@ -29,7 +29,7 @@ from paddle.nn.initializer import Uniform ...@@ -29,7 +29,7 @@ from paddle.nn.initializer import Uniform
import math import math
from ppcls.utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url from ....utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url
MODEL_URLS = { MODEL_URLS = {
"SE_ResNeXt50_32x4d": "SE_ResNeXt50_32x4d":
......
...@@ -29,7 +29,7 @@ from paddle.nn.initializer import Uniform ...@@ -29,7 +29,7 @@ from paddle.nn.initializer import Uniform
import math import math
from ppcls.utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url from ....utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url
MODEL_URLS = { MODEL_URLS = {
"SE_ResNeXt50_vd_32x4d": "SE_ResNeXt50_vd_32x4d":
......
...@@ -24,7 +24,7 @@ from paddle.nn import Layer, Conv2D, MaxPool2D, AdaptiveAvgPool2D, BatchNorm, Li ...@@ -24,7 +24,7 @@ from paddle.nn import Layer, Conv2D, MaxPool2D, AdaptiveAvgPool2D, BatchNorm, Li
from paddle.nn.initializer import KaimingNormal from paddle.nn.initializer import KaimingNormal
from paddle.nn.functional import swish from paddle.nn.functional import swish
from ppcls.utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url from ....utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url
MODEL_URLS = { MODEL_URLS = {
"ShuffleNetV2_x0_25": "ShuffleNetV2_x0_25":
......
...@@ -21,7 +21,7 @@ import paddle.nn.functional as F ...@@ -21,7 +21,7 @@ import paddle.nn.functional as F
from paddle.nn import Conv2D, BatchNorm, Linear, Dropout from paddle.nn import Conv2D, BatchNorm, Linear, Dropout
from paddle.nn import AdaptiveAvgPool2D, MaxPool2D, AvgPool2D from paddle.nn import AdaptiveAvgPool2D, MaxPool2D, AvgPool2D
from ppcls.utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url from ....utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url
MODEL_URLS = { MODEL_URLS = {
"SqueezeNet1_0": "SqueezeNet1_0":
......
...@@ -23,8 +23,8 @@ import paddle.nn as nn ...@@ -23,8 +23,8 @@ import paddle.nn as nn
from paddle.nn.initializer import TruncatedNormal, Constant from paddle.nn.initializer import TruncatedNormal, Constant
from ppcls.arch.backbone.base.theseus_layer import Identity from ..base.theseus_layer import Identity
from ppcls.utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url from ....utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url
MODEL_URLS = { MODEL_URLS = {
"TNT_small": "TNT_small":
......
...@@ -21,7 +21,7 @@ import paddle ...@@ -21,7 +21,7 @@ import paddle
import paddle.nn as nn import paddle.nn as nn
from paddle.nn.initializer import TruncatedNormal, Constant from paddle.nn.initializer import TruncatedNormal, Constant
from ppcls.utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url from ....utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url
MODEL_URLS = { MODEL_URLS = {
"VAN_tiny": "", # TODO "VAN_tiny": "", # TODO
......
...@@ -22,7 +22,7 @@ import paddle ...@@ -22,7 +22,7 @@ import paddle
import paddle.nn as nn import paddle.nn as nn
from paddle.nn.initializer import TruncatedNormal, Constant, Normal from paddle.nn.initializer import TruncatedNormal, Constant, Normal
from ppcls.utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url from ....utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url
MODEL_URLS = { MODEL_URLS = {
"ViT_small_patch16_224": "ViT_small_patch16_224":
......
...@@ -24,7 +24,7 @@ from paddle.nn.initializer import Uniform ...@@ -24,7 +24,7 @@ from paddle.nn.initializer import Uniform
import math import math
import sys import sys
from ppcls.utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url from ....utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url
MODEL_URLS = { MODEL_URLS = {
"Xception41": "Xception41":
......
...@@ -21,7 +21,7 @@ import paddle.nn.functional as F ...@@ -21,7 +21,7 @@ import paddle.nn.functional as F
from paddle.nn import Conv2D, BatchNorm, Linear, Dropout from paddle.nn import Conv2D, BatchNorm, Linear, Dropout
from paddle.nn import AdaptiveAvgPool2D, MaxPool2D, AvgPool2D from paddle.nn import AdaptiveAvgPool2D, MaxPool2D, AvgPool2D
from ppcls.utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url from ....utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url
MODEL_URLS = { MODEL_URLS = {
"Xception41_deeplab": "Xception41_deeplab":
......
import paddle import paddle
from paddle.nn import Sigmoid from paddle.nn import Sigmoid
from paddle.nn import Tanh from paddle.nn import Tanh
from ppcls.arch.backbone.legendary_models.pp_lcnet import PPLCNet_x2_5 from ..legendary_models.pp_lcnet import PPLCNet_x2_5
__all__ = ["PPLCNet_x2_5_Tanh"] __all__ = ["PPLCNet_x2_5_Tanh"]
......
from paddle.nn import Conv2D from paddle.nn import Conv2D
from ppcls.arch.backbone.legendary_models.resnet import ResNet50, MODEL_URLS, _load_pretrained from ..legendary_models.resnet import ResNet50, MODEL_URLS, _load_pretrained
__all__ = ["ResNet50_last_stage_stride1"] __all__ = ["ResNet50_last_stage_stride1"]
......
import paddle import paddle
from paddle.nn import Sigmoid from paddle.nn import Sigmoid
from ppcls.arch.backbone.legendary_models.vgg import VGG19 from ..legendary_models.vgg import VGG19
__all__ = ["VGG19Sigmoid"] __all__ = ["VGG19Sigmoid"]
......
...@@ -17,7 +17,7 @@ from __future__ import absolute_import, division, print_function ...@@ -17,7 +17,7 @@ from __future__ import absolute_import, division, print_function
import paddle import paddle
import paddle.nn as nn import paddle.nn as nn
from ppcls.arch.utils import get_param_attr_dict from ..utils import get_param_attr_dict
class BNNeck(nn.Layer): class BNNeck(nn.Layer):
......
...@@ -19,7 +19,7 @@ from __future__ import print_function ...@@ -19,7 +19,7 @@ from __future__ import print_function
import paddle import paddle
import paddle.nn as nn import paddle.nn as nn
from ppcls.arch.utils import get_param_attr_dict from ..utils import get_param_attr_dict
class FC(nn.Layer): class FC(nn.Layer):
......
...@@ -12,5 +12,5 @@ ...@@ -12,5 +12,5 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
from ppcls.arch.slim.prune import prune_model from .prune import prune_model
from ppcls.arch.slim.quant import quantize_model from .quant import quantize_model
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
from __future__ import absolute_import, division, print_function from __future__ import absolute_import, division, print_function
import paddle import paddle
from ppcls.utils import logger from ...utils import logger
def prune_model(config, model): def prune_model(config, model):
...@@ -37,7 +37,6 @@ def prune_model(config, model): ...@@ -37,7 +37,6 @@ def prune_model(config, model):
model.pruner = None model.pruner = None
def _prune_model(config, model): def _prune_model(config, model):
from paddleslim.analysis import dygraph_flops as flops from paddleslim.analysis import dygraph_flops as flops
logger.info("FLOPs before pruning: {}GFLOPs".format( logger.info("FLOPs before pruning: {}GFLOPs".format(
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
from __future__ import absolute_import, division, print_function from __future__ import absolute_import, division, print_function
import paddle import paddle
from ppcls.utils import logger from ...utils import logger
QUANT_CONFIG = { QUANT_CONFIG = {
# weight preprocess type, default is None and no preprocessing is performed. # weight preprocess type, default is None and no preprocessing is performed.
......
...@@ -140,8 +140,7 @@ Infer: ...@@ -140,8 +140,7 @@ Infer:
order: '' order: ''
- ToCHWImage: - ToCHWImage:
PostProcess: PostProcess:
name: DistillationPostProcess name: Topk
func: Topk
topk: 5 topk: 5
class_id_map_file: "ppcls/utils/imagenet1k_label_list.txt" class_id_map_file: "ppcls/utils/imagenet1k_label_list.txt"
......
...@@ -153,8 +153,7 @@ Infer: ...@@ -153,8 +153,7 @@ Infer:
order: '' order: ''
- ToCHWImage: - ToCHWImage:
PostProcess: PostProcess:
name: DistillationPostProcess name: Topk
func: Topk
topk: 5 topk: 5
class_id_map_file: "ppcls/utils/imagenet1k_label_list.txt" class_id_map_file: "ppcls/utils/imagenet1k_label_list.txt"
......
...@@ -184,8 +184,7 @@ Infer: ...@@ -184,8 +184,7 @@ Infer:
order: '' order: ''
- ToCHWImage: - ToCHWImage:
PostProcess: PostProcess:
name: DistillationPostProcess name: Topk
func: Topk
topk: 5 topk: 5
class_id_map_file: "ppcls/utils/imagenet1k_label_list.txt" class_id_map_file: "ppcls/utils/imagenet1k_label_list.txt"
......
...@@ -139,8 +139,7 @@ Infer: ...@@ -139,8 +139,7 @@ Infer:
order: '' order: ''
- ToCHWImage: - ToCHWImage:
PostProcess: PostProcess:
name: DistillationPostProcess name: Topk
func: Topk
topk: 5 topk: 5
class_id_map_file: "ppcls/utils/imagenet1k_label_list.txt" class_id_map_file: "ppcls/utils/imagenet1k_label_list.txt"
......
...@@ -14,24 +14,27 @@ ...@@ -14,24 +14,27 @@
from __future__ import absolute_import from __future__ import absolute_import
from __future__ import division from __future__ import division
from collections import defaultdict
import numpy as np
import copy import copy
import random import random
from collections import defaultdict
import numpy as np
from paddle.io import DistributedBatchSampler, Sampler from paddle.io import DistributedBatchSampler, Sampler
class DistributedRandomIdentitySampler(DistributedBatchSampler): class DistributedRandomIdentitySampler(DistributedBatchSampler):
""" """Randomly sample N identities, then for each identity,
Randomly sample N identities, then for each identity, randomly sample K instances, therefore batch size equals to N * K.
randomly sample K instances, therefore batch size is N*K.
Args: Args:
- data_source (list): list of (img_path, pid, camid). dataset(Dataset): Dataset which contains list of (img_path, pid, camid))
- num_instances (int): number of instances per identity in a batch. batch_size (int): batch size
- batch_size (int): number of examples in a batch. num_instances (int): number of instance(s) within an class
drop_last (bool): whether to discard the data at the end
""" """
def __init__(self, dataset, batch_size, num_instances, drop_last, **args): def __init__(self, dataset, batch_size, num_instances, drop_last, **args):
assert batch_size % num_instances == 0, \
f"batch_size({batch_size}) must be divisible by num_instances({num_instances}) when using DistributedRandomIdentitySampler"
self.dataset = dataset self.dataset = dataset
self.batch_size = batch_size self.batch_size = batch_size
self.num_instances = num_instances self.num_instances = num_instances
......
...@@ -14,27 +14,27 @@ ...@@ -14,27 +14,27 @@
from __future__ import absolute_import from __future__ import absolute_import
from __future__ import division from __future__ import division
from collections import defaultdict from collections import defaultdict
import numpy as np import numpy as np
import random
from paddle.io import DistributedBatchSampler from paddle.io import DistributedBatchSampler
from ppcls.utils import logger from ppcls.utils import logger
class PKSampler(DistributedBatchSampler): class PKSampler(DistributedBatchSampler):
""" """First, randomly sample P identities.
First, randomly sample P identities. Then for each identity randomly sample K instances.
Then for each identity randomly sample K instances. Therefore batch size equals to P * K, and the sampler called PKSampler.
Therefore batch size is P*K, and the sampler called PKSampler.
Args: Args:
dataset (paddle.io.Dataset): list of (img_path, pid, cam_id). dataset (Dataset): Dataset which contains list of (img_path, pid, camid))
sample_per_id(int): number of instances per identity in a batch. batch_size (int): batch size
batch_size (int): number of examples in a batch. sample_per_id (int): number of instance(s) within an class
shuffle(bool): whether to shuffle indices order before generating shuffle (bool, optional): _description_. Defaults to True.
batch indices. Default False. drop_last (bool, optional): whether to discard the data at the end. Defaults to True.
sample_method (str, optional): sample method when generating prob_list. Defaults to "sample_avg_prob".
""" """
def __init__(self, def __init__(self,
dataset, dataset,
batch_size, batch_size,
...@@ -42,10 +42,9 @@ class PKSampler(DistributedBatchSampler): ...@@ -42,10 +42,9 @@ class PKSampler(DistributedBatchSampler):
shuffle=True, shuffle=True,
drop_last=True, drop_last=True,
sample_method="sample_avg_prob"): sample_method="sample_avg_prob"):
super().__init__( super().__init__(dataset, batch_size, shuffle=shuffle, drop_last=drop_last)
dataset, batch_size, shuffle=shuffle, drop_last=drop_last)
assert batch_size % sample_per_id == 0, \ assert batch_size % sample_per_id == 0, \
"PKSampler configs error, Sample_per_id must be a divisor of batch_size." f"PKSampler configs error, sample_per_id({sample_per_id}) must be a divisor of batch_size({batch_size})."
assert hasattr(self.dataset, assert hasattr(self.dataset,
"labels"), "Dataset must have labels attribute." "labels"), "Dataset must have labels attribute."
self.sample_per_label = sample_per_id self.sample_per_label = sample_per_id
......
...@@ -22,10 +22,8 @@ import sys ...@@ -22,10 +22,8 @@ import sys
import paddle import paddle
from paddle import is_compiled_with_cuda from paddle import is_compiled_with_cuda
from ppcls.arch import get_architectures from ..arch.utils import get_architectures, similar_architectures, get_blacklist_model_in_static_mode
from ppcls.arch import similar_architectures from . import logger
from ppcls.arch import get_blacklist_model_in_static_mode
from ppcls.utils import logger
def check_version(): def check_version():
......
...@@ -16,8 +16,9 @@ import os ...@@ -16,8 +16,9 @@ import os
import copy import copy
import argparse import argparse
import yaml import yaml
from ppcls.utils import logger from . import logger
from ppcls.utils import check from . import check
__all__ = ['get_config'] __all__ = ['get_config']
......
...@@ -28,7 +28,7 @@ import time ...@@ -28,7 +28,7 @@ import time
from collections import OrderedDict from collections import OrderedDict
from tqdm import tqdm from tqdm import tqdm
from ppcls.utils import logger from . import logger
__all__ = ['get_weights_path_from_url'] __all__ = ['get_weights_path_from_url']
......
...@@ -20,12 +20,12 @@ import sys ...@@ -20,12 +20,12 @@ import sys
__dir__ = os.path.dirname(os.path.abspath(__file__)) __dir__ = os.path.dirname(os.path.abspath(__file__))
sys.path.append(os.path.abspath(os.path.join(__dir__, '../../'))) sys.path.append(os.path.abspath(os.path.join(__dir__, '../../')))
from ppcls.arch import build_model from ..arch import build_model
from ppcls.utils.config import parse_config, parse_args from .config import parse_config, parse_args
from ppcls.utils.save_load import load_dygraph_pretrain from .save_load import load_dygraph_pretrain
from ppcls.utils.logger import init_logger from .logger import init_logger
from ppcls.data import create_operators from ..data import create_operators
from ppcls.arch.slim import quantize_model from ..arch.slim import quantize_model
class GalleryLayer(paddle.nn.Layer): class GalleryLayer(paddle.nn.Layer):
......
...@@ -23,8 +23,8 @@ import tarfile ...@@ -23,8 +23,8 @@ import tarfile
import tqdm import tqdm
import zipfile import zipfile
from ppcls.arch import similar_architectures from ..arch.utils import similar_architectures
from ppcls.utils import logger from . import logger
__all__ = ['get'] __all__ = ['get']
......
...@@ -20,7 +20,7 @@ import errno ...@@ -20,7 +20,7 @@ import errno
import os import os
import paddle import paddle
from ppcls.utils import logger from . import logger
from .download import get_weights_path_from_url from .download import get_weights_path_from_url
__all__ = ['init_model', 'save_model', 'load_dygraph_pretrain'] __all__ = ['init_model', 'save_model', 'load_dygraph_pretrain']
......
...@@ -33,7 +33,7 @@ setup( ...@@ -33,7 +33,7 @@ setup(
package_dir={'paddleclas': ''}, package_dir={'paddleclas': ''},
include_package_data=True, include_package_data=True,
entry_points={ entry_points={
"console_scripts": ["paddleclas= paddleclas.paddleclas:main"] "console_scripts": ["paddleclas=paddleclas.paddleclas:main"]
}, },
version='0.0.0', version='0.0.0',
install_requires=requirements, install_requires=requirements,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册