diff --git a/docs/apis/models.md b/docs/apis/models.md index e0a3547ea194cb4ca155fc3be60004a7452e1f6c..5aacec8c2fd1b29495abb382ab2618f204833d8d 100644 --- a/docs/apis/models.md +++ b/docs/apis/models.md @@ -182,7 +182,7 @@ paddlex.det.FasterRCNN(num_classes=81, backbone='ResNet50', with_fpn=True, aspec **参数:** > - **num_classes** (int): 包含了背景类的类别数。默认为81。 -> - **backbone** (str): FasterRCNN的backbone网络,取值范围为['ResNet18', 'ResNet50', 'ResNet50vd', 'ResNet101', 'ResNet101vd']。默认为'ResNet50'。 +> - **backbone** (str): FasterRCNN的backbone网络,取值范围为['ResNet18', 'ResNet50', 'ResNet50_vd', 'ResNet101', 'ResNet101_vd']。默认为'ResNet50'。 > - **with_fpn** (bool): 是否使用FPN结构。默认为True。 > - **aspect_ratios** (list): 生成anchor高宽比的可选值。默认为[0.5, 1.0, 2.0]。 > - **anchor_sizes** (list): 生成anchor大小的可选值。默认为[32, 64, 128, 256, 512]。 @@ -262,7 +262,7 @@ paddlex.det.MaskRCNN(num_classes=81, backbone='ResNet50', with_fpn=True, aspect_ **参数:** > - **num_classes** (int): 包含了背景类的类别数。默认为81。 -> - **backbone** (str): MaskRCNN的backbone网络,取值范围为['ResNet18', 'ResNet50', 'ResNet50vd', 'ResNet101', 'ResNet101vd']。默认为'ResNet50'。 +> - **backbone** (str): MaskRCNN的backbone网络,取值范围为['ResNet18', 'ResNet50', 'ResNet50_vd', 'ResNet101', 'ResNet101_vd']。默认为'ResNet50'。 > - **with_fpn** (bool): 是否使用FPN结构。默认为True。 > - **aspect_ratios** (list): 生成anchor高宽比的可选值。默认为[0.5, 1.0, 2.0]。 > - **anchor_sizes** (list): 生成anchor大小的可选值。默认为[32, 64, 128, 256, 512]。 diff --git a/paddlex/__init__.py b/paddlex/__init__.py index 918976a59c4fffda1bce071ffa12a03d0d7cb9b7..1cb2ce7d74be60c79798a4be1276a5227dea3d05 100644 --- a/paddlex/__init__.py +++ b/paddlex/__init__.py @@ -38,10 +38,9 @@ except: "[WARNING] pycocotools install: https://github.com/PaddlePaddle/PaddleX/blob/develop/docs/install.md" ) -import paddlehub as hub -if hub.version.hub_version < '1.6.2': - raise Exception("[ERROR] paddlehub >= 1.6.2 is required") - +#import paddlehub as hub +#if hub.version.hub_version < '1.6.2': +# raise Exception("[ERROR] paddlehub >= 1.6.2 is required") env_info = get_environ_info() load_model = cv.models.load_model diff --git a/paddlex/cv/models/base.py b/paddlex/cv/models/base.py index 234193e73d530c734dd3b71bdf74e7536d455a9a..3107d5fa0ea3ecf3f654d3798f9ecb9a20f7b655 100644 --- a/paddlex/cv/models/base.py +++ b/paddlex/cv/models/base.py @@ -204,13 +204,23 @@ class BaseAPI: self.exe, self.train_prog, pretrain_weights, fuse_bn) # 进行裁剪 if sensitivities_file is not None: + import paddleslim from .slim.prune_config import get_sensitivities sensitivities_file = get_sensitivities(sensitivities_file, self, save_dir) from .slim.prune import get_params_ratios, prune_program + logging.info( + "Start to prune program with eval_metric_loss = {}".format( + eval_metric_loss)) + origin_flops = paddleslim.analysis.flops(self.test_prog) prune_params_ratios = get_params_ratios( sensitivities_file, eval_metric_loss=eval_metric_loss) prune_program(self, prune_params_ratios) + current_flops = paddleslim.analysis.flops(self.test_prog) + remaining_ratio = current_flops / origin_flops + logging.info( + "Finish prune program, before FLOPs:{}, after prune FLOPs:{}, remaining ratio:{}" + .format(origin_flops, current_flops, remaining_ratio)) self.status = 'Prune' def get_model_info(self): diff --git a/paddlex/cv/models/slim/prune_config.py b/paddlex/cv/models/slim/prune_config.py index 7eab6b7defce11f874e95b910f2287d6a17faec7..34675a53b8bda539f3aa5cfc0adf374f449df303 100644 --- a/paddlex/cv/models/slim/prune_config.py +++ b/paddlex/cv/models/slim/prune_config.py @@ -15,7 +15,7 @@ import numpy as np import os.path as osp import paddle.fluid as fluid -import paddlehub as hub +#import paddlehub as hub import paddlex sensitivities_data = { @@ -105,22 +105,26 @@ def get_sensitivities(flag, model, save_dir): model_type) url = sensitivities_data[model_type] fname = osp.split(url)[-1] - try: - hub.download(fname, save_path=save_dir) - except Exception as e: - if isinstance(e, hub.ResourceNotFoundError): - raise Exception( - "Resource for model {}(key='{}') not found".format( - model_type, fname)) - elif isinstance(e, hub.ServerConnectionError): - raise Exception( - "Cannot get reource for model {}(key='{}'), please check your internet connecgtion" - .format(model_type, fname)) - else: - raise Exception( - "Unexpected error, please make sure paddlehub >= 1.6.2 {}". - format(str(e))) + paddlex.utils.download(url, path=save_dir) return osp.join(save_dir, fname) + + +# try: +# hub.download(fname, save_path=save_dir) +# except Exception as e: +# if isinstance(e, hub.ResourceNotFoundError): +# raise Exception( +# "Resource for model {}(key='{}') not found".format( +# model_type, fname)) +# elif isinstance(e, hub.ServerConnectionError): +# raise Exception( +# "Cannot get reource for model {}(key='{}'), please check your internet connecgtion" +# .format(model_type, fname)) +# else: +# raise Exception( +# "Unexpected error, please make sure paddlehub >= 1.6.2 {}". +# format(str(e))) +# return osp.join(save_dir, fname) else: raise Exception( "sensitivities need to be defined as directory path or `DEFAULT`(download sensitivities automatically)." diff --git a/paddlex/cv/models/utils/pretrain_weights.py b/paddlex/cv/models/utils/pretrain_weights.py index fb4d72ea007912093ac97c137b26fa0d592c789f..3f41838b7d3e1529558ced1db23e84292bdd5270 100644 --- a/paddlex/cv/models/utils/pretrain_weights.py +++ b/paddlex/cv/models/utils/pretrain_weights.py @@ -1,5 +1,5 @@ import paddlex -import paddlehub as hub +#import paddlehub as hub import os import os.path as osp @@ -85,40 +85,53 @@ def get_pretrain_weights(flag, model_type, backbone, save_dir): backbone = 'DetResNet50' assert backbone in image_pretrain, "There is not ImageNet pretrain weights for {}, you may try COCO.".format( backbone) - try: - hub.download(backbone, save_path=new_save_dir) - except Exception as e: - if isinstance(e, hub.ResourceNotFoundError): - raise Exception( - "Resource for backbone {} not found".format(backbone)) - elif isinstance(e, hub.ServerConnectionError): - raise Exception( - "Cannot get reource for backbone {}, please check your internet connecgtion" - .format(backbone)) - else: - raise Exception( - "Unexpected error, please make sure paddlehub >= 1.6.2") - return osp.join(new_save_dir, backbone) + url = image_pretrain[backbone] + fname = osp.split(url)[-1].split('.')[0] + paddlex.utils.download_and_decompress(url, path=new_save_dir) + return osp.join(new_save_dir, fname) +# try: +# hub.download(backbone, save_path=new_save_dir) +# except Exception as e: +# if isinstance(e, hub.ResourceNotFoundError): +# raise Exception( +# "Resource for backbone {} not found".format(backbone)) +# elif isinstance(e, hub.ServerConnectionError): +# raise Exception( +# "Cannot get reource for backbone {}, please check your internet connecgtion" +# .format(backbone)) +# else: +# raise Exception( +# "Unexpected error, please make sure paddlehub >= 1.6.2") +# return osp.join(new_save_dir, backbone) elif flag == 'COCO': new_save_dir = save_dir if hasattr(paddlex, 'pretrain_dir'): new_save_dir = paddlex.pretrain_dir - assert backbone in coco_pretrain, "There is not COCO pretrain weights for {}, you may try ImageNet.".format( - backbone) - try: - hub.download(backbone, save_path=new_save_dir) - except Exception as e: - if isinstance(hub.ResourceNotFoundError): - raise Exception( - "Resource for backbone {} not found".format(backbone)) - elif isinstance(hub.ServerConnectionError): - raise Exception( - "Cannot get reource for backbone {}, please check your internet connecgtion" - .format(backbone)) - else: - raise Exception( - "Unexpected error, please make sure paddlehub >= 1.6.2") - return osp.join(new_save_dir, backbone) + url = coco_pretrain[backbone] + fname = osp.split(url)[-1].split('.')[0] + paddlex.utils.download_and_decompress(url, path=new_save_dir) + return osp.join(new_save_dir, fname) + + +# new_save_dir = save_dir +# if hasattr(paddlex, 'pretrain_dir'): +# new_save_dir = paddlex.pretrain_dir +# assert backbone in coco_pretrain, "There is not COCO pretrain weights for {}, you may try ImageNet.".format( +# backbone) +# try: +# hub.download(backbone, save_path=new_save_dir) +# except Exception as e: +# if isinstance(hub.ResourceNotFoundError): +# raise Exception( +# "Resource for backbone {} not found".format(backbone)) +# elif isinstance(hub.ServerConnectionError): +# raise Exception( +# "Cannot get reource for backbone {}, please check your internet connecgtion" +# .format(backbone)) +# else: +# raise Exception( +# "Unexpected error, please make sure paddlehub >= 1.6.2") +# return osp.join(new_save_dir, backbone) else: raise Exception( "pretrain_weights need to be defined as directory path or `IMAGENET` or 'COCO' (download pretrain weights automatically)." diff --git a/setup.py b/setup.py index 99b91b86b1442a23515bfc93c326ec1498d67e27..086671efe906e86602bfcfd2793f89d52d3b353f 100644 --- a/setup.py +++ b/setup.py @@ -29,9 +29,8 @@ setuptools.setup( packages=setuptools.find_packages(), setup_requires=['cython', 'numpy', 'sklearn'], install_requires=[ - "pycocotools;platform_system!='Windows'", - 'pyyaml', 'colorama', 'tqdm', 'visualdl==1.3.0', - 'paddleslim==1.0.1', 'paddlehub>=1.6.2' + "pycocotools;platform_system!='Windows'", 'pyyaml', 'colorama', 'tqdm', + 'visualdl==1.3.0', 'paddleslim==1.0.1' ], classifiers=[ "Programming Language :: Python :: 3",