YOLOv10多模态 结合Transformer与NMS-Free 融合可见光+红外光(RGB+IR)双输入【附代码】

文章目录

  • 前言
  • 视频效果
  • 代码获取
  • 文章概述
  • 必要环境
  • 一、模型训练
    • 1、 定义数据
      • 1.1、数据集结构
      • 1.2、定义data.yaml
    • 2、 运行方法
      • 运行效果
  • 二、模型验证
    • 运行方法
      • 运行效果
  • 三、模型推理
    • 3.1. 推理图像
      • 1. 参数定义
      • 2. 运行方法
      • 运行效果
    • 3.2. 推理视频
      • 1. 参数定义
      • 2. 运行方法
      • 运行效果
  • 四、效果展示
    • 白天
    • 夜间
  • 总结


前言

这期是在上期YOLOv8的基础上,使用YOLOv10结合Transformer完整复现了论文《Cross-Modality Fusion Transformer for Multispectral Object Detection》,nms-free结合transformer结构也算是一个亮点吧,在LLVIP数据集跑出来的MAP大概在95左右,精度不如v8但是参数量和推理速度会快一些,下期视频打算出带界面版的多模态代码,界面预计会支持图像、视频、热力图等功能,大家有啥想法欢迎在评论区留言~

往期博客地址:
地址1:多模态YOLOv8 融合可见光+红外光(RGB+IR)双输入【附代码】

地址2:结合Transformer的YOLOv8多模态 融合可见光+红外光(RGB+IR)双输入 完美复现论文【附代码】

单模态yolov10结构图:
在这里插入图片描述

双模态模型结构图:
在这里插入图片描述


视频效果

YOLOv10多模态 结合Transformer与NMS-Free 融合可见光+红外光(RGB+IR)双输入


代码获取

完整项目获取地址:YOLOv10多模态结合Transformer与NMS-Free融合可见光+红外光双输入


文章概述

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


必要环境

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

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


一、模型训练

1、 定义数据

1.1、数据集结构

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

上图训练案例下载链接:
https://pan.baidu.com/s/1D6CAY1dDfEfa73ezgc_gQg?pwd=pd4y

1.2、定义data.yaml

根据1.1定义的结构 依次填写路径
在这里插入图片描述

2、 运行方法

python train.py --weights yolov10n.pt --cfg models/yolov10n-transformerx3.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 test.py --weights runs\train\exp\weights\best.pt --data data.yaml --batch-size 128

运行效果

运行成功后会输出map0.5、map0.75、map0.5:0.95、P、R以及每个类别的AP等指标
在这里插入图片描述
关键参数详解:

  • –weights: 填写想要评估模型的路径
  • –batch-size: 用于评估的批次,一般是训练时的2倍,可根据实际显存大小进行调整

三、模型推理

3.1. 推理图像

1. 参数定义

