环境配置

  1. 从镜像源下载安装miniconda

  2. 在conda env中安装jupyter

    pip install jupyter ipykernel -i https://pypi.tuna.tsinghua.edu.cn/simple
    
  3. 安装YOLOv8
    pip安装(镜像源)

     pip install ultralytics -i https://pypi.tuna.tsinghua.edu.cn/simple
    

    还有可以手动克隆 GitHub 仓库来安装

    git clone https://github.com/ultralytics/ultralytics.git
    cd ultralytics
    pip install -e .
    

    或者通过conda安装

    conda install -c conda-forge ultralytics
    
  4. 下载安装vscode,选择python环境为conda env。如果这一步找不到conda的,需要手动添加conda的路径到系统环境变量中。具体来说就是把下面这三个路径加入环境变量,

    C:\Users\<YourUsername>\Anaconda3
    C:\Users\<YourUsername>\Anaconda3\Scripts
    C:\Users\<YourUsername>\Anaconda3\Library\bin
    

YOLO的基本使用

使用预训练模型进行目标检测

YOLOv8 是 Ultralytics 官方发布的最新版本。常见的预训练模型包括:

模型名称 特点 参数量 推理速度 适用场景
yolov8n 最小版本,极轻量级 ~3.2M 极快(>100 FPS) 嵌入式设备、移动端实时检测
yolov8s 小型版本,速度与精度平衡 ~11.1M 快(50-100 FPS) 移动端应用、边缘计算
yolov8m 中等规模,精度较高 ~26.6M 中等(30-50 FPS) 通用目标检测任务
yolov8l 大型版本,高精度 ~43.7M 慢(10-30 FPS) 工业质检、高精度场景
yolov8x 超大型版本,最高精度 ~68.2M 非常慢(<10 FPS) 科研、专业级检测任务

预训练模型用于通用目标检测任务。预训练模型(如 yolov8n.pt、yolov8s.pt)已针对 COCO 数据集(包含 80 个常见类别)进行训练,可直接用于检测通用目标(如人、车、动物、交通标志等)。示例:自动驾驶中检测道路上的车辆和行人,智能监控中识别公共场所的人员和物品。

  1. 图片检测
from ultralytics import YOLO
# Load a model
model = YOLO('yolov8s.pt') 
# Predict with the model
results = model('https://ultralytics.com/images/bus.jpg')  # predict on an image

results[0].show()  # 在窗口中显示预测结果

或者

yolo task=detect mode=predict model=yolov8s.pt source='https://ultralytics.com/images/bus.jpg' device=0 save=True
  1. 视频检测
 yolo predict model=yolo11n-seg.pt source='yolo_test.mp4' imgsz=320
  1. 实时摄像头检测
yolo predict model=yolov8n.pt source=0

或者

from ultralytics import YOLO
import cv2

# 加载预训练模型
model = YOLO("yolov8s.pt") 

# 获取摄像头内容,参数 0 表示使用默认的摄像头
# cap = cv2.VideoCapture(0)

# 我使用的是网络摄像头
# 构造 RTSP 地址
rtsp_url = "rtsp:.../stream1"

# 打开 RTSP 流
cap = cv2.VideoCapture(rtsp_url)

if not cap.isOpened():
    print("无法连接到摄像头!")
    exit()

while True:
    ret, frame = cap.read()
    if not ret:
        print("无法读取视频帧!")
        break

    # YOLO 推理
    results = model(frame, stream=True)  # 实时检测

    # 可视化结果
    for result in results:
        annotated_frame = result.plot()  # 绘制边界框和标签

    # 显示结果
    cv2.imshow("YOLO 实时检测", annotated_frame)

    # 按 'q' 键退出
    if cv2.waitKey(1) == ord("q"):
        break

# 释放资源
cap.release()
cv2.destroyAllWindows()

训练自定义数据集

