01、yolov8合集1

新专栏包含:基础 + 后续的优化技巧

一、环境配置

1.前置环境安装---miniconda

打开网址https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/:

然后选择py38 或者py10的windows版本(根据自己的电脑类型选择)

双击打开下载好的 exe文件,注意下面两点

• 如果C盘有空间,最好安装在C盘,且安装目录中不要有中文

• 勾选将其添加到PATH

把下面的两个选项勾选上

2、conda环境创建

• 命令:conda create -n yolov8 python=3.8 -y

• 明确指定版本,否则可能会因版本过高导致有包装不上

3、pypi配置国内源

• 清华源:https://mirrors.tuna.tsinghua.edu.cn/help/pypi/

配置全局默认源:参考官网的指引,把下面的命令输入到命令行即可

python 复制代码
pip config set global.index-url https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple

二、前置环境安装---pytorch

• pytorch安装

• 官方地址:https://pytorch.org/

• 在一个单独的环境中,能使用 pip 就尽量使用pip,实在有问题的情况,例如没有合适的编译好的系统版本的安装包,再使用conda进行安装,不要来回混淆

注意:

• CUDA是否要安装

• 如果只需要训练、简单推理,则无需单独安装CUDA,直接安装pytorch;如果有部署需求,例如导出TensorRT模型,则需要进行CUDA安装

• Pytorch安装注意事项

• 16XX的显卡,安装cu102的版本,否则可能训练出现问题

• 30XX、40XX显卡,要安装cu111以上的版本,否则无法运行

三、ultralytics(YOLOv8)安装

• 直接使用源码(不是很推荐,无法使用命令行工具)

https://github.com/ultralytics/ultralytics

• pip直接安装(官方推荐,个人不是很推荐)

python 复制代码
 pip install ultralytics 

pip源码安装(个人推荐)

https://github.com/ultralytics/ultralytics && unzip ultralytics-main.zip && cd ultralytics-main 直接克隆包

python 复制代码
pip install -e . 

(-e参数必须要有,否则后续修改代码无效)

输入 pip list,这样的好处就是直接把源码放在了桌面上。如果自己修改源码,看源码就可以直接生效

可以直接修改源码

四、模型预测的基本使用

1. 预测的方式:命令行方式(CLI)
vbscript 复制代码
yolo task=detect mode=predict model=./yolov8n.pt source="./ultralytics/assets/bus.jpg"
2.Python API 方式(推荐)
python 复制代码
from ultralytics import YOLO

yolo = YOLO("./yolov8n.pt", task="detect") #detect表示检测任务,非必写
result = yolo(source="./ultralytics/assets/bus.jpg",save = True)

source里面的source可以改成视频或者自己的显示器

python 复制代码
result = yolo(source="./XXX.mp4") # 视频
result = yolo(source="screen") # 屏幕
result = yolo(source=0) # 打开摄像头

YOLO类的配置的参数在这个 yolo/cfg/default.yaml文件里面

|----------------|------------|-------|--------------------------------------|----------------|
| 参数 | 类型 | 默认值 | 含义 | 使用场景 |
| source | str / list | 必填 | 输入源路径,可以是单张图片、文件夹、视频文件或摄像头 | 所有预测任务必须指定 |
| show | bool | FALSE | 是否实时显示结果(需 GUI 支持) | 调试时查看结果 |
| save_txt | bool | FALSE | 是否保存检测结果为 .txt 文件(类似 COCO 格式) | 需要后处理分析时 |
| save_conf | bool | FALSE | 是否在输出中包含置信度分数 | 需要精确评估模型性能 |
| save_crop | bool | FALSE | 是否保存每个检测框裁剪后的图像 | 目标提取、数据增强 |
| hide_labels | bool | FALSE | 是否隐藏类别标签 | 美观化展示,如比赛提交 |
| hide_conf | bool | FALSE | 是否隐藏置信度数值 | 简洁显示 |
| vid_stride | int | 1 | 视频帧跳过步长,用于降低视频处理频率(提升速度) | 处理高帧率视频时优化性能 |
| line_thickness | int | 3 | 边界框线条粗细(像素) | 自定义可视化样式 |
| visualize | bool | FALSE | 是否可视化模型内部特征图(如 Backbone 输出) | 模型调试、研究用途 |
| augment | bool | FALSE | 是否对输入图像进行数据增强(如翻转、缩放)后再推理 | 提升鲁棒性,但会减慢速度 |
| agnostic_nms | bool | FALSE | 是否启用"类无关非极大抑制"(Agnostic NMS) | 多类目标重叠严重时使用 |
| classes | int / list | None | 过滤特定类别结果,如 class=0 或 class=[0,2,3] | 只关心某些类别(如只检测人) |
| retina_masks | bool | FALSE | 是否使用高分辨率分割掩码(提高分割精度) | 分割任务中追求更精细边界 |
| boxes | bool | TRUE | 在分割任务中是否显示边界框 | 控制分割结果的显示方式 |

五、检测结果拓展

其实检测结果是包含这么多信息的 ,它的外层是一个list,如果我们想要取它的结果的话,最好是result[0]这么取

检测可视化

在 Jupyter Notebook 环境中使用 matplotlib 可视化 YOLOv8 的检测结果。将模型预测输出的图像(带有边界框、标签等)显示在 Notebook 中。

