YOLO v8 python Tk GUI程序打包‘套娃’后续

2 篇文章 0 订阅
1 篇文章 0 订阅
文章讲述了作者在将Yolov8模型部署到GUI应用时遇到的程序重复启动问题,分析了多进程导致的套娃现象,并提供了通过`freeze_support()`函数解决此问题的方法。
摘要由CSDN通过智能技术生成

事情是这样的,在去年的时候第一次接触yolo v8,尝试着做出了自己的数据集和模型,但是当我把模型部署到我的gui应用上面的时候出现了一个非常离谱的问题:当我使用识别功能的时候我的开始程序竟然再次被运行了,当我在新打开的程序里面去进行识别的时候离谱的情况再次发生,竟然又又又打开了一个新的程序,当我关闭新打开的程序之后,识别功能才正常运行,于是乎我向广大网友求助,却一直没有结果,随着项目的搁置渐渐被遗忘了,直到最近,我在使用python多进程的时候再次遇到了这个问题.

简单分析一下:首先程序是以进程为单位的,通常一个程序为一个进程,但是有多个线程去处理不同的任务,但是有时候单个进程并不能满足需求,这时候不得不创建多进程,多进程的程序再被打包后,会出现类似于循环导入的情况,进程a为主进程进程b为子进程,当使用进程b的时候,因为进程b依赖于进程a所有会再次启动进程a,这样就出现了套娃的现象。

解决方法如下:

from multiprocessing import freeze_support  # 从multiprocessing 导入freeze_support


def main():
    pass  # 此处省略,替换成你的主程序


if __name__ == "__main__":
    freeze_support()
    main()


在程序入口出执行freeze_support()就可以完美解决多进程打包后异常套娃问题了

同理yolo v8模型识别应该也是打开了一个新的进程进行识别的,所以在打包过程中会出现套娃问题,加上freeze_support()就可以完美解决

PyInstaller是一个用于将Python程序打包可执行文件的工具。而YO(You Only Look Once)是一种目检测算法,用于实时物体检测。 要使用Installer打包YOLO,可以按照以下步骤进行操作: 1. 首先,确保已经安装了PyInstaller。可以使用以下命令进行安装: ``` pip install pyinstaller ``` 2. 然后,将YOLO的源代码和相关文件放置在一个目录中。 3. 在该目录下,创建一个名为`spec`的文件夹,并在其中创建一个名为`yolo.spec`的文件。 4. 打开`yolo.spec`文件,并添加以下内容: ``` # -*- mode: python ; coding: utf-8 -*- block_cipher = None a = Analysis(['yolo.py'], pathex=['path/to/yolo_directory'], binaries=[], datas=[], hiddenimports=[], hookspath=[], runtime_hooks=[], excludes=[], 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, exclude_binaries=True, name='yolo', debug=False, bootloader_ignore_signals=False, strip=False, upx=True, console=True ) coll = COLLECT(exe, a.binaries, a.zipfiles, a.datas, strip=False, upx=True, upx_exclude=[], name='yolo') ``` 注意将`path/to/yolo_directory`替换为YOLO源代码和相关文件所在的路径。 5. 保存并关闭`yolo.spec`文件。 6. 在命令行中,切换到YOLO所在的目录,并执行以下命令: ``` pyinstaller yolo.spec ``` 这将使用PyInstaller根据`yolo.spec`文件中的配置打包YOLO。 7. 打包后,在`dist`目录下会生一个可执行文件,即已经打包好的YOLO应用程序。 希望以上步骤对您有所帮助!
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值