paddleocr修改默认模型路径方法,兼顾pyinstaller打包后使用

为什么要修改默认模型路径?

因为打包后别人首次使用是需要下载模型的,默认的下载路径为用户目录,及C:\Users\***,并且不支持中文路径,所以部分用户系统用户名携带中文就不能正常使用打包后的程序。

步骤:

1.先是构建ocr对象时传入自定义的模型路径,如以下其中的rec_model_dir,我自己是使用的项目目录路径./,后续路径建议保持一致,即:.paddleocr/whl/……,因为要区分几个模型的路径,所以使用源码的路径,仅仅改变.paddleocr部分前的路径能避免其他地方导致的路径问题

ocr = PaddleOCR(use_angle_cls=True, lang='ch', show_log=False, det_model_dir=r"./.paddleocr/whl\det\ch\ch_PP-OCRv4_det_infer", cls_model_dir=r"./.paddleocr/whl\cls\ch_ppocr_mobile_v2.0_cls_infer", rec_model_dir=r"./.paddleocr/whl\rec\ch\ch_PP-OCRv4_rec_infer")

2.然后需要修改paddleocr的源码,在pycharm项目全局查找def maybe_download方法,定位在方法首行加入以下代码,其中判断表达式中的路径更改为自己系统的用户目录,赋值路径与构建的ocr对象的路径保持一致

    if model_storage_directory == r"C:\Users\2826509434/.paddleocr/whl\det\ch\ch_PP-OCRv4_det_infer":
        model_storage_directory = r"./.paddleocr/whl\det\ch\ch_PP-OCRv4_det_infer"
    elif model_storage_directory == r"C:\Users\2826509434/.paddleocr/whl\rec\ch\ch_PP-OCRv4_rec_infer":
        model_storage_directory = r"./.paddleocr/whl\rec\ch\ch_PP-OCRv4_rec_infer"
    elif model_storage_directory == r"C:\Users\2826509434/.paddleocr/whl\cls\ch_ppocr_mobile_v2.0_cls_infer":
        model_storage_directory = r"./.paddleocr/whl\cls\ch_ppocr_mobile_v2.0_cls_infer"

随后用pyinstaller打包时不要使用-f打包成一个exe,因为pyinstaller打包后并没有应用修改后的源码(不清楚是不是只有我会这样,网上查找资料也无果),所以需要额外在打包后的目录中找到对应的文件源码再次完成第二点的修改,这里如果打包为单独一个exe就不能修改打包后的源码了。

自此完成默认路径修改,打包给别人使用,模型路径会下载到自定义的目录,而不会是系统用户目录,并且也可以规避系统用户名携带中文的兼容性问题。只需要让用户不要将程序放在带中文路径的目录即可

在深度学习领域,迁移学习是提高模型训练效率和性能的重要手段。PaddleX库作为一个高效简洁的开发套件,为使用PaddlePaddle框架的开发者提供了易于操作的API来实现迁移学习。通过PaddleX,开发者可以轻松地加载和使用预训练模型,来加速和优化自己的深度学习任务。 参考资源链接:[PaddleX 2.0.0rc3版本Python库发布,助力深度学习开发](https://wenku.csdn.net/doc/69wwv2e79t?spm=1055.2569.3001.10343) 首先,确保你已经安装了PaddleX库,可以通过以下命令快速安装: ```bash pip install paddlex-2.0.0rc3-py3-none-any.whl ``` 然后,使用PaddleX加载预训练模型的代码示例如下: ```python import paddlex as PaddleX # 加载预训练模型,这里以图像分类的预训练模型为例 model = PaddleX/deploy.models.Classification( pretrained_model='ResNet50_vd_stdc1(pretrained=True)') ``` 在上述代码中,我们导入了paddlex模块,并通过`deploy.models.Classification`类加载了一个名为`ResNet50_vd_stdc1`的预训练模型。参数`pretrained=True`表示加载的是预训练模型。 接下来,为了使预训练模型适应新的数据集,我们需要对其进行微调。这通常涉及到对模型的最后几层进行替换,并在新的数据集上进行训练。PaddleX提供了简单的方法修改模型的分类层,以适应新的数据集类别数。例如,如果你的目标数据集有10个类别,可以这样做: ```python # 假设新的数据集类别数为10 model.change_category(new_category=10) ``` 现在模型已经准备好了,我们可以通过以下代码进行模型的训练: ```python # 开始训练模型 model.train( train_dataset='path/to/your/train/dataset', val_dataset='path/to/your/val/dataset', epochs=10, learning_rate=0.001, batch_size=32) ``` 在`train`方法中,需要传入训练集和验证集的路径,以及其他训练参数,如训练轮次(epochs)、学习率(learning_rate)和批大小(batch_size)。 通过以上步骤,你可以利用PaddleX和预训练模型快速实现迁移学习,并提升深度学习模型的性能。如果你希望进一步探索PaddleX的其他功能或者想要了解如何部署训练好的模型,可以参考《PaddleX 2.0.0rc3版本Python库发布,助力深度学习开发》这一资源,它提供了对PaddleX的全面介绍和更多实际案例,帮助开发者深入理解和掌握PaddleX的使用方法。 参考资源链接:[PaddleX 2.0.0rc3版本Python库发布,助力深度学习开发](https://wenku.csdn.net/doc/69wwv2e79t?spm=1055.2569.3001.10343)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值