当前位置: 首页 > news >正文

YOLOv8自定义目标检测模型训练与应用指南

一、引言
目标检测技术概述及其在实际应用中的重要性

YOLOv8模型简介及其优势

本文主要内容与目标:从数据准备到模型训练再到实际应用的全流程指南

二、环境准备与工具安装

  1. Python环境配置(建议3.8+版本)
  2. Ultralytics YOLOv8库安装
  3. 可选:GPU环境配置(CUDA和cuDNN)
  4. 辅助工具推荐:标注工具、数据预处理工具

三、数据集构建与准备
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)

七、图片标注工具请看我另外一篇文章
在这里插入图片描述

http://www.dtcms.com/a/366528.html

相关文章:

  • 揭秘23种设计模式的艺术与技巧之结构型
  • Git常用命令大全:高效开发必备
  • Flowable——流程定义与部署(RepositoryService)
  • 【IO进程 共享内存、信号量集】
  • IBM穿孔卡片:现代计算技术的奠基之作
  • 技术视界 | 跨域机器人通信与智能系统:打破壁垒的开源探索
  • 【Python】pyinstaller:打包工具
  • Mac 使用 softhsm
  • 一文搞懂保险中的Nominee\Beneficiary\Trustee三个角色
  • 无线路由器:从家庭上网到智慧互联的核心设备
  • 文件传输工具rsync|rust开发环境安装|Ascend实验相关命令
  • 51单片机-按键、蜂鸣器、定时器模块及中断
  • Python学习3.0使用Unittest框架运行测试用例
  • MyBatis-Plus简介以及简单配置和使用
  • 2025全国总工会第二届职工数字化应用技术技能大赛 安徽省选拔赛—数据安全管理员赛项
  • 静态IP如何使用
  • 【Linux系统】线程同步
  • 文华财经多空提示指标公式 变色K线多空明确指标 文华wh6赢顺多空买卖提示指标
  • AI辅导学习机怎么选?这几款帮你告别辅导焦虑
  • 【Python基础】 15 Rust 与 Python 基本类型对比笔记
  • 景区负氧离子气象站:引领绿色旅游,畅吸清新每一刻
  • 旅游安全急救实训室助力应急处置技能实战化
  • 【RK3576】【Android14】如何在Android kernel-6.1 的版本中添加一个ko驱动并编译出来?
  • 学习日记-SpringMVC-day49-9.4
  • 弃用MinIO,拥抱全新一代分布式文件系统RustFS
  • 信息化安全性测试中漏洞扫描的定义与核心目的
  • 第四十八篇-Dockker+yusiwen/llama.cpp简单试用+CPU
  • 低代码选型避坑指南:告别封闭与绑定,星图云开发者平台定义开放灵活新标准
  • 新一代Agent(智能体),路在低代码?
  • 十四、STM32-----低功耗