parser = argparse.ArgumentParser()
# 检测参数
parser.add_argument('--weights', default=r"weights\transformer_LLVIP\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.3, help='Confidence threshold for detections.')
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.')
opt = parser.parse_args()

关键参数详解:

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

2. 运行方法

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

python detect_image.py

运行效果

在这里插入图片描述

3.2. 推理视频

1. 参数定义

parser = argparse.ArgumentParser()
# 检测参数
parser.add_argument('--weights', default=r"weights\transformer_LLVIP\weights\best.pt", type=str,help='Path to model weights file.')
parser.add_argument('--video_rgb', default=r"RGB.mp4", type=str, help='Path to RGB video file.')
parser.add_argument('--video_ir', default=r"IR.mp4", type=str, help='Path to IR video file.')
parser.add_argument('--conf_thre', type=int, default=0.4, help='Confidence threshold for detections.')
parser.add_argument('--save_video', default=r"./results", type=str, help='Directory to save result videos.')
parser.add_argument('--vis', default=True, action='store_true', help='Visualize frames 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.')
opt = parser.parse_args()

关键参数详解:

  • –weights: 指定用于推理的模型路径,可通过更改此路径来加载不同的权重文件
  • –video_rgb: 指定可见光视频的路径
  • –video_ir: 指定红外光视频的路径
  • –save_image: 指定推理图像保存的路径
  • –vis: 可选的标志,启用后将实时显示推理的图像,默认为True
  • –device: 指定用于处理的设备,默认是“0”表示使用cuda:0,如果设置为“cpu”,则使用CPU处理

2. 运行方法

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

python detect_video.py

运行效果

在这里插入图片描述

四、效果展示

白天

在这里插入图片描述
在这里插入图片描述

夜间

在这里插入图片描述
在这里插入图片描述


总结

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

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

学习交流群:995760755

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/146959.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

构建高可用和高防御力的云服务架构第一部分:深入解析DDoS高防(1/5)

引言 在数字化时代,网络安全已成为全球关注的焦点。随着互联网技术的快速发展和应用的广泛深入,网络安全形势日益严峻。特别是分布式拒绝服务(DDoS)攻击,以其破坏性强、难以防范的特点,对个人、企业乃至国…

Go-知识-定时器

Go-知识-定时器 1. 介绍2. Timer使用场景2.1 设定超时时间2.2 延迟执行某个方法 3. Timer 对外接口3.1 创建定时器3.2 停止定时器3.3 重置定时器3.4 After3.5 AfterFunc 4. Timer 的实现原理4.1 Timer数据结构4.1.1 Timer4.1.2 runtimeTimer 4.2 Timer 实现原理4.2.1 创建Timer…

Type-C 诱骗取电快充协议芯片,支持取电电压5V、9V、12V、15V、20V

‌XSP01A快充协议芯片‌是一款集成USB Power Delivery(PD) 2.0/3.0快充协议的USB-C/Type-C多功能取电芯片 它支持从手机充电器、车充等电源上取电给产品供电。这款芯片的优势在于其价格便宜,同时能够实现快充,对于不需要支持太多协议的设备来说&#x…

DRV8825步进电机驱动详细说明书————含接线图

最近玩步进电机时候,发现步进电机驱动种类多;A4988,drv8825,tb6600,lv8731……;tb6600驱动电流可达4A,1600细分,十分强大,但是体积大,用在平衡车上不太合适。 drv8825加散热器驱动电…

安装SQL Server遇到的问题

出现了一和二的问题,最后还是通过三完全卸载sqlserver安装成功了 一.安装过程中依次报错 1.MOF编译器无法连接WMI服务器。原因可能是语义错误(例如,与现有WMI知识库不兼容)或实际错误(例如WMI服务器启动失败)。 2.PerfLib 2.0计数器removal失败&#xf…

HarmonyOS鸿蒙开发实战(5.0)表情图片聊天案例实践

鸿蒙HarmonyOS NEXT开发实战往期文章必看(持续更新......) HarmonyOS NEXT应用开发性能实践总结 HarmonyOS NEXT应用开发案例实践总结合集 最新版!“非常详细的” 鸿蒙HarmonyOS Next应用开发学习路线!(从零基础入门…

混合开发-JSBridge

1.1 什么是混合开发? 混合开发是一种融合了原生开发和Web开发优势的移动应用开发方式。 具体来说,混合开发通常指的是利用一种框架或平台来创建应用程序,这种程序结合了原生应用的一些功能和特性(比如访问设备的摄像头、相册、GPS、蓝牙等…

DAMODEL——Llama3.1的部署与使用指南

Llama3.1的部署与使用指南 在自然语言处理(NLP)领域,大模型(LLM)是基于深度学习算法训练而成的重要工具,应用范围包括自然语言理解和生成。随着技术的发展,开源的LLM不断涌现,涵盖了…

Windows上通过VirtualBox安装Linux虚拟机

目录 一、安装VirtualBox 1. 下载VirtualBox 2. 安装VirtualBox 二、使用VirtualBox安装Linux系统 1. 下载Linux镜像 2. 使用VirtualBox新建虚拟环境 三、常见问题解决办法 1. Terminal打不开系统字符乱码 2. 窗口小和分辨率不匹配 一、安装VirtualBox 1. 下载Virtu…

10.2 溪降技术:双重检查

目录 10.2 双重检查概览观看视频课程电子书:双重检查场景场景 1场景 2 个人责任示例 1示例 2 总结 10.2 双重检查 概览 俗话说:“江山易改,本性难移”。在我们开始体验峡谷探险时,培养良好的习惯对我们的进一步发展至关重要。在所…

重生之我们在ES顶端相遇第15 章 - ES 的心脏-倒排索引

文章目录 前言为什么叫倒排索引数据结构如何生成如何查询TF、IDF参考文档 前言 上一章,简单介绍了 ES 的节点类型。 本章,我们要介绍 ES 中非常重要的一个概念:倒排索引。 ES 的全文索引就是基于倒排索引实现的。 本章内容建议重点学习&…

实现人体模型可点击

简化需求:实现项目内嵌人体模型,实现点击不同部位弹出部位名称 一:优先3d, 方案:基于three.js,.gltf格式模型,vue3 缺点:合适且免费的3d模型找不到,因为项目对部位有要…

Python实现贝叶斯优化器(Bayes_opt)优化卷积神经网络-双向长短时记忆循环神经网络回归模型(CNN-BiLSTM回归算法)项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 随着大数据和计算能力的提升,深度学习模型在众多领域取得了显著的成功。然而,这…

Nature Communications|一种快速响应的智能可穿戴嗅觉接口(可穿戴电子/柔性电子/人机交互)

香港城市大学于欣格( Xinge Yu)、北京航空航天大学李宇航(Yuhang Li)、中国特种设备检验研究所赵召(Zhao Zhao)和东京大学Takao Someya团队,在《Nature Communications》上发布了一篇题为“Intelligent wearable olfactory interface for latency-free mixed reality and …

HAL库-4.3寸电容式接触屏LCD驱动(未完成)

目录 1.LCD介绍: 工作原理 显示特性 优缺点 2.LCD与OLED的区别: 1. 工作原理 2. 显示效果 3. 屏幕厚度与重量 4. 能耗 5. 寿命与稳定性 6. 应用场景 实验所用模块:ATK-4.3’ TFTLCD 原理图模块与数据手册介绍: LCD驱…

OpenAI GPT o1技术报告阅读(5)-安全性对齐以及思维链等的综合评估与思考

✨继续阅读报告:使用大模型来学习推理(Reason) 原文链接:https://openai.com/index/learning-to-reason-with-llms/ 编码 我们训练了一个模型,在2024年国际信息学奥林匹克竞赛(IOI)中得分213分,排名在第…

大数据实验一: Linux系统安装和使用

一、实验目的 描述Ubuntu的安装过程;使用命令完成Ubuntu中的基础操作; 二、实验平台 操作系统:window系统;内存:4G以上;硬盘:100GB以上;Virtual Box或者VMware;Ubuntu…

当大语言模型应用到教育领域时会有什么火花出现?

当大语言模型应用到教育领域时会有什么火花出现? LLM Education会出现哪些机遇与挑战? 今天笔者分享一篇来自New York University大学的研究论文,另外一篇则是来自Michigan State University与浙江师范大学的研究论文,希望对这个话题感兴趣…

Java反序列化利用链篇 | CC6链分析(通用版CC链)

文章目录 CC6和CC1之间的区别CC6的调用链构造CC6的payload完成TiedMapEntry.getValue()完成TiedMapEntry.hashCode()完成HashMap.hash()及HashMap.readObject()解决hash()方法提前触发的问题 系列篇其他文章,推荐顺序观看~ Java反序列化利用链篇 | JdbcRowSetImpl利…

FastAPI 的隐藏宝石:自动生成 TypeScript 客户端

在现代 Web 开发中,前后端分离已成为标准做法。这种架构允许前端和后端独立开发和扩展,但同时也带来了如何高效交互的问题。FastAPI,作为一个新兴的 Python Web 框架,提供了一个优雅的解决方案:自动生成客户端代码。本…