在wsl ubuntu下安装,训练,验证,导出,部署YOLO的完整例子

在WSL Ubuntu下使用Conda搭建YOLO开发环境并完成一个完整的训练和部署流程是个不错的实践。虽然搜索结果中的信息提供了一个在Ubuntu下安装Miniconda、配置conda环境,安装PyTorch,安装YOLO等相关库的基本步骤,但为了给你一个更清晰、可靠的指南,我将结合更通用的方法,为你梳理一个详细的步骤和完整示例。

🔧 环境搭建

  1. **安装 Miniconda**

在WSL Ubuntu终端中执行以下命令来安装Miniconda(一个轻量级的Conda发行版):

```bash

wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh

bash Miniconda3-latest-Linux-x86_64.sh -b

~/miniconda3/bin/conda init bash

source ~/.bashrc

```

安装完成后,重启终端或运行 `source ~/.bashrc` 来激活conda。

  1. **创建并激活Conda环境**

创建一个独立的虚拟环境可以避免包版本冲突。

```bash

conda create -n yolo_env python=3.9 -y

conda activate yolo_env

```

激活后,终端提示符前会显示 `(yolo_env)`。

  1. **安装 PyTorch 和 Torchvision**

你需要根据你的CUDA版本安装对应的PyTorch。访问 [PyTorch官网](https://pytorch.org/get-started/locally/) 获取最适合你环境的安装命令。

  • **如果你有NVIDIA GPU并已配置好CUDA**(在WSL终端输入 `nvidia-smi` 可查看CUDA版本),可以安装支持GPU的PyTorch,例如对于CUDA 12.1:

```bash

pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121

```

  • **如果你没有GPU或使用CPU**,安装CPU版本的PyTorch即可:

```bash

conda install pytorch torchvision torchaudio cpuonly -c pytorch

```

**验证PyTorch安装**:在激活的 `yolo_env` 环境中启动Python,运行以下代码进行验证:

```python

import torch

print(torch.version) # 打印PyTorch版本

print(torch.cuda.is_available()) # 如果输出True,则表示GPU版本的PyTorch可用;如果输出False,则不可用

```

  1. **安装 YOLOv8 及相关库**

这里我们以Ultralytics的YOLOv8为例,它封装得很好,易于使用。

```bash

pip install ultralytics

```

这个命令会自动安装YOLO运行所需的所有依赖,如 `opencv-python`, `numpy`, `pillow` 等。

基本验证:安装完成后,可以尝试导入YOLO来验证:

```python

from ultralytics import YOLO

print("YOLO库安装成功!")

```

🚀 完整项目示例:训练一个目标检测模型

这里我们以一个简单的例子,使用YOLOv8在公开的COCO128数据集上训练一个目标检测模型。

  1. **准备数据集**

YOLOv8内置了对COCO128数据集的支持,它会自动下载。

如果你想使用自己的数据,需要将数据组织成YOLO格式( images 、 labels目录,以及train.txt、val.txt等描述文件)。

  1. **训练模型**

创建一个Python脚本(例如 `train.py`),内容如下:

```python

from ultralytics import YOLO

加载一个预训练模型,这里选择中等大小的yolov8m模型

model = YOLO('yolov8m.pt')

训练模型

results = model.train(

data='coco128.yaml', # 数据集配置文件,YOLOv8会自动处理COCO128

epochs=50, # 训练轮数,根据你的需求调整

imgsz=640, # 输入图像大小

batch=16, # 批次大小,根据你的GPU内存调整。如果内存不足,减小这个值

device='cuda', # 使用GPU训练,如果是CPU,则设置为 device='cpu'

workers=4, # 数据加载的线程数

lr0=0.01, # 初始学习率

lrf=0.01, # 最终学习率系数 (lr0 * lrf)

momentum=0.937, # 动量

weight_decay=0.0005, # 权重衰减

save_period=10 # 每10个epoch保存一次检查点

)

```

在终端运行这个脚本:

```bash

python train.py

```

训练过程中,模型权重和日志会默认保存在 `runs/detect/train/` 目录下。

  1. **评估模型**

训练结束后,你可以使用验证集评估模型性能。创建一个 `eval.py` 脚本:

```python

from ultralytics import YOLO

加载训练好的最佳模型 (通常保存在 runs/detect/train/weights/best.pt)

model = YOLO('runs/detect/train/weights/best.pt')

在验证集上评估模型

metrics = model.val() # 默认会使用训练时 data 参数对应的验证集

print(f"mAP50-95: {metrics.box.map}")

print(f"mAP50: {metrics.box.map50}")

```

  1. **使用模型进行预测**

使用训练好的模型对图像或视频进行预测。创建一个 `predict.py` 脚本:

```python

from ultralytics import YOLO

import cv2

加载训练好的最佳模型

model = YOLO('runs/detect/train/weights/best.pt')

预测单张图片

results = model('path/to/your/image.jpg', save=True) # `save=True` 会保存带检测框的图片

预测视频

results = model('path/to/your/video.mp4', save=True)

也可以使用摄像头实时预测 (0 通常代表默认摄像头)

cap = cv2.VideoCapture(0)

while cap.isOpened():

ret, frame = cap.read()

if not ret:

break

results = model(frame, verbose=False) # verbose=False 减少输出

annotated_frame = results[0].plot()

cv2.imshow('YOLO Detection', annotated_frame)

if cv2.waitKey(1) & 0xFF == ord('q'):

break

cap.release()

cv2.destroyAllWindows()

```

预测结果默认会保存在 `runs/detect/predict/` 目录下。

  1. **模型导出(为部署准备)**

为了将模型部署到生产环境,你通常需要将其导出为更高效的格式,如ONNX或TensorRT。

```python

from ultralytics import YOLO

model = YOLO('runs/detect/train/weights/best.pt')

导出模型为 ONNX 格式

success = model.export(format='onnx') # 导出后的模型默认保存在同一目录下

```

导出的ONNX模型可以被许多推理引擎(如ONNX Runtime)加载和使用。

💡 改善模型的思路

  • **数据层面**:确保你的数据集质量高、标注准确。如果数据量小,可以考虑使用**数据增强**(YOLO训练时默认会开启一些数据增强,你也可以在 `model.train()` 中通过 `augment=True` 参数开启或自定义)。

  • **超参数调优**:调整学习率(`lr0`)、批次大小(`batch`)、优化器等超参数。YOLOv8的 `model.train()` 方法提供了很多可调参数。

  • **更换模型**:YOLOv8提供了从n到x不同尺寸的模型(如 `yolov8n.pt`, `yolov8s.pt`, `yolov8m.pt`, `yolov8l.pt`, `yolov8x.pt`)。模型越大通常精度越高,但速度越慢。你可以根据你的精度和速度需求选择合适的模型。

  • **更长的训练时间**:适当增加训练轮数(`epochs`)。

⚠️ 注意事项

  • **版本兼容性**:PyTorch、CUDA(如果使用GPU)、Conda环境下的Python包之间可能存在版本依赖问题,务必确保它们兼容。遇到问题时,查看官方文档通常是首选。

  • **WSL2下的GPU支持**:确保你的Windows系统已安装适配WSL的NVIDIA显卡驱动,并在WSL2中能够正确识别GPU(通过 `nvidia-smi` 命令验证)。

  • **性能**:WSL2的I/O性能可能低于原生Linux,将项目文件放在WSL文件系统内(如 `~/project`)通常比在 `/mnt/c/`(Windows盘符)访问更快。

希望这个详细的指南能帮助你在WSL Ubuntu下顺利搭建YOLO开发环境并完成训练和部署。如果你在具体操作过程中遇到问题,比如CUDA版本匹配或者依赖包安装出错,可以随时提问。

相关推荐
paopao_wu1 天前
目标检测YOLO[03]:推理入门
人工智能·yolo·目标检测
深度学习lover2 天前
<项目代码>yolo遥感航拍船舶识别<目标检测>
人工智能·python·yolo·目标检测·计算机视觉·遥感船舶识别
Coovally AI模型快速验证2 天前
基于SimCLR的自监督 YOLO:YOLOv5/8也能在低标注场景目标检测性能飙升
人工智能·科技·yolo·目标检测·机器学习·计算机视觉
hans汉斯2 天前
基于改进YOLOv11n的无人机红外目标检测算法
大数据·数据库·人工智能·算法·yolo·目标检测·无人机
AI即插即用2 天前
即插即用系列 | 2024 SOTA LAM-YOLO : 无人机小目标检测模型
pytorch·深度学习·yolo·目标检测·计算机视觉·视觉检测·无人机
是店小二呀2 天前
openGauss进阶:使用DBeaver可视化管理与实战
开发语言·人工智能·yolo
paopao_wu3 天前
目标检测YOLO[02]:YOLOv8 环境安装-Ubuntu
yolo·目标检测·ubuntu
AutumnorLiuu3 天前
【红外小目标检测实战】Yolov11加入SPDConv,HDC,ART等模块
人工智能·yolo·目标检测
二川bro3 天前
基于PyTorch的视觉检测2025:YOLO实战与优化
pytorch·yolo·视觉检测