多模态YOLOv8 融合可见光+红外光(RGB+IR)双输入【附代码】

文章目录


前言

最近看不少朋友提到双模态YOLO(RGB+IR)这个方向,感觉挺有意思的,就自己用YOLOv8实现了一下,并用FLIR数据集跑了个模型,效果还不错,精度大概在78左右,后面打算再做一下双模态的v7/v9/v10或是用v8结合transformer之类的看看效果,大家有什么好的想法也可以在评论区告诉我~


视频效果

b站链接:https://www.bilibili.com/video/BV1xnWXeCEbg

多模态YOLOv8 融合可见光+红外光(RGB+IR)双输入


代码获取

完整项目获取地址:多模态YOLOv8融合可见光+红外光(RGB+IR)双输入


文章概述

本文将详细讲解双模态YOLOv8的训练、验证和推理流程。内容涵盖数据结构的定义、代码运行方法以及关键参数的含义


必要环境

  1. 配置yolov8/v10环境 可参考往期博客
    地址:搭建YOLOv10环境 训练+推理+模型评估

  2. 实现过程中参考的论文
    地址:Cross-Modality Fusion Transformer for Multispectral Object Detection


一、模型训练

1、 定义数据

1.1、数据集结构

如下图所示,分别定义红外光与可见光的数据,images文件夹下存放图像 labels图像存放标注结果(.txt)

上图训练案例下载链接:
https://pan.baidu.com/s/14wkGcf3yF-NUzGFxL8DlMQ?pwd=3aya

1.2、定义data.yaml

根据1.1定义的结构 依次填写路径

2、 运行方法

python 复制代码
python train.py --weights yolov8n.pt --cfg models/yolov8n.yaml --data data.yaml --epoch 200 --batch-size 64 --workers 8

运行效果

正常训练时会打印模型在yaml文件中定义的网络结构以及rgb和ir的数据

关键参数详解:

  • --weights: 填写预训练模型路径,不使用预训练模型时这里为空
  • --cfg:填写网络结构的yaml文件路径,此处为models/yolov8n.yaml
  • --data: 填写定义数据集的yaml文件路径
  • --epoch: 模型每轮训练的批次,增加轮数有助于提升模型性能,但同时也会增加训练时间
  • --batch-size: 模型每轮训练的批次,可根据实际显存大小进行调整
  • --workers: 设置数据加载进程数 linux系统下一般设置为8或16,windows系统设置为0

二、模型验证

训练结束后会在最后一轮输出模型的完整指标,但如果想要单独评估一下模型,可以通过如下命令来进行

运行方法

python 复制代码
python test.py --weights runs\train\exp\weights\best.pt --data data.yaml --batch-size 128 --conf-thres 0.001 --iou-thres 0.5

运行效果

运行成功后会输出map0.5、map0.75、map0.5:0.95、P、R以及每个类别的AP等指标

关键参数详解:

  • --weights: 填写想要评估模型的路径
  • --batch-size: 用于评估的批次,一般是训练时的2倍,可根据实际显存大小进行调整
  • --conf-thres: 置信度阈值,设置的越大保存的目标框越精确,同理目标数量会减小,评估阶段是默认设置为0.001,可根据实际需求进行调整
  • --iou-thres: nms阈值,设置的越小保存的目标框越精确,同理目标数量会减小,评估阶段是默认设置为0.5,可根据实际需求进行调整

三、模型推理

1. 参数定义

python 复制代码
parser = argparse.ArgumentParser()
# 检测参数
parser.add_argument('--weights', default=r"weights\weights\best.pt", type=str, help='Path to model weights file.')
parser.add_argument('--image_rgb', default=r"test\rgb", type=str, help='Directory for RGB images.')
parser.add_argument('--image_ir', default=r"test\ir", type=str, help='Directory for IR images.')
parser.add_argument('--conf_thre', type=int, default=0.4, help='Confidence threshold for detections.')
parser.add_argument('--iou_thre', type=int, default=0.5, help='IoU threshold for NMS.')
parser.add_argument('--save_image', default=r"./results", type=str, help='Directory to save result images.')
parser.add_argument('--vis', default=True, action='store_true', help='Visualize images with detections.')
parser.add_argument('--device', type=str, default="0", help='Device: "0" for GPU, "cpu" for CPU.')
parser.add_argument('--imgsz', type=int, default=640, help='Input image size for inference.')
parser.add_argument('--merge_nms', default=False, action='store_true', help='Merge detections across classes.')
opt = parser.parse_args()

关键参数详解:

  • --weights: 指定用于推理的模型路径,可通过更改此路径来加载不同的权重文件
  • --image_rgb: 指定包含可见光图像的路径
  • --image_ir: 指定包含红外光图像的路径
  • --save_image: 指定推理图像保存的路径
  • --vis: 可选的标志,启用后将实时显示推理的图像,默认为True
  • --device: 指定用于处理的设备,默认是"0"表示使用cuda:0,如果设置为"cpu",则使用CPU处理
  • --merge_nms: 可选标志,启用后将在NMS过程中合并不同类别的检测结果,默认False

2. 运行方法

改好上述参数后直接运行detect_slim.py即可

python 复制代码
python detect_slim.py

运行效果

四、效果展示

白天

夜间


总结

本期博客就到这里啦,喜欢的小伙伴们可以点点关注,感谢!

最近经常在b站上更新一些有关目标检测的视频,大家感兴趣可以来看看 https://b23.tv/1upjbcG

学习交流群:995760755

相关推荐
AI浩8 小时前
自监督 YOLO:利用对比学习实现标签高效的目标检测
学习·yolo·目标检测
newxtc16 小时前
【江苏政务服务网-注册_登录安全分析报告】
人工智能·安全·yolo·政务·1024程序员节·安全爆破
王哈哈^_^17 小时前
【数据集】【YOLO】【目标检测】口罩数据集,口罩佩戴识别数据集 1971 张,YOLO佩戴口罩检测算法实战训练教程。
人工智能·算法·yolo·目标检测·计算机视觉·ai·视觉检测
深度学习lover1 天前
<项目代码>yolo螺丝螺母识别<目标检测>
人工智能·python·深度学习·yolo·目标检测·计算机视觉·螺丝螺母识别
tt5555555555551 天前
YOLOv5完整教程(二)
yolo
昵称是6硬币1 天前
YOLO26论文精读(逐段解析)
人工智能·深度学习·yolo·目标检测·计算机视觉·yolo26
王哈哈^_^2 天前
【数据集】【YOLO】【目标检测】农作物病害数据集 11498 张,病害检测,YOLOv8农作物病虫害识别系统实战训推教程。
人工智能·深度学习·算法·yolo·目标检测·计算机视觉·1024程序员节
少林and叔叔2 天前
基于yolov5.7.0的人工智能算法的下载、开发环境搭建(pycharm)与运行测试
人工智能·pytorch·python·yolo·目标检测·pycharm
王哈哈^_^2 天前
【数据集】【YOLO】【目标检测】建筑垃圾数据集 4256 张,YOLO建筑垃圾识别算法实战训推教程。
人工智能·深度学习·算法·yolo·目标检测·计算机视觉·数据集
B站计算机毕业设计之家2 天前
计算机视觉:YOLO实现目标识别+目标跟踪技术 pyqt界面 OpenCV 计算机视觉 深度学习 计算机(建议收藏)✅
python·opencv·yolo·计算机视觉·目标跟踪·口罩识别