yolov10打包为exe

一、前言

本节实验将官方yolov10推理程序打包为exe运行

二、代码

首先下载官方代码至本机,并使用conda创建虚拟环境,并安装好yolov10所需库

bash 复制代码
conda create --prefix   E:/pyenv/myYolo10  python=3.8
pip install -r requirements.txt

下载官方模型权重 yolov10m.pt ,并在根目录下创建推理代码

python 复制代码
# -*- coding: utf-8 -*-
"""
Created on Fri Feb  2 15:50:32 2024

@author: WIN10

detect.py

"""

import time , cv2
import multiprocessing
from ultralytics import YOLOv10

model_path =  "./yolov10m.pt"

if __name__ == '__main__':
    multiprocessing.freeze_support()
    model = YOLOv10( model_path )

    cv_img = cv2.imread(  "./demo.png" )

    results = model.predict(   #初始化第一次比较慢。需要2秒多,后续较快
         source= cv_img ,  
         conf = 0.2 ,
        imgsz=640 ,
         show = True
    )
  
    cv2.waitKey()
    cv2.destroyAllWindows()

确认创建环境无误,运行可得到显示结果

三、打包步骤

接下来将该代码打包为exe,

(1)代码禁用多进程,在main下方加上一句multiprocessing.freeze_support()

python 复制代码
if __name__ == '__main__':
    multiprocessing.freeze_support()

(2)将根目录下的ultralytics/utils/init.py 的 238 行 if判断改为

python 复制代码
if WINDOWS and sys.stdout and sys.stdout.encoding != "utf-8":

(3)安装pyinstall ,并执行打包指令

python 复制代码
pip install pyinstaller 

pyinstaller打包指令不要用 -F ,-F是打包为一整个exe,容易出现问题,使用以下指令

bash 复制代码
pyinstaller  detect.py --noconsole -p 'E:\pyenv\myYolo10\Lib\site-packages'  -p   'E:\pyenv\myYolo10\Lib\site-packages\torch\lib'    --hidden-import torchvision

(4)关闭防火墙

打包过程,可能会被防火墙拦截,报病毒错误

关闭防火墙

统统关掉,重新执行指令

四、结果

打包将在dist文件夹下生成exe,以及相应独立包文件,运行exe

将 模型文件和图片拷贝至和detect.exe同一目录

运行若提示错误 无default.yaml ,如:

python 复制代码
File "ultralytics\utils\__init__.py", line 363, in yaml_load
FileNotFoundError: [Errno 2] No such file or directory: 'E:\\py_test\\yolov10\\dist\\detect\\_internal\\ultralytics\\cfg\\default.yaml'

将根目录下的ultralytics文件夹,复制拷贝到打包生成的_internal 文件夹中去,再次双击运行detect.exe,可成功运行