Yolo系列再次更新——清华宣告Yolov10端到端实时对象检测模型_对象_模子
Yolov10端到端实时工具检测
YOLOv10 是清华大学研究职员在YOLO软件包的根本上,引入了一种新的实时目标检测方法,办理了YOLO 以前版本在后处理和模型架构方面的不敷。通过肃清非最大抑制(NMS)和优化各种模型组件,YOLOv10 显著降落了打算开销,并实现了最前辈的性能。大量实验证明,YOLOv10 在多个模型尺度上实现了卓越的精度以及速率。
模型框架
实时物体检测旨在以较低的延迟准确预测图像中的物体种别和位置。YOLO 系列在性能和效率之间取得了平衡,因此一贯处于这项研究的前沿。然而,对 NMS 的依赖和架构上的低效阻碍了最佳性能的实现。YOLOv10 通过为无 NMS 演习引入同等的双重分配和以效率-准确性为导向的整体模型设计谋略,办理了这些问题。
YOLOv10 的构造建立在以前YOLO 模型的根本上,同时引入了几项关键创新。模型架构由以下部分组成:
主干网YOLOv10 中的主干网卖力特色提取,它利用了增强版的 CSPNet(跨阶段部分网络),以改进梯度流并减少打算冗余。颈部颈部设计用于汇聚不同尺度的特色,并将其通报到头部。它包括 PAN(路径聚合网络)层,可实现有效的多尺度特色领悟。一对多头:在演习过程中为每个工具天生多个预测,以供应丰富的监督旗子暗记并提高学习准确性。一对一预测:在推理过程中为每个工具天生一个最佳预测,无需 NMS,从而减少延迟并提高效率。紧张功能设计:
无 NMS 演习:利用同等的双重分配来肃清对 NMS 的需求,从而减少推理延迟。整体模型设计:从效率和准确性的角度全面优化各种组件,包括轻量级分类头、空间通道去耦向下采样和等级勾引块设计。增强的模型功能:纳入大核卷积和部分自把稳模块,在不增加大量打算本钱的情形下提高性能。轻量级分类头:通过利用深度可分离卷积,减少分类头的打算开销。空间信道解耦向下采样:将空间缩减与信道调制解耦,最大限度地减少信息丢失和打算本钱。梯级勾引程序块设计:根据固有阶段冗余调度模块设计,确保参数的最佳利用。YOLOv10 多种型号比拟
YOLOv10 有多种型号,可知足不同的运用需求:
YOLOv10-N:用于资源极其有限环境的纳米版本。YOLOv10-S:兼顾速率和精度的小型版本。YOLOv10-M:通用中型版本。YOLOv10-B:平衡型,宽度增加,精度更高。YOLOv10-L:大型版本,精度更高,但打算资源增加。YOLOv10-X:超大型版本可实现最高精度和性能。yolov10性能比拟
YOLOv10 采取双重标签分配,在演习过程中将一对多和一对一策略结合起来,以确保丰富的监督和高效的端到端支配。同等匹配度量使两种策略之间的监督保持同等,从而提高了推理过程中的预测质量。YOLOv10 在 COCO 等标准基准上进行了广泛测试,显示出卓越的性能和效率。与以前的版本和其他当代探测器比较,YOLOv10 在延迟和准确性方面都有显著提高。
在准确性和效率方面,YOLOv10 优于YOLO 以前的版本和其他最前辈的模型。例如,在 COCO 数据集上,YOLOv10-S 的速率是RT-DETR-R18 的 1.8 倍,而 YOLOv10-B 与 YOLOv9-C 比较,在性能相同的情形下,延迟减少了 46%,参数减少了 25%。YOLOv10-S / X 比RT-DETR-R18 / R101 快 1.8 倍 / 1.3 倍,精度相似。在精度相同的情形下,YOLOv10-B 比 YOLOv9-C 减少了 25% 的参数,延迟韶光缩短了 46%。YOLOv10-L / X 的性能比YOLOv8-L / X 高 0.3 AP / 0.5 AP,参数少 1.8× / 2.3×。
yolov10与其他模型比拟
Yolov10端到端实时工具检测代码实现
在实行yolov10代码前,首先须要安装yolov10代码库,并***干系的预演习模型,模型供应6个尺寸大小的预演习模型供开拓者***利用,其代码实现如下:
import osHOME = os.getcwd()print(HOME)!pip install -q git+https://github.com/THU-MIG/yolov10.git!pip install -q supervision !mkdir -p {HOME}/weights!wget -P {HOME}/weights -q https://github.com/THU-MIG/yolov10/releases/download/v1.1/yolov10n.pt#!wget -P {HOME}/weights -q https://github.com/THU-MIG/yolov10/releases/download/v1.1/yolov10s.pt#!wget -P {HOME}/weights -q https://github.com/THU-MIG/yolov10/releases/download/v1.1/yolov10m.pt#!wget -P {HOME}/weights -q https://github.com/THU-MIG/yolov10/releases/download/v1.1/yolov10b.pt#!wget -P {HOME}/weights -q https://github.com/THU-MIG/yolov10/releases/download/v1.1/yolov10x.pt#!wget -P {HOME}/weights -q https://github.com/THU-MIG/yolov10/releases/download/v1.1/yolov10l.pt!ls -lh {HOME}/weights
***完成后,可以加载一张须要工具检测的图片或者***,这里把图片或者***放在home文件夹下的data文件夹下,当然图片可以放置在任何位置,只须要供应精确的文件位置即可。然后就可以利用命令行实行工具检测了,个中须要供应模型的预演习权重与须要工具检测的图片,个中task为detect工具检测任务,mode为预测,conf为检测置信度,save为是否保存工具检测的结果。
!mkdir -p {HOME}/data!ls -lh {HOME}/data%cd {HOME}!yolo task=detect mode=predict conf=0.25 save=True \model={HOME}/weights/yolov10n.pt \source={HOME}/data/dog.jpeg
运行以上代码,模型会自动实行工具检测任务,并把检测结果图片放置在如下文件夹下。当然可以直接打开文件夹查看图片实行效果。
runs/detect/predict/
工具检测结果
当然yolov10工具检测模型已经集成到了ultralytics里面,可以直策应用ultralytics来利用yolov10工具检测模型,其代码实现如下:
from ultralytics import YOLOv10model = YOLOv10(f'weights/yolov10n.pt')results = model(source=f'data/demo.jpeg', conf=0.25)
实行完成后,其结果保存在result中,可以打出工具的坐标,置信度以及工具标签。
results[0].boxes.xyxy#坐标tensor([[6.7041e+01, 2.5264e+02, 6.4549e+02, 9.6621e+02],[7.4646e-01, 3.4156e+02, 5.4170e+02, 1.2773e+03]], device='cuda:0')results[0].boxes.conf#置信度tensor([0.5090, 0.3536], device='cuda:0')results[0].boxes.cls#标签索引tensor([16., 0.], device='cuda:0') Properties: xyxy (torch.Tensor | numpy.ndarray): Boxes in [x1, y1, x2, y2] format. conf (torch.Tensor | numpy.ndarray): Confidence scores for each box. cls (torch.Tensor | numpy.ndarray): Class labels for each box. id (torch.Tensor | numpy.ndarray, optional): Tracking IDs for each box, if available. xywh (torch.Tensor | numpy.ndarray): Boxes in [x, y, width, height] format, calculated on demand. xyxyn (torch.Tensor | numpy.ndarray): Normalized [x1, y1, x2, y2] boxes, relative to `orig_shape`. xywhn (torch.Tensor | numpy.ndarray): Normalized [x, y, width, height] boxes, relative to `orig_shape`. Methods: cpu(): Moves the boxes to CPU memory. numpy(): Converts the boxes to a numpy array format. cuda(): Moves the boxes to CUDA (GPU) memory. to(device, dtype=None): Moves the boxes to the specified device.
yolov10工具检测结果
当然也可以利用可视化工具,把置信度,标签,坐标等信息标注到工具检测的图片上,其完全代码如下:
import cv2import supervision as svfrom ultralytics import YOLOv10model = YOLOv10(f'weights/yolov10n.pt')image = cv2.imread(f'data/demo.jpeg')results = model(image)[0]detections = sv.Detections.from_ultralytics(results)bounding_box_annotator = sv.BoundingBoxAnnotator()label_annotator = sv.LabelAnnotator()annotated_image = bounding_box_annotator.annotate( scene=image, detections=detections)annotated_image = label_annotator.annotate( scene=annotated_image, detections=detections)sv.plot_image(annotated_image)
也可以实行利用ultralytics进行工具的检测与工具的显示结果,其代码实现如下:
yolov10工具检测结果
from ultralytics import YOLOmodel = YOLO("yolov10n.pt")results = model("image.jpg")results[0].show()
仅仅4行代码就可以实行yolov10工具检测代码,当然这里检测的只是图片,其model函数里面可以直接通报一个***,或者打开摄像头,通报实时的工具检测***。
工具检测结果
无论是速率还是精度,其yolov10在与其他yolo系列比拟都有了一定的提升,相信后期yolo系列的更新,将会带来更多的惊喜。
https://github.com/THU-MIG/yolov10https://huggingface.co/spaces/Xenova/yolov10-webhttps://github.com/THU-MIG/yolov10?tab=readme-ov-file
当然hugging face上面上线了demo体验,可以直接在hugging face上面直接体验yolov10工具检测模型。
本文系作者个人观点,不代表本站立场,转载请注明出处!