当目标类别不在 COCO 数据集中时(如检测工业零件、特定品牌logo、农作物病害等),必须使用自定义数据集训练模型。
示例:
工业质检:检测产品表面的微小缺陷(如划痕、裂纹)。
医疗影像:检测 X 光片中的特定病灶(如肺结节)。
农业:识别作物上的病虫害(如稻瘟病、蚜虫)。

  1. 准备数据集
    数据需要按照YOLOv8要求的目录存放
├── yolov8_dataset
	└── train
		└── images (folder including all training images)
		└── labels (folder including all training labels)
	└── test
		└── images (folder including all testing images)
		└── labels (folder including all testing labels)
	└── valid
		└── images (folder including all testing images)
		└── labels (folder including all testing labels)

标注工具: 生成 .txt 标注文件。
2. 修改配置文件
推荐使用绝对路径,会避免很多问题。因为相对路径是相对于 settings.json 中的 datasets_dir (Ultralytics 的全局配置),每次更换数据都要修改datasets_dir 超级麻烦。

# data.yaml
train: /home/dataset/train
val: /home/dataset/val
test: /home/dataset/test
names:
  0: No_detected
  1: detected
  1. 开始训练
    自定义数据集训练我们的模型,有三种方法:
    使用yolo模型结构从随机权重开始训练;
    使用yolo模型结构和yolo预训练的权重开始训练;
    使用自定义的模型结构和yolo预训练的权重开始训练。
# 从YAML构建一个新模型,从头开始训练
yolo detect train data=coco128.yaml model=yolov8n.yaml epochs=100 imgsz=640
yolo detect train data=ultralytics/datasets/MoonCake.yaml model=yolov8n.yaml epochs=100 imgsz=640

# 从预训练的*.pt模型开始训练
yolo detect train data=coco128.yaml model=yolov8n.pt epochs=100 imgsz=640
yolo detect train data=ultralytics/datasets/MoonCake.yaml model=yolov8n.pt epochs=100 imgsz=640

# 从YAML中构建一个新模型,将预训练的权重转移到它并开始训练
yolo detect train data=coco128.yaml model=yolov8n.yaml pretrained=yolov8n.pt epochs=100 imgsz=640
yolo detect train data=ultralytics/datasets/MoonCake.yaml model=yolov8n.yaml pretrained=yolov8n.pt epochs=100 imgsz=640
from ultralytics import YOLO

# Load a model # 三选一
model = YOLO('yolov8n.yaml')  # build a new model from YAML
model = YOLO('yolov8n.pt')  # load a pretrained model (recommended for training)
model = YOLO('yolov8n.yaml').load('yolov8n.pt')  # build from YAML and transfer weights

# Train the model
model.train(data='coco128.yaml', epochs=100, imgsz=640)
  1. 模型优化
    调整超参数(如学习率、批大小)、数据增强策略(如旋转、缩放)以提升性能。
    使用 TensorBoard 监控训练过程。

  2. 验证模型

    yolo task=detect mode=val model=yolov8n.pt
    # mode=val 就是看验证集
    yolo task=detect mode=val split=val model=path/to/best.pt  data=path/to/data.yaml
    # mode=test 就是看测试集
    yolo task=detect mode=val split=test model=path/to/best.pt  data=path/to/data.yaml
    
    from ultralytics import YOLO
    
    # Load a model
    model = YOLO('yolov8n.pt')  # load an official model
    model = YOLO('path/to/best.pt')  # load a custom model
    
    # Validate the model
    metrics = model.val()  # no arguments needed, dataset and settings remembered
    metrics.box.map    # map50-95
    metrics.box.map50  # map50
    metrics.box.map75  # map75
    metrics.box.maps   # a list contains map50-95 of each category
    
    
    
  3. 导出模型

    from ultralytics import YOLO
    
    # Load a model
    model = YOLO('yolov8n.pt')  # load an official model
    model = YOLO('path/to/best.pt')  # load a custom trained
    
    # Export the model
    model.export(format='onnx')
    
    
    
    yolo export model=best.pt format=onnx
    yolo predict model=best.onnx source=example.jpg
    

引用

csdn

更多推荐