• 【目标检测】YOLOv8:快速上手指南


    YOLOv8概述

    YOLOv8是YOLOv5团队在今年新推出的一代YOLO版本,与前几代版本相比,其性能和速度差距如下图所示:

    在这里插入图片描述
    和其它版本不同的是,该仓库并非起名为YOLOv8,而是公司名ultralytics,因为他们想将此版本作为一个通用库,以方便调用和部署。

    仓库地址:https://github.com/ultralytics/ultralytics
    官方教程:https://docs.ultralytics.com/modes/train/

    官方教程中提供了Python和命令行(CLI)两种调用方式,本文只对前者进行试用。

    安装

    由于YOLOv8是作为一款通用库的形式,因此无需想YOLOv5那样下载整个文件,而只需用pip进行安装。

    pip install ultralytics
    
    • 1

    值得注意的是,该库包含了torch/torchvision两个需要区分GPU/CPU版本的依赖,安装完成之后,需要检查一下torch是否可用GPU。

    检查方式:

    import torch
    
    print(torch.cuda.is_available())
    
    • 1
    • 2
    • 3

    模型训练

    加载模型

    加载模型有下面三种方式,通常用第二种即可。

    # Load a model
    model = YOLO('models/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
    
    • 1
    • 2
    • 3
    • 4

    模型训练

    下面以coco128数据集为例开始训练,训练只需一行代码:

    results = model.train(data='coco128.yaml', epochs=2, imgsz=640, workers=0, batch=2)
    
    • 1

    运行之后,程序会自动下载数据集和模型,这里的train接口有很多参数选择,大多数与YOLOv5中的参数一致。

    具体参数和含义可查阅文档Arguments这一节:

    在这里插入图片描述

    模型验证

    模型验证也相当简单,只需这几行代码:

    metrics = model.val(data='coco128.yaml', imgsz=640, workers=0, batch=2)  # 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
    
    • 1
    • 2
    • 3
    • 4
    • 5

    运行效果和YOLOv5中的val.py一致,会在run/val路径下生成验证结果。

    模型推理

    YOLOv8目前支持的推理有:目标检测、目标检测+分割、目标检测+姿态检测、目标跟踪。
    注:所有的任务都以检测为基础,官方并未单独提出其他任务的训练方式。

    目标检测

    # Load a model
    model = YOLO('yolov8n.pt')  # load a pretrained model
    # Run inference on 'bus.jpg' with arguments
    model.predict('data/bus.jpg', save=True, imgsz=320, conf=0.5)
    
    • 1
    • 2
    • 3
    • 4

    这里的图片路径可以自行修改指定。

    示例效果:
    在这里插入图片描述

    目标检测+分割

    # Load a pretrained YOLOv8n-seg Segment model
    model = YOLO('yolov8n-seg.pt')
    
    # Run inference on an image
    results = model('data/bus.jpg', save=True)
    
    • 1
    • 2
    • 3
    • 4
    • 5

    接口完全一致,只是所加载的模型不一样。

    效果:

    在这里插入图片描述

    目标检测+姿态检测

    # Load a pretrained YOLOv8n-pose Pose model
    model = YOLO('yolov8n-pose.pt')
    
    # Run inference on an image
    results = model('data/bus.jpg', save=True)  # results list
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述

    目标跟踪

    # load a pretrained model
    model = YOLO('yolov8n.pt')
    results = model.track(source="data/malasong.mp4", save=True)
    
    • 1
    • 2
    • 3

    目标跟踪接口是track,需要导入视频数据,以下是视频中的某一帧。

    在这里插入图片描述

    总结

    YOLOv8在YOLOv5的基础上,加入了Anthor-free等众多tricks,模型性能比前代有所提升。整体上统一了多任务的接口,方便应用和部署。不过对于研究者来说,无疑让网络复杂的黑盒模式进一步加深,不利于二次开发。

  • 相关阅读:
    python--numpy常用属性及方法
    电流反馈型运放以及PCB
    二十三、java版 SpringCloud分布式微服务云架构之 Java 多态
    【数值分析】复习知识点整合
    Asp .Net Core 系列:集成 CAP + RabbitMQ + MySQL(含幂等性)
    Yolov5:强大到你难以想象──新冠疫情下的口罩检测
    C++_跨平台编译_cmakefile中_添加内容
    [sinlinx-v3s]mke2fs
    为什么数据分析是数字采用优化的核心
    OneFlow框架添加算子实践:expand和repeat
  • 原文地址:https://blog.csdn.net/qq1198768105/article/details/132796822