当前位置: 首页 > 科技观察

本文带你了解最新的目标检测模型——YOLOv9

时间:2023-03-20 15:27:32 科技观察

译者|朱宪忠校对|孙淑娟什么是YOLOv8?YOLOv8是Ultralytics推出的基于物体检测模型的YOLO最新系列,可以提供迄今为止最先进的物体检测性能。利用之前的YOLO模型版本支持技术,YOLOv8模型运行更快更准确,同时为执行任务的训练模型提供统一框架,包括:对象检测实例分割图像分类在撰写本文时,Ultralytics的YOLOv8实际上有一个存储库中添加了许多功能,包括训练模型的全套导出功能等等。此外,Ultralytics将计划在Arxiv上发表一篇相关论文,将YOLOv8与其他最先进的视觉模型进行比较。YOLOv8的新特性Ultralytics发布了一个全新的YOLO模型存储库(https://github.com/ultralytics/ultralytics)。该存储库被构建为用于训练对象检测、实例分割和图像分类模型的统一框架。下面列出了这个新版本的一些主要功能:用户友好的API(命令行+Python)。更快更准确。支持:对象检测、实例分割和图像分类。可扩展到所有以前的版本。新的骨干网络。新的Anchor-Free头部物体检测算法。新的损失函数。此外,YOLOv8也非常高效灵活,可以支持多种导出格式,模型可以在CPU和GPU上运行。YOLOv8中提供的子模型YOLOv8模型的每个类别中有五个模型,共同完成检测、分割和分类任务。其中,YOLOv8Nano是最快和最小的模型,而YOLOv8ExtraLarge(YOLOv8x)是最准确但最慢的模型。此版本的YOLOv8附带以下预训练模型:在图像分辨率为640的COCO检测数据集上训练的对象检测检查点。在图像分辨率为640的COCO分割数据集上训练的实例分割检查点。在ImageNet上预训练的图像分类模型图像分辨率为224的数据集。接下来,让我们看一下使用YOLOv8x的检测和实例分割模型的输出,请参考下面的gif动画。如何使用YOLOv8?为了充分利用YOLOv8的潜力,需要从存储库和ultralytics包中安装相应的要求。要安装这些需求,我们首先需要克隆模型的存储库,命令如下:gitclonehttps://github.com/ultralytics/ultralytics.git接下来,安装需求配置文件:pipinstall-rrequirements.txt在最新版本中,UltralyticsYOLOv8还提供了完整的命令行界面(CLI)API和PythonSDK,用于训练、验证和推理任务。为了使用yolo命令行界面(CLI),我们需要安装ultralytics包,命令如下:pipinstallultralytics如何通过命令行界面(CLI)使用YOLOv8?安装必要的包后,我们可以使用yolo命令访问YOLOv8CLI。下面是使用yoloCLI运行物体检测和推理的命令行代码示例:yolotask=detect\mode=predict\model=yolov8n.pt\source="image.jpg"其中,task参数可以接受三个参数值:detect、classify、segment,分别对应检测、分类、分割三个任务。同样,模式参数可以有三个值,即train、val或predict。另外,在导出训练模型的时候,我们也可以指定mode参数为export。对于所有可能的yoloCLI标志和参数,感兴趣的读者可以参考链接https://docs.ultralytics.com/config/。如何通过PythonAPI使用YOLOv8?除了通过上述CLI使用YOLOv8,我们还可以创建一个简单的Python文件,导入YOLO模块并执行我们选择的任务。fromultralyticsimportYOLOmodel=YOLO("yolov8n.pt")#加载预训练的YOLOv8n模型model.train(data="coco128.yaml")#训练模型model.val()#在验证上评估模型性能模型set.predict(source="https://ultralytics.com/images/bus.jpg")#预测图像model.export(format="onnx")#将模型导出为ONNX格式比如上面代码中首先在COCO128数据集上训练YOLOv8Nano模型,然后在验证集上进行评估,最后对样本图像进行预测。接下来,让我们通过yoloCLI方式使用目标检测、实例分割和图像分类模型进行推理。目标检测推理结果以下命令使用YOLOv8Nano模型实现视频检测。yolotask=detectmode=predictmodel=yolov8n.ptsource='input/video_3.mp4'show=True这个推理的运行硬件环境是在笔记本电脑GTX1060GPU上以几乎105FPS的速度运行,最后我们得到如下输出结果:使用YOLOv8Nano模型进行检测和推理。需要注意的是,YOLOv8Nano模型在几帧内混合了猫和狗。让我们使用YOLOv8ExtraLarge模型对同一视频运行检测并检查输出。yolotask=detectmode=predictmodel=yolov8x.ptsource='input/video_3.mp4'show=True注意:上面的YOLOv8ExtraLarge模型在GTX1060GPU上以平均17FPS的速度运行。DetectioninferenceusingYOLOv8超大模型虽然这次误分类略有减少,但模型仍然在某些帧中进行了错误检测。实例分割的推理结果使用YOLOv8实例分割模型运行推理也很简单。我们只需要改变上面命令中的任务和模型名称,结果如下:yolotask=segmentmode=predictmodel=yolov8x-seg.ptsource='input/video_3.mp4'show=True因为实例分割和对象检测相结合,所以这一次运行的平均FPS约为13。使用YOLOv8超大模型的分割推理分割图在输出中看起来很干净。即使猫在最后几帧中隐藏在方块下,模型也能够检测并分割它。图像分类的推理结果最后,由于YOLOv8已经提供了预训练的分类模型,我们使用yolov8x-cls模型对同一视频进行分类推理。这是迄今为止存储库提供的最大的分类模型。yolotask=classifymode=predictmodel=yolov8x-cls.ptsource='input/video_3.mp4'show=True使用YOLOv8超大模型进行分类推理默认情况下,视频标注了模型预测的前5个类.不做任何后处理,标注部分直接使用ImageNet类名。YOLOv8vsYOLOv7vsYOLOv6vsYOLOv5可以看出,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于2015年由JosephRedmon等人发布。这是第一个产生SSD和所有后续YOLO模型的单阶段目标检测(SSD)模型。YOLO9000(version2)YOLOv2,又称YOLO9000,由YOLOv1的原作者JosephRaymond提出。它改进了原始的YOLOv1模型——引入锚框(AnchorBox)的概念和更好的主干(即Darknet-19)。YOLOv32018年,JosephRaymond和AliFarhadi公布了YOLOv3模型。其实这不是架构上的飞跃,而是一份技术报告,但YOLO家族却取得了长足的进步。YOLOv3模型使用了Darknet-53backbone、residualconnections,并使用了更好的预训练和图像增强技术来实现改进。UltralyticsYOLO目标检测模型YOLOv3之前的所有YOLO目标检测模型都是用C编程语言编写的,并使用Darknet框架。然而,新手发现很难遍历代码库和微调模型。因此,大约在发布YOLOv3模型的同时,Ultralytics发布了第一个使用PyTorch框架的YOLO(YOLOv3)实现。该模型在迁移学习领域更易于访问和使用。在发布YOLOv3模型后不久,JosephRaymond离开了计算机视觉研究社区。YOLOv4(Alexeyetal.)是最后一个用Darknet编写的YOLO模型。之后,相继出现了许多其他的YOLO物体检测模型。例如,YOLOv4、YOLOX、PP-YOLO、YOLOv6和YOLOv7的缩放版本代表了一些比较突出的模型。在YOLOv3之后,Ultralytics还发布了YOLOv5,它比所有其他YOLO模型更好、更快、更容易使用。截至目前(2023年1月),Ultralytics在Ultralytics存储库下发布了YOLOv8,这可能是迄今为止最好的YOLO模型。结论在本文中,我们探讨了最新版本的YOLO模型YOLOv8。在里面,我们详细介绍了这个新模型的性能,以及软件包自带的命令行界面的用法。除此之外,我们还对少量视频数据进行了推理演示。在以后的文章中,我们还将在自定义数据集上微调YOLOv8模型。最后,如果你自己在YOLOv8模型上做任何实验,请在评论区告诉我。译者介绍朱宪忠,社区编辑,专家博主,讲师,潍坊某高校计算机教师,自由编程资深人士。原标题:UltralyticsYOLOv8:State-of-the-ArtYOLOModels,作者:SovitRath