百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

YOLO对象检测算法又又又更新了,YOLOv8横空出世

bigegpt 2024-08-02 10:48 4 浏览

前面的文章,我们分享了YOLO系列的文章,包括前段时间刚刚发布的YOLOv7检测算法,虽然YOLOv7对象检测算法是YOLO最新的模型,且可以支持对象分割,人体姿态检测等,但是最新的YOLO系列检测模型也同步进行了更新,那就是刚刚开源的YOLOv8对象检测算法。只能说AI人工智能领域越来越卷了。

人工智能领域也卷了吗——YOLO系列又被刷新了,YOLOv7横空出世

——1——

YOLO系列对象检测算法

YOLO(You Only Look Once)是由Joseph Redmon和Ali开发的一种对象检测和图像分割模型。YOLO的第一个版本于2015年发布,由于其高速度和准确性,瞬间得到了广大AI爱好者的喜爱。

YOLOv2 于 2016 年发布,通过合并批量归一化、锚框和维度群集等技术,大大提高了其对象检测算法的精度与速度。

YOLOv3 于 2018 年发布,通过使用更高效的骨干网络,添加特征金字塔,并利用焦点损失等技术,进一步提高了速度与精确度。

2020 年,YOLOv4 发布,引入了许多创新,例如使用 Mosaic 数据增强,一个新的无锚检测头,以及新的损失函数等功能。

2021 年,Ultralytics 发布了 YOLOv5,进一步改进了该模型的性能并添加了新功能,例如支持全景分割和对象跟踪。

2022年,美团发布了YOLOv6,YOLOv6对Backbone 和 Neck 都进行了重新设计,Head层沿用了YOLO_x中的Decoupled Head并稍作修改。对YOLOv5而言,YOLOv6对网络模型结构进行了大量的更改。除了网络结构上的改进,作者还对训练策略进行了改进,应用了Anchor-free 无锚范式、SimOTA标签分配策略、SIOU边界框回归损失。

2022年,WongKinYiu团队发布YOLOv7对象检测算法,E-ELAN 是 YOLOv7 主干中的计算块。E-ELAN使用expand、shuffle、merge cardinality来实现在不破坏原有梯度路径的情况下不断增强网络学习能力的能力。

——2——

YOLOv8对象检测算法

2023年,Ultralytics再次发布YOLO更新模型,YOLOv8模型。Ultralytics YOLOv8是YOLO对象检测和图像分割模型的最新版本。YOLOv8 是一种尖端的、最先进的 (SOTA) 模型。

YOLOv8的一个关键特性是它的可扩展性。它被设计为一个框架,支持所有以前版本的 YOLO,可以轻松地在不同版本之间切换并比较它们的性能。

除了可扩展性之外,YOLOv8 还包括许多其他创新,使其成广泛应用在对象检测和图像分割任务上。其中包括新的骨干网络,新的无锚网络检测头和新的损失函数功能。YOLOv8 也非常高效,可以在各种硬件平台(从 CPU 到 GPU)上运行。

YOLOv8 模型的每个类别中有五个模型,用于检测、分割和分类。YOLOv8 Nano是最快和最小的,而YOLOv8 Extra Large(YOLOv8x)是最准确但最慢的。

YOLOv8n

YOLOv8s

YOLOv8m

YOLOv8l

YOLOv8x

YOLOv8 使用了以下预训练模型:

  • 在 COCO 检测数据集上训练的对象检测,图像分辨率为 640。
  • 在 COCO 分割数据集上训练的实例分割,图像分辨率为 640。
  • 在 ImageNet 数据集上预训练的图像分类模型,图像分辨率为 224。

——3——

YOLOv8对象检测算法的代码实现

YOLOv8对象检测算法的代码实现过程也很简单,官方提供了API接口以及python第三方包安装的方式进行代码的实现过程。

首先需要安装Python>=3.7.0 与PyTorch>=1.7,然后跟安装python第三方包类似的操作,来安装ultralytics库,这样,我们就可以使用YOLOv8对象检测算法了。

pip install ultralytics
yolo task=detect mode=predict model=yolov8n.pt source="images" name=yolov8x_det

第一行代码是安装ultralytics,第二行代码便可以使用YOLO指令进行对象检测任务,好吧,我承认现在AI人工智能行业越来越卷了,2行代码就搞定了。

 task=detect #执行对象检测任务
 mode=predict #执行预测或者训练
 model=yolov8n.pt #使用哪个模型进行预测或者训练
 source="images" #检测的文件名,或者一个文件夹
 name=yolov8x_det #保存的文件名,或者一个文件夹

检测完成后,会自动保存结果到指定的文件夹中,我们可以使用一个脚本来进行图片的显示。

def display(dir):
    plt.figure(figsize=(20, 12))
    image_names = glob.glob(os.path.join(result_dir, '*.jpg'))
    for i, image_name in enumerate(image_names):
        image = plt.imread(image_name)
        plt.subplot(2, 2, i+1)
        plt.imshow(image)
        plt.axis('off')
    plt.tight_layout()
    plt.show()

display(runs/detect/yolov8x_det/)

当然,YOLOv8对象检测算法跟YOLOv7类似,同样可以进行对象的分割任务与对象分类任务

yolo task=segment mode=predict model=yolov8x-seg.pt source='images' name=yolov8x_seg
yolo task=classify mode=predict model=yolov8x-cls.pt source='images' name=yolov8x_cls
display('runs/segment/yolov8x_seg/')
display('runs/classify/yolov8x_cls/')
from ultralytics import YOLO

