一、创建 Python 虚拟环境
# 更新软件包列表,确保你获取到最新版本的可用软件包
sudo apt update
# 安装用于创建 Python 3.10 虚拟环境(venv)的相关软件包
sudo apt install python3.10-venv -y
或
sudo apt install python3.12-venv -y
# 使用 Python 3 创建一个名为 "yolov8_env" 的虚拟环境
python3 -m venv yolov8_env
# 激活名为 "yolov8_env" 的虚拟环境,以便开始使用它
source yolov8_env/bin/activate
#查看python版本
python3 --version
二、安装必要依赖
# 安装 Python 的包管理工具 pip
sudo apt install -y python3-pip
# 升级 pip 到最新版本
pip install --upgrade pip
# 检查当前安装的 pip 版本
pip3 --version
三、 安装 YOLOv8 和 PyTorch(CPU 版)
# 安装 ultralytics 和 torch、torchvision 库(指定使用 CPU 版本的 PyTorch)
pip install ultralytics torch torchvision --index-url https://download.pytorch.org/whl/cpu
# 重新安装 torch 和 torchvision 库,确保它们已安装并且是 CPU 版本
pip install torch torchvision --index-url https://download.pytorch.org/whl/cpu
# 单独安装 ultralytics 库
pip install ultralytics
# 使用 pip 列出已安装的 ultralytics 库,并检查其版本
pip list | grep ultralytics
# 使用 Python 检查 YOLOv8 是否成功安装
python -c "from ultralytics import YOLO; print('YOLOv8 安装成功')"
四、准备数据集
# 创建用于存放训练和验证数据的目录结构
mkdir -p datasets/images/train datasets/images/val datasets/labels/train datasets/labels/val
# 递归地列出 datasets 目录下的所有文件和子目录
ls -R datasets
# 显示 datasets 目录下的文件和文件夹结构,以树形图的方式展示
tree
datasets/
├── images/
│ ├── train/
│ └── val/
└── labels/
├── train/
└── val/
#根目录创建1个文件夹(可自定义名称)
#下面创建再2个文件夹(images和labels)
# images和labels 下再分别创建2个文件夹(train和val)
# 井timages下的train和val 放入训练图片(png、jpg)# labels下的train和val 放入图片标注(txt)
#准备yaml文件
(yolov8_env) [root@adminis 16:52:08]# cat coco.yaml
path: ./datasets #数据集根目录
train: images/train #训练图片路径
val: images/val #验证集图片路径
nc: 3 #类别数量
names: ['张飞','关羽','刘备'] #类别名称
五、开始训练模型
yolov8_env) [root@adminis 16:49:34]# cat 1.py
from ultralytics import YOLO
import matplotlib.pyplot as plt
import os
# 强制设置字体(避免中文乱码)
plt.rcParams['font.family'] = 'WenQuanYi Zen Hei'
plt.rcParams['axes.unicode_minus'] = False # 解决负号显示问题
# 训练配置
model = YOLO('yolov8n.yaml') # 使用模型定义文件
results = model.train(
data='coco.yaml',
epochs=200,
imgsz=640,
batch=8, # CPU训练建议减小batch
device='cpu',
workers=4, # 根据CPU核心数调整
cache=True # 启用数据缓存加速
)
# 训练结果可视化
plt.figure(figsize=(10, 6))
plt.text(0.5, 0.5, "YOLOv8 训练完成",
ha='center',
fontsize=20,
fontweight='bold')
plt.axis('off')
plt.savefig('result.png', dpi=300, bbox_inches='tight')
print(f"训练完成!结果保存在: {os.path.abspath('result.png')}")
六、加载训练好的模型
yolov8_env) [root@adminis 16:52:14]# cat 2.py
from ultralytics import YOLO
import os
# 加载训练好的模型(使用绝对路径)
model = YOLO('/root/YOLOV8/runs/detect/train/weights/best.pt')
# 目标检测
results = model.predict(
source='/root/YOLOV8/三国1.wmv', # 视频路径
show=True, # 实时显示检测结果
save=True, # 保存检测结果
conf=0.5, # 置信度阈值
save_txt=True, # 保存标签文件
save_conf=True, # 在标签中保存置信度
project='/root/YOLOV8/runs/detect', # 结果保存目录
name='predict' # 结果子目录名称
)
print(f"检测完成!结果保存在: {results[0].save_dir}")
#模型训练完毕自动保存到:\runs\detect\train2\weights
#best.pt 是训练好的最优模型(适用于最终应用)
#last.pt 是训练的最后一轮模型(适用于训练继续)
注意训练模型必须进入虚拟环境
#进入虚拟环境命令
source yolov8_env/bin/activate