YOLOv8自定义目标检测模型训练与应用指南
一、引言
目标检测技术概述及其在实际应用中的重要性
YOLOv8模型简介及其优势
本文主要内容与目标:从数据准备到模型训练再到实际应用的全流程指南
二、环境准备与工具安装
- Python环境配置(建议3.8+版本)
- Ultralytics YOLOv8库安装
- 可选:GPU环境配置(CUDA和cuDNN)
- 辅助工具推荐:标注工具、数据预处理工具
三、数据集构建与准备
3.1 目录结构设计
face_train/
├── images/
│ ├── train/
│ └── val/
└── labels/
│ ├── train/
│ └── val/
└── xun.py
└── data.yaml
3.2 准备训练图片和标注
- 图片要求:包含检测目标的图片,格式为jpg或png
- 数量建议:每个类别至少100-200张图片,场景越多越好
- 标注工具:推荐使用LabelImg、CVAT等标注工具
- 标注格式:YOLO格式的txt文件,内容为
类别下标 中心点x比例 中心点y比例 宽度比例 高度比例
四、数据集配置文件
创建data.yaml配置文件:
path: D:\code\python\study\yolov\face_train
train: images/train
val: images/val
nc: 4
names: ['八戒', '悟空', '白骨精', '唐僧']
五、模型训练代码
import os
os.environ['ULTRALYTICS_NO_DOWNLOADS'] = '1'from ultralytics import YOLO# 验证数据集
print("验证数据集...")
from ultralytics.data.utils import check_det_dataset
try:check_det_dataset('data.yaml')print("数据集验证通过!")
except Exception as e:print(f"数据集错误:{e}")exit()# 训练配置
model = YOLO('yolov8n.pt')
model.train(data='data.yaml',epochs=500,imgsz=640,batch=32,device='cpu',workers=0,exist_ok=True
)
五、模型训练过程
best
六、检测已训练的模型识别精确度
#检测模型结果
from ultralytics import YOLO
# 模型训练完毕自动保存到:runs\detectitrainweights
#best.pt 是训练好的最优模型(适用于最终应用)
# last.pt 是训练的最后一轮模型(适用于训练继续)
#加载自己训练好的模型
model = YOLO(r'D:\code\python\study\yolov\face_train\runs\detect\train\weights\best.pt')
# 目标检测(图片检测)
results = model.predict(source=r'D:\code\python\study\yolov\textData\22.jpg',show=True, # 实时显示检测结果save=True, # 保存检测结果conf=0.5 # 置信度阈值
)print("检测完成!结果已保存到 runs/detect/predict/")
# 检测模型结果 - 终极优化版
# from ultralytics import YOLO # 修正大小写
# import matplotlib.pyplot as plt
# import cv2
# import os# # === 1. 中文显示解决方案 ===
# plt.rcParams['font.sans-serif'] = ['SimHei'] # Windows系统字体
# plt.rcParams['axes.unicode_minus'] = False# # === 2. 加载训练好的模型 ===
# model_path = r'D:\code\python\study\yolov\face_train\runs\detect\train\weights\best.pt'
# model = YOLO(model_path) # 加载最佳模型# # === 3. 通用检测函数 ===
# def run_detection(source, is_video=False):
# """执行检测并保存结果# Args:
# source: 文件路径或摄像头ID(0为默认摄像头)
# is_video: 是否为视频/摄像头输入
# """
# # 检测参数配置
# results = model.predict(
# source=source,
# show=True, # 实时显示
# save=True, # 保存结果
# save_txt=True, # 保存标签文件
# save_conf=True, # 保存置信度
# conf=0.5, # 置信度阈值
# imgsz=640, # 推理尺寸
# device='cpu', # 使用GPU可改为0
# line_width=1, # 框线粗细
# show_labels=True, # 显示标签
# show_conf=True # 显示置信度
# )# # 自定义结果保存路径
# output_dir = 'runs/detect/predict_enhanced'
# os.makedirs(output_dir, exist_ok=True)# # 处理结果
# for i, r in enumerate(results):
# # 保存带检测框的媒体文件
# if is_video:
# output_path = os.path.join(output_dir, f'result_{i}.mp4')
# r.save(filename=output_path)
# else:
# output_path = os.path.join(output_dir, f'result_{i}.jpg')
# cv2.imwrite(output_path, r.plot(line_width=1)) # 使用OpenCV保存# print(f'结果已保存至: {output_path}')# # === 4. 执行检测 ===
# if __name__ == '__main__':
# # 视频检测(参数改为你的视频路径)
# run_detection(r'D:\code\python\study\yolov\测试训练模型数据\b9f954683bfe91470d129a118ee62efa.jpg', is_video=True)# # 图片检测(示例,可改为你的图片路径)
# # run_detection('test.jpg')# # 摄像头实时检测(参数0表示默认摄像头)
# # run_detection(0, is_video=True)
七、图片标注工具请看我另外一篇文章