news 2026/6/21 22:13:35

旋转框 YOLO 训练代码(YOLOv8-OBB)如何训练无人机视角下多模态红外可见光红外对齐车辆目标检测数据集 多模态目标检测 (RGB + IR 融合) - 旋转目标检测 (带方向角的车辆定位)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
旋转框 YOLO 训练代码(YOLOv8-OBB)如何训练无人机视角下多模态红外可见光红外对齐车辆目标检测数据集 多模态目标检测 (RGB + IR 融合) - 旋转目标检测 (带方向角的车辆定位)

无人机视角下RGB+红外对齐车辆目标检测数据集
模态与视角:无人机搭载双光相机,同时采集 RGB + 红外,成对图像,对应同一视角的交通场景。 规模与分辨率:共 28,439 对 RGB-IR 图像(56,878 张),图像尺寸约 840×712 标注与类别:五类车辆目标——car、truck、bus、van、freight car,提供带方向角的 bbox,适合做多模态检测与旋转框检测

。1

1

无人机视角下RGB+红外对齐车辆目标检测数据集”的结构化表格描述:

属性类别详细描述
数据集名称UAV-RGB-IR-Vehicle(无人机双光车辆检测数据集)
采集平台无人机搭载同步双光相机(可见光 + 热红外)
成像模态成对图像
• RGB(可见光)
• IR(热红外)
严格时空对齐,同一视角、同一时刻
场景类型交通道路场景(城市道路、高速、交叉口等),低空航拍(典型 UAV 视角)
图像总数28,439 对(共56,878 张单模态图像)
图像分辨率840 × 712 像素(每对 RGB 与 IR 分辨率一致)
目标类别5 类车辆
1.car(小轿车)
2.truck(卡车)
3.bus(公交车)
4.van(厢式货车)
5.freight car(货运车/重型载具)
标注形式-旋转边界框(Rotated Bounding Box)
格式:(x_center, y_center, width, height, angle)
- 每个目标包含方向角(orientation angle),支持朝向感知检测
- 所有标注在RGB 与 IR 图像上共享同一坐标系(已对齐)
标注数量未明确给出总实例数,但覆盖密集交通场景,含遮挡、小目标、多尺度目标
文件组织建议<br>dataset/<br>├── rgb/<br>│ ├── 000001.jpg<br>│ └── ...<br>├── ir/<br>│ ├── 000001.jpg<br>│ └── ...<br>└── labels/<br> ├── 000001.txt<br> └── ...<br>
每个.txt文件对应一对图像的旋转框标注
标注格式示例每行:<class_id> <x_center> <y_center> <width> <height> <angle>
(坐标归一化至 [0,1],角度单位:弧度 或 度,需注明)
适用任务-多模态目标检测(RGB + IR 融合)
-旋转目标检测(带方向角的车辆定位)
-跨模态对齐学习
-夜间/低照度鲁棒检测(利用 IR 模态)
-小目标与密集车辆检测
数据特点-严格对齐的双模态数据
-真实交通场景复杂性(光照变化、遮挡、尺度差异)
-提供方向信息,适用于自动驾驶、交通流分析等下游任务
-大规模(>28k 对),适合深度学习训练

✅ 该数据集填补了无人机双光(RGB+IR)车辆检测领域缺乏带旋转框标注的大规模公开数据集的空白,特别适合研究:

  • 多模态特征融合机制
  • 旋转检测模型(如 R3Det、KLD-based Rotated RetinaNet)
  • 昼夜一致性检测系统

针对旋转框目标检测任务,YOLOv8 原版并不直接支持旋转边界框(Rotated Bounding Box, OBB)。为了实现这一功能,我们可以基于 YOLOv8 进行一些修改或使用已有的扩展版本,如 RoI-Transformer 或者 R3Det 等。这里提供一个简化的方案,展示如何基于 YOLOv8 的框架进行自定义以支持旋转框的训练。

