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

YoloV8实战:使用YoloV8实现OBB框检测

定向边框(OBB)数据集概述

使用定向边界框(OBB)训练精确的物体检测模型需要一个全面的数据集。本文解释了与Ultralytics YOLO 模型兼容的各种 OBB 数据集格式,深入介绍了这些格式的结构、应用和格式转换方法。数据集使用DOTA。

YOLO支持的 OBB 格式

在Ultralytics YOLO 模型中,OBB 由YOLO OBB 格式中的四个角点表示。这样可以更准确地检测到物体,因为边界框可以旋转以更好地适应物体。其坐标在 0 和 1 之间归一化:

class_index x1 y1 x2 y2 x3 y3 x4 y4

YOLO 在内部处理损失和输出是xywhr 格式,xy表示边界框的中心点、whr表示宽度、高度和旋转角度。

OBB 格式示例

在这里插入图片描述

例如:

0 0.780811 0.743961 0.782371 0.74686 0.777691 0.752174 0.776131 0.749758

YoloV8实现OBB训练、测试

YOLOv8 这里显示的是在DOTAv1数据集上预训练的 OBB 模型。

首次使用时,模型会自动从最新的Ultralytics 版本下载。

模型尺寸
(像素)
mAPtest
50
速度
CPU ONNX
(毫秒)
速度
A100 TensorRT
(毫秒)
params
(M)
FLOPs
(B)
YOLOv8n-obb102478.0204.773.573.123.3
YOLOv8s-obb102479.5424.884.0711.476.3
YOLOv8m-obb102480.5763.487.6126.4208.6
YOLOv8l-obb102480.71278.4211.8344.5433.8
YOLOv8x-obb102481.361759.1013.2369.5676.7

训练

yolo已经有自己配置好的脚本文件,直接调用就可以实现,代码如下:
在这里插入图片描述

from ultralytics import YOLO
import osif __name__ == '__main__':model = YOLO(model="ultralytics/cfg/models/v8/yolov8l-obb.yaml")  # 从头开始构建新模型print(model)# Use the modelresults = model.train(data="DOTAv1.5.yaml", patience=0, epochs=300, device='0', batch=8, seed=42)  # 训练模

如果想加载预训练模型,则使用:

model = YOLO("ultralytics/cfg/models/v8/yolov8l-obb.yaml").load("yolov8l-obb.pt")  # build from YAML and transfer weights

或者直接加载预训练模型,如下:

model = YOLO("yolov8l-obb.pt")  # load a pretrained model (recommended for training)

验证

from ultralytics import YOLO# Load a model
model = YOLO("yolov8n-obb.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom model# Validate the model
metrics = model.val(data="dota8.yaml")  # no arguments needed, dataset and settings remembered
print(metrics.box.map)  # map50-95(B)
print(metrics.box.map50)  # map50(B)
print(metrics.box.map75)  # map75(B)
print(metrics.box.maps)  # a list contains map50-95(B) of each category

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 数据结构---单链表(常见的复杂操作)
  • OpenAI 神秘模型「草莓」预计今秋推出,ChatGPT 将迎重大升级|TodayAI
  • Flutter 自动化测试 -appium-flutter-driver
  • git clone 别人的项目上传到自己的Gitee或者github仓库
  • 小白指南:Linux怎么创建压缩包?又怎么解压缩?
  • 让甲方看得见服务器资源降本增效-软件开发不仅考虑开发成本也要重视长期的运维成本
  • Java基础(4)- IDEA
  • 嵌入式软件开发之状态机与事件驱动分析
  • 鲲鹏服务器之ARM探知
  • QString 初始化
  • 主成分分析PCA通用代码(输出world报告)
  • [大模型]源码安装-Langchain-Chatchat-V0.3
  • 【初阶数据结构】顺序表和链表算法题(下)
  • 图像处理中的对抗性研究:浅谈水印去除技术
  • Golang学习笔记-Golang中的锁
  • 2018一半小结一波
  • Angular2开发踩坑系列-生产环境编译
  • Codepen 每日精选(2018-3-25)
  • FineReport中如何实现自动滚屏效果
  • HomeBrew常规使用教程
  • Lucene解析 - 基本概念
  • maven工程打包jar以及java jar命令的classpath使用
  • Netty+SpringBoot+FastDFS+Html5实现聊天App(六)
  • redis学习笔记(三):列表、集合、有序集合
  • scala基础语法(二)
  • SpiderData 2019年2月23日 DApp数据排行榜
  • Three.js 再探 - 写一个跳一跳极简版游戏
  • vue2.0开发聊天程序(四) 完整体验一次Vue开发(下)
  • 构建二叉树进行数值数组的去重及优化
  • 前端学习笔记之原型——一张图说明`prototype`和`__proto__`的区别
  • 浅谈Golang中select的用法
  • 学习使用ExpressJS 4.0中的新Router
  • 移动互联网+智能运营体系搭建=你家有金矿啊!
  • AI又要和人类“对打”,Deepmind宣布《星战Ⅱ》即将开始 ...
  • 移动端高清、多屏适配方案
  • # wps必须要登录激活才能使用吗?
  • #我与Java虚拟机的故事#连载05:Java虚拟机的修炼之道
  • #我与Java虚拟机的故事#连载11: JVM学习之路
  • ()、[]、{}、(())、[[]]等各种括号的使用
  • (13)[Xamarin.Android] 不同分辨率下的图片使用概论
  • (175)FPGA门控时钟技术
  • (2009.11版)《网络管理员考试 考前冲刺预测卷及考点解析》复习重点
  • (pojstep1.3.1)1017(构造法模拟)
  • (分布式缓存)Redis哨兵
  • (附源码)springboot太原学院贫困生申请管理系统 毕业设计 101517
  • (附源码)ssm失物招领系统 毕业设计 182317
  • (六)c52学习之旅-独立按键
  • (每日一问)操作系统:常见的 Linux 指令详解
  • (三十五)大数据实战——Superset可视化平台搭建
  • (十)【Jmeter】线程(Threads(Users))之jp@gc - Stepping Thread Group (deprecated)
  • (转)甲方乙方——赵民谈找工作
  • .bat批处理(七):PC端从手机内复制文件到本地
  • .bat文件调用java类的main方法
  • .NET Core引入性能分析引导优化
  • .NET Core中Emit的使用