当前位置: 首页 > news >正文

YOLOv8 OBB 旋转目标检测模型详解与实践

引言

在计算机视觉领域,目标检测是至关重要的任务之一。YOLO(You Only Look Once)系列算法因其高效性和准确性而广受欢迎。YOLOv8 作为稳定版本,在目标检测领域取得了显著成果,依旧能打。本文将深入探讨 YOLOv8 OBB(Oriented Bounding Box,定向边界框) 模型的结构、损失函数、关键代码以及如何进行自定义 OBB 对象检测的完整流程。


在开始之前,弥补上节YOLOV8不同精度模型解析:

旋转对象模型 OBB

1. 旋转对象检测模型结构拆解

YOLOv8 OBB 模型的结构主要分为两个部分:BackboneHead。其中:

以YOLOV8n为例

Backbone 部分
  • 使用 C2f(Cross Convolutional Layer)SPPF(Spatial Pyramid Pooling - Fast) 等模块来增强特征提取能力。
  • 通过多次卷积和下采样操作,逐步提取图像的高级特征。
Head 部分
  • 包含了上采样、Concat 操作以及 C2f 模块,用于融合不同层级的特征。
  • 最终通过 OBB 模块生成定向边界框的预测。

2. 旋转对象损失函数

YOLO OBB 模型使用了三种主要的损失函数:cls(分类)、box(边界框)和 df1(分布焦点损失)

Cls - BCE(Binary Cross Entropy)
  • 用于分类任务,衡量预测类别与真实类别之间的差异。
Box - ProbIOU
  • 衡量预测边界框与真实边界框之间的 IOU(Intersection over Union),并结合概率进行损失计算。

论文地址:https://arxiv.org/pdf/2106.06072v1.pdf

1. 数据准备

进行自定义 OBB 目标检测的第一步是准备数据集,数据集应包含图像文件和对应的标签文件。

OBB 数据集格式
  • YOLO OBB 格式通过 四个角点 指定边界框,其坐标在 0 和 1 之间归一化。
  • 标签文件格式如下:
class_index, x1, y1, x2, y2, x3, y3, x4, y4

2. 模型训练与测试

使用准备好的数据集,可以开始模型的训练过程。

训练命令
yolo obb train data=pen_dataset.yaml model=yolov8s-obbb.pt epochs=25 imgsz=640
测试命令
yolo obb predict model=yolov8n-obbb.pt source=plane_03.jpg

3. 模型导出与推理

训练完成后,可以将模型导出为 ONNX 格式,以便在其他平台进行部署。

导出命令
yolo export model=yolov8s-obbb.pt format=onnx
推理格式
  • 输入格式NCHW=1x3x640x640
  • 输出格式1x6x8400,包含 xywhcr(中心坐标、宽度、高度、旋转角度和置信度)信息。

数据标注与说明

1. 标注工具

为了生成符合 YOLO OBB 格式的标签文件,需要使用专门的标注工具,例如:

  • LabelImg
  • Roboflow
  • CVAT

2. 数据集生成

通过编写代码,可以将标注好的数据转换为 YOLO OBB 格式,包括:

  • 统一不同格式的标注数据。
  • 进行数据增强,如旋转、缩放、裁剪等。

3. 旋转矩阵

在处理旋转目标时,旋转矩阵 是必不可少的。通过旋转矩阵,可以将原始坐标转换为旋转后的坐标,从而准确表示目标的位置和方向。

不同旋转的标注格式:


模型推理与部署

1. 输入输出格式

进行模型推理时,需要明确输入和输出格式:

  • 输入格式1x3x640x640 的张量,NCHW=1x3x640x640
  • 输出格式:包含检测到目标的 边界框信息,1x6x8400。 
  • xywhcr 只有一个类别

2. 部署实践

模型部署到实际应用时,需要考虑性能优化兼容性,可以采用:

  • 量化(Quantization):减少计算量,提高推理速度。
  • 剪枝(Pruning):去除冗余权重,优化模型大小。

3.旋转中心-角度正负

•选择中心,角度 R 旋转 旋转矩阵

•得到四个点坐标


总结

本文详细介绍了 YOLOv8 OBB 模型的结构、损失函数、关键代码以及 自定义 OBB 目标检测 的完整流程。旨在深入理解 YOLOv8 OBB 的工作原理,并应用到实际旋转目标检测任务中。


未来展望

随着计算机视觉技术的发展,旋转目标检测在 无人机监测、遥感图像分析 等领域有广阔的应用前景。YOLOv8 OBB 作为高效检测工具,将在这些领域发挥重要作用。欢迎继续交流!😊🚀


相关文章:

  • 59. 螺旋矩阵 II
  • 深度洞察:特种设备作业考试的核心要点与备考策略
  • 蓝桥杯 修剪灌木
  • opencv初步学习——图像处理3
  • LeetCode BFS层序遍历树
  • 工作记录 2017-02-04
  • 【css酷炫效果】纯CSS实现照片堆叠效果
  • 2025年通信安全员考试题库及答案
  • xxl-job 执行器端服务器的简单搭建
  • OneCyber 平台
  • 杨校老师课堂之编程入门与软件安装【图文笔记】
  • 将Django连接到mysql
  • numpy学习笔记8:数组属性和基础操作的详细描述
  • C++中pow函数的作用是什么,如何使用它?
  • Etcd 服务搭建
  • 【YOLOv8】YOLOv8改进系列(8)----替换主干网络之Swin Transformer
  • 网络编程day2
  • C++中的左移(<<)、右移(>>)运算符
  • Java数据类型 Arrays VS ArraysList VS LikedList 解析
  • 从数据洪流到智能洞察:人工智能如何解锁大数据的价值?
  • 泽连斯基:俄代表团级别低,没人能做决定
  • 就规范涉企行政执法专项行动有关问题,司法部发布解答
  • 今年有望投产里程已近3000公里,高铁冲刺谁在“狂飙”?
  • “80后”德州市接待事务中心副主任刘巍“拟进一步使用”
  • 2025上海科技节本周六启幕,机器人和科学家同走AI科学红毯
  • 《新时代的中国国家安全》白皮书(全文)