赞
踩
Ultralytics YOLOv8 是一款前沿、最先进(SOTA)的模型,基于先前 YOLO 版本的成功,引入了新功能和改进,进一步提升性能和灵活性。YOLOv8 设计快速、准确且易于使用,使其成为各种物体检测与跟踪、实例分割、图像分类和姿态估计任务的绝佳选择。
随着其官方团队对ultralytics项目的不断完善,其所支持的功能在不断扩展,为此重新对ultralytics项目进行深入分析。
ultralytics项目支持图像分类、目标检测、实列分割、目标跟踪、姿态检测。
在COCO数据集上预训练的YOLOv8 检测,分割和姿态模型可以在这里找到,以及在ImageNet数据集上预训练的YOLOv8 分类模型。所有的检测,分割和姿态模型都支持追踪模式。
所有模型在首次使用时会自动从最新的Ultralytics 发布版本下载。
yolov5与yolov8是最为广泛使用的目标检测项目,通过下图可以看出相同规模下的v5模型通常在速度比v8模型略快,但v8模型比v5要搞5个百分点;同时,v8模型比v5的更高档次模型精度更高。
查看检测文档以获取这些在COCO上训练的模型的使用示例,其中包括80个预训练类别。从公开信息上看,yolov8的最搞coco map为53.9,似乎比yolov5p6(1280输入下 2 6 2^6 26倍下采样)要低,实则有待琢磨
模型 | 尺寸 (像素) | mAPval 50-95 | 速度 CPU ONNX (ms) | 速度 A100 TensorRT (ms) | 参数 (M) | FLOPs (B) |
---|---|---|---|---|---|---|
YOLOv8n | 640 | 37.3 | 80.4 | 0.99 | 3.2 | 8.7 |
YOLOv8s | 640 | 44.9 | 128.4 | 1.20 | 11.2 | 28.6 |
YOLOv8m | 640 | 50.2 | 234.7 | 1.83 | 25.9 | 78.9 |
YOLOv8l | 640 | 52.9 | 375.2 | 2.39 | 43.7 | 165.2 |
YOLOv8x | 640 | 53.9 | 479.1 | 3.53 | 68.2 | 257.8 |
yolo val detect data=coco.yaml device=0
复现yolo val detect data=coco.yaml batch=1 device=0|cpu
复现yolov5的角度信息如下所示,可见其p6版本与正常版本相比将输入更改为1280,在v100 b1的推理下耗时约增加了30%~ 50% ,其精度提升了5~8个百分点。其中模型越小,推理时间增加越少,精度提升越快。yolov5np6提升了8个点,推理时间仅增加2ms(单图推理,增加30%的推理时间
),性能基本上追平v8n模型。将图像size翻倍,计算量翻了4倍,cpu推理时间翻4倍,而gpu推理时间仅增加50%,可以看出单图推理时gpu是存在性能冗余;而在多图推理是,gpu时间差不多翻了4倍
目前v8也可以实现p6结构,参考v5p6结构的精度提升,可以预见v8模型的map提升4~7%,预计能将coco map突破60
这里主要总结基于YOLOv8模型的常规使用
通常使用yolov8都是进行目标检测与实例分割
from ultralytics import YOLO
# 加载模型
model = YOLO("yolov8n.yaml") # 从头开始构建新模型
model = YOLO("yolov8n.pt") # 加载预训练模型(建议用于训练)
# 使用模型
model.train(data="you-data.yaml", epochs=3) # 训练模型
metrics = model.val() # 在验证集上评估模型性能
results = model("https://ultralytics.com/images/bus.jpg") # 对图像进行预测
success = model.export(format="onnx") # 将模型导出为 ONNX 格式
其中yaml的格式如下所示
path: ./yolo-data # dataset root dir
train: train/images # train images (relative to 'path') 118287 images
val: val/images # val images (relative to 'path') 5000 images
test: test/images # 20288 of 40670 images, submit to https://competitions.codalab.org/competitions/20794
# Classes
names:
0: cls1
1: cls2
2: cls3
3: cls4
obb是指旋转框检测,其对应的head代码如下,仅是在原来的detect上新增了一个角度预测分支。与之相应,在ultralytics\utils\loss.py中有v8OBBLoss,其主要包含RotatedTaskAlignedAssigner与RotatedBboxLoss,从中可以看出v8官方实现的obb在网络结构上是通用的,但在loss设计上与yolov5_obb的cls是完全不同的。
class OBB(Detect): """YOLOv8 OBB detection head for detection with rotation models.""" def __init__(self, nc=80, ne=1, ch=()): super().__init__(nc, ch) self.ne = ne # number of extra parameters self.detect = Detect.forward c4 = max(ch[0] // 4, self.ne) self.cv4 = nn.ModuleList(nn.Sequential(Conv(x, c4, 3), Conv(c4, c4, 3), nn.Conv2d(c4, self.ne, 1)) for x in ch) def forward(self, x): bs = x[0].shape[0] # batch size angle = torch.cat([self.cv4[i](x[i]).view(bs, self.ne, -1) for i in range(self.nl)], 2) # OBB theta logits # NOTE: set `angle` as an attribute so that `decode_bboxes` could use it. angle = (angle.sigmoid() - 0.25) * math.pi # [-pi/4, 3pi/4] # angle = angle.sigmoid() * math.pi / 2 # [0, pi/2] if not self.training: self.angle = angle x = self.detect(self, x) if self.training: return x, angle return torch.cat([x, angle], 1) if self.export else (torch.cat([x[0], angle], 1), (x[1], angle)) def decode_bboxes(self, bboxes): """Decode rotated bounding boxes.""" return dist2rbox(self.dfl(bboxes), self.angle, self.anchors.unsqueeze(0), dim=1) * self.strides
目标v8官方团队并未公布v8-obb在dotav1上的精度,但根据博主自行实现的效果来看,map50与v5大致相同,map5095要比v5——obb搞5个百分点左右。
基本使用
其使用代码与正常模型相同
from ultralytics import YOLO
# Load a model
model = YOLO('yolov8n-obb.yaml') # build a new model from YAML
model = YOLO('yolov8n-obb.pt') # load a pretrained model (recommended for training)
model = YOLO('yolov8n-obb.yaml').load('yolov8n.pt') # build from YAML and transfer weights
# Train the model
results = model.train(data='dota128-obb.yaml', epochs=100, imgsz=640)
其所需的数据格式与yolov8-seg类似,跟原始dota也相同(但没有difficult标注),不过其xy都是相对值
yolov8-obb的yaml文件如下所示
# Ultralytics YOLO 声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/380942
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。