一、前提条件

确保你已经安装了必要的依赖库:

pipinstallultralytics opencv-python numpy tqdm

二、数据准备

假设你的数据集按以下结构组织,并且标注格式为x_center, y_center, width, height, angle(角度单位可以是弧度或度数):

UAV-RGB-IR-Vehicle/ ├── rgb/ │ ├── train/ │ ├── val/ │ └── test/ ├── ir/ │ ├── train/ │ ├── val/ │ └── test/ └── labels/ ├── train/ ├── val/ └── test/

每个.txt文件包含每张图片的旋转框标注信息,格式如下:

<class_id> <x_center> <y_center> <width> <height> <angle>

三、配置文件 (uav_rgb_ir_vehicle.yaml)

创建一个配置文件来指定数据路径、类别等信息:

# uav_rgb_ir_vehicle.yamltrain:./UAV-RGB-IR-Vehicle/rgb/trainval:./UAV-RGB-IR-Vehicle/rgb/valnc:5# 类别数量:car, truck, bus, van, freight carnames:-car-truck-bus-van-freight car# 根据需要调整其他参数

四、修改 YOLOv8 模型以支持旋转框

由于 YOLOv8 不直接支持旋转框,我们需要对模型和损失函数做一些修改。这里给出一个简化版的示例,主要集中在损失计算部分。你可以基于现有的 YOLOv8 模型进行修改,或者寻找已有支持旋转框的模型架构作为基础。

