天天看点

156.人工智能——PySide6+FastDeploy项目打包问题处理

飞桨的FastDeploy是一款易用高效的推理部署开发套件。覆盖业界热门AI模型并提供开箱即用的部署体验,包括图像分类、目标检测、图像分割、人脸检测、人脸识别、人体关键点识别、文字识别、语义理解等多任务,满足开发者多场景,多硬件、多平台的产业部署需求。

FastDeploy目前版为0.3.0,关于FastDeploy如何使用,可以参看前期的文章或官网(https://github.com/PaddlePaddle/FastDeploy)。

  • 141.人工智能——FastDeploy:PPYOLOE模型部署,实现目标检测
  • 142.人工智能——PySide6+FastDeploy实现可视化图像分类预测

本文的打包项目是:基于FastDeploy的可视化推理预测系统。主要记录一下打包过程遇到的一些问题。

156.人工智能——PySide6+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。

156.人工智能——PySide6+FastDeploy项目打包问题处理

通过分析查找,发现打包后缺少文件:"C:\Program Files\Python39\Lib\site-packages\fastdeploy\libs\third_libs\openvino\runtime\bin\plugins.xml" 。发现问题就好解决,加入文件即可。

156.人工智能——PySide6+FastDeploy项目打包问题处理

问题二:加入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:

156.人工智能——PySide6+FastDeploy项目打包问题处理

经过分析查找:发现缺少两个文件,其实就是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"
156.人工智能——PySide6+FastDeploy项目打包问题处理

问题三:打包文件减掉不必要的运行库。修改spec文件:

excludes=['llvmlite','matplotlib','pandas','PIL','pyarrow','PyQt5','scipy']

把openvino运行库目录,复制到项目目录中:C:\Program Files\Python39\Lib\site-packages\fastdeploy\libs\third_libs\openvino\runtime\bin

156.人工智能——PySide6+FastDeploy项目打包问题处理

最后修改.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

156.人工智能——PySide6+FastDeploy项目打包问题处理

打包中

打包成功查看运行包大小:168MB,还是可以接受的。

156.人工智能——PySide6+FastDeploy项目打包问题处理

打包结果

目标检测:

156.人工智能——PySide6+FastDeploy项目打包问题处理

目标检测结果

说明:关于Python项目打包出现的问题,很多情况就是打包后缺少文件,因为pyinstaller 没有分析提取到这些依赖文件,通过修改spec文件增加文件就可以。

继续阅读