一、前言
本节实验将官方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,可成功运行