修改后的损失函数(obb_loss.py
importtorchimporttorch.nnasnnclassRotatedIoULoss(nn.Module):def__init__(self):super(RotatedIoULoss,self).__init__()defforward(self,pred_boxes,target_boxes):""" pred_boxes: [N, 5] tensor (x_center, y_center, width, height, angle) target_boxes: [N, 5] tensor (x_center, y_center, width, height, angle) """pred_boxes=pred_boxes.clone().detach()target_boxes=target_boxes.clone().detach()pred_boxes[:,4]=pred_boxes[:,4]%180# 角度归一化到[0, 180)target_boxes[:,4]=target_boxes[:,4]%180# 计算旋转矩形的四个顶点坐标defget_vertices(boxes):vertices=[]forboxinboxes:x_center,y_center,w,h,angle=box.tolist()angle_rad=angle*3.1415926/180.0cos_a,sin_a=torch.cos(angle_rad),torch.sin(angle_rad)rect=torch.tensor([[-w/2,-h/2],[w/2,-h/2],[w/2,h/2],[-w/2,h/2]])rotation_matrix=torch.tensor([[cos_a,-sin_a],[sin_a,cos_a]])rotated_rect=torch.mm(rect,rotation_matrix)rotated_rect+=torch.tensor([x_center,y_center])vertices.append(rotated_rect)returntorch.stack(vertices)pred_vertices=get_vertices(pred_boxes)target_vertices=get_vertices(target_boxes)# 计算交并比(IoU)defcompute_iou(polygon1,polygon2):fromshapely.geometryimportPolygon poly1=Polygon(polygon1.cpu().numpy())poly2=Polygon(polygon2.cpu().numpy())iou=poly1.intersection(poly2).area/poly1.union(poly2).areareturniou ious=torch.tensor([compute_iou(p,t)forp,tinzip(pred_vertices,target_vertices)])loss=1-ious.mean()returnloss

五、训练脚本 (train_obb.py)

fromultralyticsimportYOLOimportosfromobb_lossimportRotatedIoULossdefmain():# 创建输出目录os.makedirs("runs/uav_rgb_ir_vehicle",exist_ok=True)# 加载预训练模型(建议使用 yolov8s 或 yolov8m)model=YOLO('yolov8s.pt')# 可替换为 'yolov8m.pt' / 'yolov8l.pt'# 自定义损失函数custom_loss=RotatedIoULoss()# 开始训练results=model.train(data='uav_rgb_ir_vehicle.yaml',# 数据配置文件epochs=100,# 根据收敛情况调整imgsz=840,# 图像尺寸(与数据一致)batch=16,# 根据 GPU 显存调整name='yolov8s_uav_rgb_ir_vehicle',project='runs/uav_rgb_ir_vehicle',device=0,# GPU ID,多卡可用 [0,1]workers=8,cache=False,# 若内存充足可设为 True 加速optimizer='AdamW',lr0=0.01,# 初始学习率lrf=0.01,# 最终学习率 = lr0 * lrfmomentum=0.937,weight_decay=0.0005,warmup_epochs=3,patience=30,# 早停:验证损失不再下降则停止save=True,save_period=10,# 每10个epoch保存一次verbose=True,plots=True,# 生成训练曲线图loss_fn=custom_loss# 使用自定义的旋转框损失函数)print(f"✅ 训练完成!最佳模型路径:{results.save_dir}/weights/best.pt")if__name__=='__main__':main()
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/15 19:00:15

JLink驱动下载官网核心要点:高效完成驱动安装

从官网下载 JLink 驱动&#xff1a;嵌入式开发的“第一公里”实战指南 在你点亮第一个 LED 之前&#xff0c;有一件事必须先搞定——让电脑认得你的调试器。 如果你正在用 ARM 架构做开发&#xff0c;那几乎绕不开 J-Link 。它是 SEGGER 出品的专业级调试探针&#xff0c;性…

作者头像 李华
网站建设 2026/6/14 2:22:05

vue+uniapp+Springboot宁波旅游微信小程序 功能全

文章目录 宁波旅游微信小程序功能摘要 主要技术与实现手段系统设计与实现的思路系统设计方法java类核心代码部分展示结论源码lw获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01; 宁波旅游微信小程序功能摘要 该小程序基于Vue.jsUniappSpringBoot…

作者头像 李华
网站建设 2026/6/21 8:26:02

Java加解密性能下降50%?优化跨境支付数据加密的6个关键技术点

第一章&#xff1a;Java跨境支付数据加密概述在跨境支付系统中&#xff0c;数据安全是核心关注点。由于交易涉及多国网络传输、货币兑换与用户敏感信息&#xff08;如银行卡号、身份认证数据&#xff09;&#xff0c;必须通过高强度的加密机制保障数据的机密性、完整性和不可否…

作者头像 李华
网站建设 2026/6/7 0:08:02

【专家级性能调优】:Java向量API与x64底层指令协同优化实战

第一章&#xff1a;Java向量API与x64架构协同优化概述Java向量API&#xff08;Vector API&#xff09;是Project Panama中引入的重要特性&#xff0c;旨在通过显式支持SIMD&#xff08;单指令多数据&#xff09;操作&#xff0c;提升在现代CPU架构上的计算性能。该API允许开发者…

作者头像 李华
网站建设 2026/6/18 16:10:35

未来升级计划:lora-scripts将增加Web界面控制功能

未来升级计划&#xff1a;lora-scripts将增加Web界面控制功能 在生成式AI快速渗透创作与开发领域的今天&#xff0c;一个现实问题愈发凸显&#xff1a;尽管像LoRA这样的高效微调技术已经成熟&#xff0c;但它的使用方式依然停留在“命令行配置文件”的原始阶段。对于设计师、艺…

作者头像 李华
网站建设 2026/6/15 13:06:50

嵌入式工控主板安装arm版win10下载全过程解析

嵌入式工控主板安装ARM版Win10全过程实战解析 你有没有遇到过这样的困境&#xff1a;手头一块基于NXP i.MX8或高通骁龙的嵌入式工控主板&#xff0c;性能强劲、功耗极低&#xff0c;却因为“只能跑Linux”而无法复用公司现有的WPF界面、.NET框架和大量Win32工业软件&#xff1…

作者头像 李华