
审校 | 孙淑娟
YOLOv8是什么?
YOLOv8是Ultralytics推出的基于对象检测模型的YOLO最新系列,它能够提供截至目前最先进的对象检测性能。借助于以前的YOLO模型版本支持技术,YOLOv8模型运行得更快、更准确,同时为执行任务的训练模型提供了统一的,这包括:
- 目标检测
- 实例分割
- 图像分类
YOLOv8的新功能
Ultralytics为YOLO模型发布了一个全新的存储库(https://github.com/ultralytics/ultralytics)。该存储库被构建为用于训练对象检测、实例分割和图像分类模型的统一框架。以下列举的是这个新版本的一些关键功能:
- 用户友好的API(命令行+/ target=_blank class=infotextkey>Python)。
- 更快、更准确。
- 支持:
- 目标检测,
- 实例分割和
- 图像分类。
- 可扩展到所有以前的版本。
- 新的骨干网络。
- 新的Anchor-Free head对象检测算法。
- 新的损失函数。
YOLOv8中提供的子模型
YOLOv8模型的每个类别中共有五个模型,以便共同完成检测、分割和分类任务。其中,YOLOv8 Nano是最快和最小的模型,而YOLOv8Extra Large(YOLOv8x)是其中最准确但最慢的模型。
YOLOv8这次发行中共附带了以下预训练模型:
- 在图像分辨率为640的COCO检测数据集上训练的对象检测检查点。
- 在图像分辨率为640的COCO分割数据集上训练的实例分割检查点。
- 在图像分辨率为224的Imag数据集上预处理的图像分类模型。
如何使用YOLOv8?
为了充分发挥出YOLOv8的潜力,需要从存储库以及ultralytics包中安装相应的需求。要安装这些需求,我们首先需要克隆一下该模型的存储库,命令如下: 复制
git clone https://github.com/ultralytics/ultralytics.git
- 1.
pip install -r requirements.txt
- 1.
为了使用yolo命令行界面(CLI),我们需要安装ultralytics包,命令如下: 复制
pip install ultralytics
- 1.
如何通过命令行界面(CLI)使用YOLOv8?
安装必要的软件包后,我们可以使用yolo命令访问YOLOv8 CLI。以下给出的是使用yolo CLI运行对象检测推断的命令行代码示例: 复制
yolo task=detect
mode=predict
model=yolov8n.pt
source="image.jpg"
- 1.
- 2.
- 3.
- 4.
有关所有可能的yolo CLI标志和参数,有兴趣的读者可参考链接https://docs.ultralytics.com/config/。
如何通过Python API使用YOLOv8?
除了通过上面CLI方式使用YOLOv8外,我们还可以创建一个简单的Python文件,导入YOLO模块并执行我们选择的任务。 复制
from ultralytics import YOLO
model = YOLO("yolov8n.pt") # 加载一个预训练的YOLOv8n模型
model.train(data="coco128.yaml") #训练模型
model.val() # 评估验证集上的模型性能
model.predict(source="https://ultralytics.com/images/bus.jpg") #对图像进行预测
model.export(format="onnx") # 将模型导出为ONNX格式
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
接下来,让我们通过yolo CLI方式来使用对象检测、实例分割和图像分类模型进行推断。
目标检测的推断结果
以下命令实现使用YOLOv8 Nano模型对视频进行检测。 复制
yolo task=detect mode=predict model=yolov8n.pt source='input/video_3.mp4' show=True
- 1.
使用YOLOv8 Nano模型进行检测推断
需要说明的是,YOLOv8 Nano模型在几帧内把猫和狗进行了混合。让我们使用YOLOv8 Extra Large模型对同一视频进行检测并检查输出。 复制
yolo task=detect mode=predict model=yolov8x.pt source='input/video_3.mp4' show=True
- 1.
使用YOLOv8超大模型进行检测推断
尽管这一次的误分类略有减少,但模型仍然在一些帧中进行了错误的检测。
实例分割的推理结果
使用YOLOv8实例分割模型运行推理同样是很简单的。我们只需要在上面的命令中更改一下任务和模型名称即可,结果如下: 复制
yolo task=segment mode=predict model=yolov8x-seg.pt source='input/video_3.mp4' show=True
- 1.
使用YOLOv8超大模型进行分割推断
分割图在输出中看起来很干净。即使当猫在最后几帧隐藏在块下时,模型也能够检测并分割它。
图像分类的推理结果
最后,由于YOLOv8已经提供了预训练的分类模型,让我们使用yolov8x-cls模型对同一视频进行分类推断。这是截止目前存储库提供的最大分类模型。 复制
yolo task=classify mode=predict model=yolov8x-cls.pt source='input/video_3.mp4' show=True
- 1.
使用YOLOv8超大模型进行分类推断
默认情况下,视频用模型预测的前5个类进行标注。在没有任何后期处理的情况下,标注部分直接使用了ImageNet类名。
YOLOv8 vs YOLOv7 vs YOLOv6 vs YOLOv5
可以看出,YOLOv8模型似乎比之前的YOLO模型表现更好;这不仅是相比于YOLOv5模型来说的,YOLOv8也优越于YOLOv7和YOLOv6模型。YOLOv8与其他YOLO模型性能相比。
由上图可以看出,与以640图像分辨率训练的其他YOLO模型相比,所有YOLOv8模型在参数数量相似的情况下具有更好的吞吐量。
接下来,让我们更为详细了解一下最新的YOLOv8模型与Ultralytics公司的YOLOv5模型的性能差异。下面几个表格显示了YOLOv8和YOLOv5之间的综合比较情况。
总体比较
YOLOv8和YOLOv5之间的性能比较
YOLOv8模型与YOLOv5模型性能比较表
对象检测比较
YOLOv8模型与YOLOv5模型对象检测性能比较情况见下表:YOLOv8模型与YOLOv5模型对象检测性能比较
实例分段比较
YOLOv8模型与YOLOv5模型实例分段性能比较情况见下表:YOLOv8与YOLOv5实例分割模型性能比较
图像分类比较
YOLOv8与YOLOv5图像分类模型情况
整体来看,其实也很明显,最新的YOLOv8模型比YOLOv5要好得多,除了一种分类模型外。
YOLOv8目标检测模型的发展
下面给出的这张图像显示了YOLO目标检测模型的时间线以及YOLOv8的演变情况。YOLOv8目标检测模型的演变情况
YOLOv1模型
YOLO对象检测的第一个版本,即YOLOv1,由Joseph Redmon等人于2015年发布。这是第一个产生SSD和所有后续YOLO模型的单级对象检测(SSD)模型。YOLO 9000(第2版)
YOLOv2,又称YOLO 9000,由YOLOv1的原作者约瑟夫·雷蒙提出。它改进了原来的YOLOv1模型——引入了锚盒(Anchor Box)的概念和更好的主干(即Darknet-19)。YOLOv3
2018年,约瑟夫·雷蒙和阿里·法哈迪公布了YOLOv3模型。其实,这不是一个上的飞跃,算是一份技术报告,但YOLO家族还是有了很大的进步。YOLOv3模型使用Darknet-53主干、残差连接,并使用更好的预训练和图像增强技术来实现改进。Ultralytics YOLO目标检测模型
YOLOv3之前的所有YOLO对象检测模型都使用C语言编写,并使用Darknet框架。但是,新手们发现很难遍历代码库并对模型进行微调。于是,大约与YOLOv3模型发布的同时,Ultralytics发布了第一个使用PyTorch框架实现的YOLO(YOLOv3)。这个模型更为容易访问,也更容易用于转移学习领域。
发布YOLOv3模型后不久,约瑟夫·雷蒙离开了计算机视觉(Computer Vision)研究界。YOLOv4(Alexey等人)是最后一个用Darknet编写的YOLO模型。之后,又相继出现了其他许多的YOLO物体检测模型,例如缩放版YOLOv4、YOLOX、PP-YOLO、YOLOv6和YOLOv7代表了其中较为突出的一些模型。
在YOLOv3之后,Ultralytics还发布了YOLOv5,它比所有其他YOLO模型更好、更快、更易于使用。
截至目前(2023年1月),Ultralytics在Ultralytics存储库下发布了YOLOv8,这可能是迄今为止最好的YOLO模型。
结论
在本文中,我们探讨了YOLO模型的最新版本,即YOLOv8。其中,我们具体介绍了这款新模型的性能,以及软件包附带的命令行界面用法。除此之外,我们还对少数几个视频数据进行了推断展示。在以后的文章中,我们还将在自定义数据集上对YOLOv8模型进行微调。
最后,如果您自己也在进行任何有关YOLOv8模型的实验,请在评论部分告诉我
译者介绍
朱先忠,51CTO社区编辑,51CTO专家博客、讲师,潍坊一所高校计算机教师,自由编程界老兵一枚。原文标题: ,作者:Sovit Rath
胜象大百科