# Load a model
#model = YOLO("yolov8n.yaml")  # build a new model from scratch
model = YOLO("yolov8n.pt")  # load a pretrained model (recommended for training)

# Use the model
results = model.train(data="coco128.yaml", epochs=3)  # train the model
results = model.val()  # evaluate model performance on the validation set
results = model.predict("https://ultralytics.com/images/bus.jpg")  # predict on an image
success = model.export(format="onnx")  # export the model to ONNX format

当然,官方提供了python代码来实现YOLOv8对象检测算法模型

第一行代码,我们导入YOLO模型

第5行代码,我们使用yolov8n预训练模型

第8行代码,我们首先在COCO128数据集上面训练YOLOv8对象检测算法模型

第9行代码,我们在验证集上进行模型的评估

第10行代码,我们进行模型的预测

最后,我们可以导出onnx格式的模型

更多参考:

https://github.com/ultralytics/ultralytics 开源链接

高大上的YOLOV3对象检测算法,使用python也可轻松实现

使用python轻松实现高大上的YOLOV4对象检测算法

基于python的YOLOV5对象检测模型实现

人工智能领域也卷了吗——YOLO系列又被刷新了,YOLOv7横空出世

YOLOv7与MediaPipe在人体姿态估计上的对比

相关推荐

得物可观测平台架构升级:基于GreptimeDB的全新监控体系实践

一、摘要在前端可观测分析场景中,需要实时观测并处理多地、多环境的运行情况,以保障Web应用和移动端的可用性与性能。传统方案往往依赖代理Agent→消息队列→流计算引擎→OLAP存储...

warm-flow新春版:网关直连和流程图重构

本期主要解决了网关直连和流程图重构,可以自此之后可支持各种复杂的网关混合、多网关直连使用。-新增Ruoyi-Vue-Plus优秀开源集成案例更新日志[feat]导入、导出和保存等新增json格式支持...

扣子空间体验报告

在数字化时代,智能工具的应用正不断拓展到我们工作和生活的各个角落。从任务规划到项目执行,再到任务管理,作者深入探讨了这款工具在不同场景下的表现和潜力。通过具体的应用实例,文章展示了扣子空间如何帮助用户...

spider-flow:开源的可视化方式定义爬虫方案

spider-flow简介spider-flow是一个爬虫平台,以可视化推拽方式定义爬取流程,无需代码即可实现一个爬虫服务。spider-flow特性支持css选择器、正则提取支持JSON/XML格式...

solon-flow 你好世界!

solon-flow是一个基础级的流处理引擎(可用于业务规则、决策处理、计算编排、流程审批等......)。提供有“开放式”驱动定制支持,像jdbc有mysql或pgsql等驱动,可...

新一代开源爬虫平台:SpiderFlow

SpiderFlow:新一代爬虫平台,以图形化方式定义爬虫流程,不写代码即可完成爬虫。-精选真开源,释放新价值。概览Spider-Flow是一个开源的、面向所有用户的Web端爬虫构建平台,它使用Ja...

通过 SQL 训练机器学习模型的引擎

关注薪资待遇的同学应该知道,机器学习相关的岗位工资普遍偏高啊。同时随着各种通用机器学习框架的出现,机器学习的门槛也在逐渐降低,训练一个简单的机器学习模型变得不那么难。但是不得不承认对于一些数据相关的工...

鼠须管输入法rime for Mac

鼠须管输入法forMac是一款十分新颖的跨平台输入法软件,全名是中州韵输入法引擎,鼠须管输入法mac版不仅仅是一个输入法,而是一个输入法算法框架。Rime的基础架构十分精良,一套算法支持了拼音、...

Go语言 1.20 版本正式发布:新版详细介绍

Go1.20简介最新的Go版本1.20在Go1.19发布六个月后发布。它的大部分更改都在工具链、运行时和库的实现中。一如既往,该版本保持了Go1的兼容性承诺。我们期望几乎所...

iOS 10平台SpriteKit新特性之Tile Maps(上)

简介苹果公司在WWDC2016大会上向人们展示了一大批新的好东西。其中之一就是SpriteKitTileEditor。这款工具易于上手,而且看起来速度特别快。在本教程中,你将了解关于TileE...

程序员简历例句—范例Java、Python、C++模板

个人简介通用简介:有良好的代码风格,通过添加注释提高代码可读性,注重代码质量,研读过XXX,XXX等多个开源项目源码从而学习增强代码的健壮性与扩展性。具备良好的代码编程习惯及文档编写能力,参与多个高...

Telerik UI for iOS Q3 2015正式发布

近日,TelerikUIforiOS正式发布了Q32015。新版本新增对XCode7、Swift2.0和iOS9的支持,同时还新增了对数轴、不连续的日期时间轴等;改进TKDataPoin...

ios使用ijkplayer+nginx进行视频直播

上两节,我们讲到使用nginx和ngixn的rtmp模块搭建直播的服务器,接着我们讲解了在Android使用ijkplayer来作为我们的视频直播播放器,整个过程中,需要注意的就是ijlplayer编...

IOS技术分享|iOS快速生成开发文档(一)

前言对于开发人员而言,文档的作用不言而喻。文档不仅可以提高软件开发效率,还能便于以后的软件开发、使用和维护。本文主要讲述Objective-C快速生成开发文档工具appledoc。简介apple...

macOS下配置VS Code C++开发环境

本文介绍在苹果macOS操作系统下,配置VisualStudioCode的C/C++开发环境的过程,本环境使用Clang/LLVM编译器和调试器。一、前置条件本文默认前置条件是,您的开发设备已...