YOLOV8多模态(可见光+红外光目标检测任务,基于Ultralytics官方代码实现)

各位读者麻烦给个star或者fork,求求了。
代码地址

项目主要介绍:
同时训练可见光和红外图片,需要改动网络的结构,对每层的特征进行融合。同时需要对图片质量进行评价,给出自适应的融合权重。
在nn/moudle/block中融合模块中可修改融合策略。具体细节请阅读代码,主要修改有数据增强、读取部分、模型前向传播等。

YOLOV8多模态目标检测

前言:环境配置要求

torch 2.3.1
torchvision 0.18.1
Python 3.8.19
tensorrt 8.5.3.1

1. 数据集DroneVehicle数据集(可见光+热红外)

DroneVehicle数据集下载地址

DroneVehicle 数据集由无人机采集的 56,878 张图像组成,其中一半是 RGB 图像,其余是红外图像。我们为这 5 个类别制作了丰富的注释,其中包含定向边界框。其中,汽车在 RGB 图像中有 389,779 个注释,在红外图像中有 428,086 个注释,卡车在 RGB 图像中有 22,123 个注释,在红外图像中有 25,960 个注释,公共汽车在 RGB 图像中有 15,333 个注释,在红外图像中有 16,590 个注释,厢式车在 RGB 图像中有 11,935 个注释,在红外图像中有 12,708 个注释,货车在 RGB 图像中有 13,400 个注释, 以及红外图像中的 17,173 个注释。
在 DroneVehicle 中,为了在图像边界处对对象进行注释,我们在每张图像的顶部、底部、左侧和右侧设置了一个宽度为 100 像素的白色边框,因此下载的图像比例为 840 x 712。在训练我们的检测网络时,我们可以执行预处理以去除周围的白色边框并将图像比例更改为 640 x 512。
在这里插入图片描述

2. 数据集文件格式(labeles: YOLO格式)

datasets
├── image
│   ├── test
│   ├── train
│   └── val
├── images
│   ├── test
│   ├── train
│   └── val
└── labels
    ├── test
    ├── train
    └── val

images 保存的是可见光图片
image 保存的是热红外图片
labels 公用一个标签(一般来说使用红外图片标签)

3. 权重文件下载

目标检测权重
模型尺寸
(像素)
mAPval
50-95
速度
CPU ONNX
(ms)
速度
A100 TensorRT
(ms)
参数
(M)
FLOPs
(B)
YOLOv8n64037.380.40.993.28.7
YOLOv8s64044.9128.41.2011.228.6
YOLOv8m64050.2234.71.8325.978.9
YOLOv8l64052.9375.22.3943.7165.2
YOLOv8x64053.9479.13.5368.2257.8
旋转框检测权重
模型尺寸
(像素)
mAPtest
50
速度
CPU ONNX
(ms)
速度
A100 TensorRT
(ms)
参数
(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

4. 配置模型yaml文件和数据集yaml文件

分别在yaml文件夹和data文件下进行模型和数据集文件的配置

5. 训练

python train.py  

6. 测试

python test.py  

7. 打印模型信息

python info.py  

8. obb

推理:detect/obbDetect.py
热图绘制: detect/hbbHeapmap.py
onnx推理: detect/obbOnnxdetect.py

9. hbb

推理:detect/hbbDetect.py
热图绘制: detect/hbbHeapmap.py

10. onnx

导出onnx格式文件: export/exportOnnx.py
判断onnx格式和pth格式的输出是否相同: export/campareOnnxWithPth.py
删除导出engine文件的meta信息:export/delEngineMeta.py

11. 绘制框

绘制hbb真实框: plot/plotGt.py
绘制obb真实框 plot/plotObb.py
绘制文件下所有图片的hbb真实框 plot/plotAllGt.py

12. int8量化

从训练集随机挑选测试集作为校准集并进行int8量化: int8Calib/int8Claib.py
删除int8量化的中间文件:int8Calib/delData.sh
多次生成校准集量化: int8Calib/testClaib.sh

13. 检测结果

挑选最好的检测结果:findBestDetect/bestMatch.py
比较原来模型和新的模型的检测结果: findBestDetect/campareOriginWithNew.py

14. 数据处理

裁剪droneVechile数据集的白边: dataProcess/cropData.py
droneVechile数据集从Dota格式转OBB格式:dataProcess/dotaToOBB.py

### YOLOv8在红外与可见光数据集上的训练方法 #### 数据准备 为了使用YOLOv8进行红外和可见光数据的联合训练,首先需要准备好相应的数据集。根据已有资料,可以采用`anti-uav310`开源数据集[^2],其提供了5019张训练图像和1233张验证图像,分别对应于可见光(RGB)和红外(IR)两个模态。这些数据已经被转换为YOLO格式,可以直接用于模型训练。 如果选择其他数据集,例如`DroneVehicle`数据集[^3]或`FLIR`数据集[^4],则可能需要额外的数据预处理工作。对于`FLIR`数据集而言,由于原始标注是以JSON格式存储,因此需将其转换为YOLO所需的TXT格式标签文件。 --- #### 环境配置 在开始训练之前,确保安装了必要的依赖库。以下是推荐的环境版本: - `torch >= 2.3.1` - `torchvision >= 0.18.1` - `Python >= 3.8.19` - `tensorrt >= 8.5.3.1` 可以通过以下命令安装Ultralytics官方支持的YOLOv8库及其依赖项: ```bash pip install ultralytics torch torchvision ``` --- #### 配置文件设置 YOLOv8的训练过程通常通过定义一个YAML配置文件来指定数据路径和其他参数。假设我们使用的是`anti-uav310`数据集,则可以在配置文件中如下定义: ```yaml # dataset.yaml 文件示例 path: ./datasets/anti-uav310 # 数据集根目录 train: train/images # 训练集图片路径 val: val/images # 验证集图片路径 names: 0: drone # 类别名称 ``` 注意:上述路径应指向实际存储的图像文件位置。此外,还需要确认对应的标签文件位于`train/labels`和`val/labels`子目录下。 --- #### 脚本编写与运行 完成数据准备和环境搭建后,即可启动训练流程。以下是一个简单的脚本示例,展示如何调用YOLOv8进行训练: ```python from ultralytics import YOLO # 加载预训练权重或自定义初始化模型 model = YOLO('yolov8n.pt') # 使用小型网络作为起点 # 定义训练参数并执行训练 results = model.train( data='./dataset.yaml', # 数据集配置文件路径 epochs=100, # 总轮数 batch=16, # 批量大小 imgsz=640, # 输入图像尺寸 device='cuda' # GPU加速 (若有可用GPU) ) # 测试模型性能 metrics = model.val() ``` 此代码片段加载了一个轻量化版本的YOLOv8模型,并利用提供的数据集对其进行微调。值得注意的是,在多模态场景下(即同时考虑可见光和红外),建议调整学习率、批量大小以及其他超参数以适应具体任务需求。 --- #### 多模态融合策略 当涉及可见光与红外两类不同传感器输入时,除了单独训练各自的分支外,还可以探索更高级别的特征融合技术。一种常见做法是在骨干网络之后引入注意力机制或其他跨通道交互模块,从而增强模型对异构信息的理解能力。 --- ###
评论 57
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@M_J_Y@

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值