飞桨的FastDeploy是一款易用高效的推理部署开发套件。覆盖业界热门AI模型并提供开箱即用的部署体验,包括图像分类、目标检测、图像分割、人脸检测、人脸识别、人体关键点识别、文字识别、语义理解等多任务,满足开发者多场景,多硬件、多平台的产业部署需求。
FastDeploy目前版为0.3.0,关于FastDeploy如何使用,可以参看前期的文章或官网(https://github.com/PaddlePaddle/FastDeploy)。
- 141.人工智能——FastDeploy:PPYOLOE模型部署,实现目标检测
- 142.人工智能——PySide6+FastDeploy实现可视化图像分类预测
本文的打包项目是:基于FastDeploy的可视化推理预测系统。主要记录一下打包过程遇到的一些问题。
界面一
打包工具:pyinstaller 5.3
运行环境:python 3.9.13 + fastdeploy-python 0.3.0+PySide6 6.3.2
打包之前,程序运行正常。
问题一:打包exe文件,程序能启动,但目标检测无法正常运行。提示:plugins.xml:1:0: File was not found。
通过分析查找,发现打包后缺少文件:"C:\Program Files\Python39\Lib\site-packages\fastdeploy\libs\third_libs\openvino\runtime\bin\plugins.xml" 。发现问题就好解决,加入文件即可。
问题二:加入plugins.xml文件,又出现新的问题:RuntimeError: [ NETWORK_NOT_READ ] Unable to read the model: models\det-model\picodet\model.pdmodel Please check that model format: pdmodel is supported and the model is correct. Available frontends:
经过分析查找:发现缺少两个文件,其实就是openvino运行库文件。
- "C:\Program Files\Python39\Lib\site-packages\fastdeploy\libs\third_libs\openvino\runtime\bin\openvino_intel_cpu_plugin.dll"
- "C:\Program Files\Python39\Lib\site-packages\fastdeploy\libs\third_libs\openvino\runtime\bin\openvino_paddle_frontend.dll"
问题三:打包文件减掉不必要的运行库。修改spec文件:
excludes=['llvmlite','matplotlib','pandas','PIL','pyarrow','PyQt5','scipy']
把openvino运行库目录,复制到项目目录中:C:\Program Files\Python39\Lib\site-packages\fastdeploy\libs\third_libs\openvino\runtime\bin
最后修改.spec文件,内容如下:
# -*- mode: python ; coding: utf-8 -*-
block_cipher = None
a = Analysis(['visiondeploy.py'],
pathex=[],
binaries=[],
datas=[
("bin\openvino_intel_cpu_plugin.dll","."),
("bin\openvino_paddle_frontend.dll","."),
("bin\plugins.xml",".")
],
hiddenimports=[],
hookspath=[],
hooksconfig={},
runtime_hooks=[],
excludes=['llvmlite','matplotlib','pandas','PIL','pyarrow','PyQt5','scipy'],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False)
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
[],
name='visiondeploy',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
upx_exclude=[],
runtime_tmpdir=None,
console=False,
disable_windowed_traceback=False,
target_arch=None,
codesign_identity=None,
entitlements_file=None , icon='logo.ico')
运行打包命令:生成独立可执行文件即可
>VisionDeploy>pyinstaller visiondeploy-F.spec
打包中
打包成功查看运行包大小:168MB,还是可以接受的。
打包结果
目标检测:
目标检测结果
说明:关于Python项目打包出现的问题,很多情况就是打包后缺少文件,因为pyinstaller 没有分析提取到这些依赖文件,通过修改spec文件增加文件就可以。