python 复制代码
# 检测结果可视化
import matplotlib.pyplot as plt
%matplotlib inline
plt.imshow(result.plot()[:, :, ::-1]) # plot默认的是BGR通道,需要修改一下

box信息

python 复制代码
result[0].boxes
python 复制代码
result[0].boxes.xywh.cpu().numpy()  # tensor转换成numpy形式,展示框的信息

注意事项

• Jupyter中使用,要可视化模型,一定要设置%matplotlib inline,否则无法使用,因为在plot部分,YOLO强制将后端设置为了Agg • Jupyter中使用,要重新加载模型,否则预测过程中的参数,将不会更新,除非手动再次给出

六、数据准备

• 图片类型数据

• 无需额外处理,直接可以进行标注

• 视频类型数据

• 进行抽帧处理,导出为图片

视频读取帧的代码 ,可以自己试试

python 复制代码
import cv2
import matplotlib.pyplot as plt
video = cv2.VideoCapture("./BVN.mp4")
ret,frame = video.read()
plt.imshow(frame)
# BGR格式需要转化成RGB格式
plt.imshow(cv2.cvtColor(frame,cv2.COLOR_BGR2RGB))

视频抽帧代码

python 复制代码
video = cv2.VideoCapture("./BVN.mp4")
num = 0           # 计数器
save_step = 30    # 间隔帧

while True:
    ret, frame = video.read()
    if not ret:
        break
    num += 1
    if num % save_step == 0:
        cv2.imwrite("./demo_images/" + str(num) + ".jpg", frame)

七、数据标注

labelimg数据集标注 or make sence标注工具(这个有辅助标注)

• 环境安装

• pip install labelimg

• 启动命令

• labelimg

• 关键设置

• autosave

• YOLO format

注:这里要切成yolo

八、计算机视觉数据集

roboflow 公开数据集

• 地址

https://public.roboflow.com/object-detection

https://universe.roboflow.com/

九、训练步骤

9.1训练前准备

• 数据集准备

• images:存放图片

• train:训练集图片

• val:验证集图片

• labels:存放标签

• train:训练集标签文件,要与训练集图片名称一一对应

• val:验证集标签文件,要与验证集图片名称一一对应

config/XXX.yaml文件里面配置

python 复制代码
# parent
# ├── ultralytics
# └── datasets
#     └── coco8  ← downloads here (1 MB)

# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ...]
path: bvn  # dataset root dir
train: images/train  # train images (relative to 'path') 4 images
val: images/val    # val images (relative to 'path') 4 images
test:             # test images (optional)

# Classes
names:
  0: daitu
  1: mingren

9.2训练

训练

使用命令行训练

python 复制代码
yolo detect train \
    data=path/to/dataset.yaml \
    model=yolov8n.pt \
    epochs=100 \
    imgsz=640 \
    batch=16 \
    name=exp1

或者使用train.py文件来训练

python 复制代码
from ultralytics import YOLO
# 加载预训练模型(或从头训练)
model = YOLO("yolov8n.pt")  
# 开始训练
results = model.train(
    data="./datasets/yolo-bvn.yaml",  # 数据集配置
    epochs=100,
    imgsz=640,
    batch=8,
    name="bvn_train_v1",
    device=0,  # 0 表示 GPU,"cpu" 表示 CPU
    workers=4,
    cache=False
)
metrics = model.val()  

推理

使用 Ultralytics YOLOv8 模型对视频文件进行目标检测

python 复制代码
yolo detect predict model=runs/detect/train/weights/best.pt source=./BVN.mp4 show=True

注意事项

• 以代码方式运行时

• workers要设置成0,windows

• 页面文件太小,无法完成操作

• 调整训练参数中的workers,设置为1/0

• 修改虚拟内存,将环境安装位置所在的盘,设置一个较大的参数

• 数据集描述文件

• 数据地址从datasets目录里开始写起,且就放在根目录下,会避免很多坑

• 调整数据集目录后再次训练

• 删除 ~/AppData/Roaming/Ultralytics文件夹下的settings.yaml

相关推荐
Yawesh_best3 小时前
openEuler 25.09 AI推理性能优化与实践:从环境配置到性能提升
人工智能
musk12123 小时前
深度学习词汇 - 中英对照词典(内容由AI生成) Deep Learning Vocabulary - English-Chinese Dictionary
人工智能·深度学习
闻缺陷则喜何志丹3 小时前
【超音速专利 CN116777899A】基于回归模型的工业图像关键点检测方法、系统及平台
人工智能·数据挖掘·回归·专利·超音速
职业码农NO.13 小时前
智能体AI的六大核心设计模式,很常见
人工智能·设计模式·系统架构·aigc·rag
KG_LLM图谱增强大模型3 小时前
SciDaSynth:基于大语言模型的科学文献交互式结构化数据提取系统
数据库·人工智能·大模型·知识图谱
_oP_i3 小时前
语音识别大模型原理
人工智能·语音识别
NaturalHarmonia3 小时前
UIE信息抽取模型指代消解实战教程(extra)
人工智能·算法
Sahadev_3 小时前
GitHub 一周热门项目速览 | 2025年12月08日
java·大数据·人工智能·安全·ai作画
Eloudy3 小时前
jacobi solver 迭代算法
人工智能·算法·机器学习