| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 |
- import paddlex
- import paddlehub as hub
- import os
- import os.path as osp
- image_pretrain = {
- 'ResNet18':
- 'https://paddle-imagenet-models-name.bj.bcebos.com/ResNet18_pretrained.tar',
- 'ResNet34':
- 'https://paddle-imagenet-models-name.bj.bcebos.com/ResNet34_pretrained.tar',
- 'ResNet50':
- 'http://paddle-imagenet-models-name.bj.bcebos.com/ResNet50_pretrained.tar',
- 'ResNet101':
- 'http://paddle-imagenet-models-name.bj.bcebos.com/ResNet101_pretrained.tar',
- 'ResNet50_vd':
- 'https://paddle-imagenet-models-name.bj.bcebos.com/ResNet50_vd_pretrained.tar',
- 'ResNet101_vd':
- 'https://paddle-imagenet-models-name.bj.bcebos.com/ResNet101_vd_pretrained.tar',
- 'ResNet50_vd_ssld':
- 'https://paddle-imagenet-models-name.bj.bcebos.com/ResNet50_vd_ssld_pretrained.tar',
- 'ResNet101_vd_ssld':
- 'https://paddle-imagenet-models-name.bj.bcebos.com/ResNet101_vd_ssld_pretrained.tar',
- 'MobileNetV1':
- 'http://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV1_pretrained.tar',
- 'MobileNetV2_x1.0':
- 'https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV2_pretrained.tar',
- 'MobileNetV2_x0.5':
- 'https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV2_x0_5_pretrained.tar',
- 'MobileNetV2_x2.0':
- 'https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV2_x2_0_pretrained.tar',
- 'MobileNetV2_x0.25':
- 'https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV2_x0_25_pretrained.tar',
- 'MobileNetV2_x1.5':
- 'https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV2_x1_5_pretrained.tar',
- 'MobileNetV3_small':
- 'https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV3_small_x1_0_pretrained.tar',
- 'MobileNetV3_large':
- 'https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV3_large_x1_0_pretrained.tar',
- 'MobileNetV3_small_x1_0_ssld':
- 'https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV3_small_x1_0_ssld_pretrained.tar',
- 'MobileNetV3_large_x1_0_ssld':
- 'https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV3_large_x1_0_ssld_pretrained.tar',
- 'DarkNet53':
- 'https://paddle-imagenet-models-name.bj.bcebos.com/DarkNet53_ImageNet1k_pretrained.tar',
- 'DenseNet121':
- 'https://paddle-imagenet-models-name.bj.bcebos.com/DenseNet121_pretrained.tar',
- 'DenseNet161':
- 'https://paddle-imagenet-models-name.bj.bcebos.com/DenseNet161_pretrained.tar',
- 'DenseNet201':
- 'https://paddle-imagenet-models-name.bj.bcebos.com/DenseNet201_pretrained.tar',
- 'DetResNet50':
- 'https://paddle-imagenet-models-name.bj.bcebos.com/ResNet50_cos_pretrained.tar',
- 'SegXception41':
- 'https://paddle-imagenet-models-name.bj.bcebos.com/Xception41_deeplab_pretrained.tar',
- 'SegXception65':
- 'https://paddle-imagenet-models-name.bj.bcebos.com/Xception65_deeplab_pretrained.tar',
- 'ShuffleNetV2':
- 'https://paddle-imagenet-models-name.bj.bcebos.com/ShuffleNetV2_pretrained.tar',
- }
- coco_pretrain = {
- 'UNet': 'https://paddleseg.bj.bcebos.com/models/unet_coco_v3.tgz'
- }
- def get_pretrain_weights(flag, model_type, backbone, save_dir):
- if flag is None:
- return None
- elif osp.isdir(flag):
- return flag
- elif flag == 'IMAGENET':
- new_save_dir = save_dir
- if hasattr(paddlex, 'pretrain_dir'):
- new_save_dir = paddlex.pretrain_dir
- if backbone.startswith('Xception'):
- backbone = 'Seg{}'.format(backbone)
- elif backbone == 'MobileNetV2':
- backbone = 'MobileNetV2_x1.0'
- elif backbone == 'MobileNetV3_small_ssld':
- backbone = 'MobileNetV3_small_x1_0_ssld'
- elif backbone == 'MobileNetV3_large_ssld':
- backbone = 'MobileNetV3_large_x1_0_ssld'
- if model_type == 'detector':
- if backbone == 'ResNet50':
- backbone = 'DetResNet50'
- assert backbone in image_pretrain, "There is not ImageNet pretrain weights for {}, you may try COCO.".format(
- 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
- 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)
- 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)."
- )
|