飛槳的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檔案增加檔案就可以。