YOLOv5(You Only Look Once Version 5)是一个实时目标检测算法,用于检测、识别和分类图像中的物体。封装YOLOv5为EXE文件可以让用户在没有安装Python环境的情况下,轻松地在Windows操作系统上直接运行目标检测程序。
下面是关于如何封装YOLOv5成EXE文件的详细介绍和步骤:
1. 安装必要的环境:
安装Python环境,下载并安装Anaconda(一个包含Python和众多工具包的发行版本),并设置合适的环境变量。
2. 安装YOLOv5:
在GitHub上克隆YOLOv5的源代码:https://github.com/ultralytics/yolov5
在克隆的YOLOv5文件夹中,通过命令提示符运行以下命令安装所需的依赖库:
```
pip install -r requirements.txt
```
3. 安装PyInstaller:
PyInstaller是一个第三方库,用于生成针对特定平台(如Windows、Mac、Linux)的独立可执行文件。通过以下命令安装PyInstaller:
```
pip install pyinstaller
```
4. 编写YOLOv5目标检测脚本:
在PyCharm或其他集成开发环境(IDE)中创建一个Python文件(如detect.py),编写目标检测的相关代码。以下是一个简单的示例,请根据实际需求进行修改:
```python
import sys
import torch
from pathlib import Path
sys.path.append(str(Path(__file__).resolve().parents[1] / 'yolov5'))
from models.experimental import attempt_load
from utils.augmentations import letterbox
from utils.general import check_img_size, non_max_suppression, scale_coords
from utils.plots import plot_one_box
from utils.torch_utils import select_device
def run_yolov5_detect():
img_path = 'path/to/your/image' # 图片路径
model_path = 'path/to/your/model.pt' # 模型路径
conf_thres = 0.25
img_size = 640
device = select_device('0')
model = attempt_load(model_path, map_location=device)
img = cv2.imread(img_path)
img = letterbox(img, img_size, auto=True, scaleFill=True)[0]
img = img[:, :, ::-1].transpose(2, 0, 1) # BGR to RGB
img = np.ascontiguousarray(img)
img = torch.from_numpy(img).to(device)
img = img.half() # 注意在推理时减小内存
img /= 255.0 # 图像正则化,0-255转0-1
if img.ndimension() == 3:
img = img.unsqueeze(0)
model.eval()
with torch.no_grad():
# 前向传递
pred = model(img)[0]
# 应用NMS
pred = non_max_suppression(pred, conf_thres)
for det in pred:
if len(det):
det[:, :4] = scale_coords(img.shape[2:], det[:, :4], img_copy.shape).round()
for c in det[:, -1].unique():
n = (det[:, -1] == c).sum()
s += f', {n} {names[int(c)]}'
for *xyxy, conf, cls in reversed(det):
label = f'{names[int(cls)]} {conf:.2f}'
plot_one_box(xyxy, img_copy, label=label, color=colors[int(cls)], line_thickness=3)
cv2.imshow('result', img_copy)
cv2.waitKey(0)
if __name__ == '__main__':
run_yolov5_detect()
```
5. 使用PyInstaller生成EXE文件:
在命令提示符中,转到要生成EXE文件的Python脚本文件(detect.py)所在文件夹,并运行以下命令:
```
pyinstaller --onefile --noconsole detect.py
```
“--onefile”表示合并到单个EXE文件,“--noconsole”表示生成没有命令行窗口的应用程序。
等待生成过程完成,您将在当前文件夹的“dist”子文件夹中找到生成的EXE文件。
6. 运行生成的EXE文件:
将所需的YOLOv5模型.weights文件(如best.weights)和待检测图像一并复制到EXE文件所在文件夹,然后双击运行EXE文件,您将看到目标检测的结果图像。