PaddleHub 请问如何将安装模型转换为model.pdparams或者__model__这样的单个文件?

643ylb08  于 4个月前  发布在  其他
关注(0)|答案(6)|浏览(61)

我使用以下命令安装了模型:

hub install deeplabv3p_xception65_humanseg==1.1.1

安装了模型后,发现在/home/aistudio/.paddlehub/modules/deeplabv3p_xception65_humanseg/deeplabv3p_xception65_humanseg_model目录下有一堆小文件。请问能否将这些小文件合并成一个单独的模型文件,例如model.pdparams或者__model__这样的单个文件?
谢谢!

3pmvbmvn

3pmvbmvn1#

deeplabv3p_xception65_humanseg_model 是一个静态图的模型,可以先将模型加载进 model 后再从 model 利用 fluid.io.save_inference_model 保存下来。可以参考 https://github.com/PaddlePaddle/PaddleHub/blob/release/v1.8/hub_module/modules/image/humanseg/humanseg_lite/module.py 中的保存模型方式实现您的功能:

def save_inference_model(self,
                             dirname='humanseg_lite_model',
                             model_filename=None,
                             params_filename=None,
                             combined=True):
        if combined:
            model_filename = "__model__" if not model_filename else model_filename
            params_filename = "__params__" if not params_filename else params_filename
        place = fluid.CPUPlace()
        exe = fluid.Executor(place)

        program, feeded_var_names, target_vars = fluid.io.load_inference_model(
            dirname=self.default_pretrained_model_path,
            model_filename=model_filename,
            params_filename=params_filename,
            executor=exe)

        fluid.io.save_inference_model(
            dirname=dirname,
            main_program=program,
            executor=exe,
            feeded_var_names=feeded_var_names,
            target_vars=target_vars,
            model_filename=model_filename,
            params_filename=params_filename)
1rhkuytd

1rhkuytd2#

收到,谢谢!我想finetune deeplabv3p_xception65_humanseg这个模型,请问把它变成单个文件后能finetune吗?

33qvvth1

33qvvth13#

我看到一些文档说,使用save_inference_model生成的模型不能进行微调(finetune)。

im9ewurl

im9ewurl4#

本模型不提供finetune能力,外部开发者自主接入finetune能力会有一定的困难。你可以尝试利用PaddlePaddle重新编写训练和测试过程,使用DeepLabV3P_Xception65_HumanSeg这个模型及其参数。关于PaddleHub能为您提供的参考,请参见您提出的另一个问题:#1188

webghufk

webghufk5#

好的,感谢。对于一个Paddle新手来说,这确实有些困难。

huus2vyu

huus2vyu6#

在#1188中,我借用了HumanSegServer的finetune代码,因为HumanSegServer和deeplabv3p_xception65_humanseg的模型结构是相同的,这样做不行吗?

相关问题