YOLO12 改进、魔改|直方图 Transformerm模块HTB ,通过动态范围特征分组、针对性注意力与多尺度融合,提高对遮挡以及多尺度目标的关注能力

        在恶劣天气(如雨、雪、雾)下的图像恢复任务中,传统 Transformer 模型为降低计算量,常将自注意力限制在固定空间范围或仅在通道维度操作,导致难以捕捉长距离空间特征,尤其无法有效处理天气退化像素(如雪花、雨滴)与清晰背景像素的差异。为解决这一局限,研究者提出了 Histogram Transformer Block(HTB),作为 Histoformer 的核心组件,旨在通过动态范围的特征处理机制,实现对长距离相似退化特征的精准捕捉,同时兼顾局部与全局特征融合,提升恶劣天气下图像恢复的效率与精度。

1.HTB 原理

        HTB 的核心原理是通过动态范围特征分组与针对性注意力机制,突破传统卷积和自注意力的局限:

        动态范围直方图自注意力(DHSA):将空间特征按像素强度排序并划分为多个 “强度箱(bin)”,在箱内或箱间应用自注意力。这使得模型能针对性聚焦于动态范围内的相似特征(如同一强度的雪花或雨滴),将长距离的退化像素统一处理,同时通过 Bin-wise 重塑(全局范围特征整合)和 Frequency-wise 重塑(局部精细特征提取),平衡全局与局部信息。

        动态范围卷积:通过对像素进行水平和垂直排序,使卷积操作不再局限于相邻像素,而是在相似强度的像素间进行,增强对天气退化模式的捕捉能力。

        双尺度门控前馈(DGFF):采用 5×5 普通卷积和 3×3 扩张卷积两个并行分支,结合门控机制(通过激活函数生成门控图筛选关键特征),提取多尺度、多范围的特征,弥补单一尺度卷积对复杂天气特征的漏检。

        HTB 的结构以 “特征增强 - 融合” 为核心,包含两个关键模块,整体遵循 “归一化 - 处理 - 残差连接” 的设计:

        整体框架:输入特征先经层归一化(LN),送入 DHSA 模块处理后与原始特征残差相加;再经层归一化,送入 DGFF 模块处理后再次残差相加,输出增强后的特征。

        DHSA 模块:内部包含动态范围卷积(对特征分分支排序后卷积)和直方图自注意力(通过两种重塑机制生成箱内 / 箱间注意力图,再融合),最终将特征恢复至原始空间顺序。

        DGFF 模块:先通过 1×1 卷积扩展通道,分两个分支分别用 5×5 深度卷积和 3×3 扩张深度卷积提取特征,再通过门控机制(Mish 激活后的分支特征与另一分支特征逐元素相乘)融合,最后通过 1×1 卷积压缩通道输出。

2.HTB 习作思路

HTB 在目标检测中的优点

        HTB 凭借动态范围自注意力对长距离相似特征的捕捉能力,能有效聚合恶劣天气下被干扰的目标特征(如被雨雾遮挡的车辆、被雪花覆盖的行人),减少天气噪声对目标特征一致性的破坏;同时,双尺度卷积机制可保留目标的多尺度细节(如小目标的边缘、大目标的局部纹理),使检测器更精准区分目标与背景,尤其在天气导致目标特征模糊或碎片化的场景中,显著提升检测的召回率与定位精度。

HTB 在分割中的优点

        HTB 通过直方图自注意力维持像素间的强度关联,能精准区分相似强度的前景(如目标)与背景(如被天气影响的环境),避免因天气导致的强度混淆;动态范围卷积则增强了对模糊边界(如雾中物体的边缘、雪中植被的轮廓)的特征提取,结合双尺度融合细化边界细节,使分割结果在像素级上更贴合真实目标形态,尤其在天气导致前景与背景过渡模糊的场景中,提升分割的边界精度与区域一致性。

3. YOLO与HTB 的结合          

        YOLO 追求实时性与检测效率,HTB 的动态范围卷积和轻量化注意力设计(通过分箱机制减少计算量)能在增加有限计算负担的同时,增强对恶劣天气下特征的提取能力;其多尺度特征融合可与 YOLO 的特征金字塔网络(FPN)互补,提升 YOLO 对小目标、模糊目标的识别速度与准确性,使其在复杂天气场景中更稳健。

4.HTB 代码部分

YOLO12模型改进方法,快速发论文,总有适合你的改进,还不改进上车_哔哩哔哩_bilibili

 代码获取:YOLOv8_improve/YOLOV12.md at master · tgf123/YOLOv8_improve · GitHub

5. HTB 引入到YOLOv12中


第一: 先新建一个v12_changemodel,将下面的核心代码复制到下面这个路径当中,如下图如所示。E:\Part_time_job_orders\YOLO_NEW\YOLOv12\ultralytics\v12_changemodel。

 ​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​ 

第二:在task.py中导入

 ​​​      ​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​         ​​​​​​​​​​​​​​ ​​​​​​​​​​​​​​​​​​​​​  

第三:在task.py中的模型配置部分下面代码

                   ​​​​​​​​​​​​​​ ​​​​​​​​​​​​​​ ​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​

 

第四:将模型配置文件复制到YOLOV11.YAMY文件中

       ​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​ ​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​ ​​​​​​​

     ​​​​​​​ ​​​​​​​​​​​​​​ ​​​​​​​ ​​​​​​​​​​​​​第五:运行代码

from ultralytics.models import NAS, RTDETR, SAM, YOLO, FastSAM, YOLOWorld
import torch
if __name__=="__main__":# 使用自己的YOLOv8.yamy文件搭建模型并加载预训练权重训练模型model = YOLO("/home/shengtuo/tangfan/YOLO11/ultralytics/cfg/models/11/yolo12_HTB")\# .load(r'E:\Part_time_job_orders\YOLO\YOLOv11\yolo11n.pt')  # build from YAML and transfer weightsresults = model.train(data="/home/shengtuo/tangfan/YOLO11/ultralytics/cfg/datasets/VOC_my.yaml",epochs=300,imgsz=640,batch=4,# cache = False,# single_cls = False,  # 是否是单类别检测# workers = 0,# resume=r'D:/model/yolov8/runs/detect/train/weights/last.pt',amp = True)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

涉水救援机器人cad【12张】三维图+设计书明说

涉水救援机器人设计 摘 要 随着城市化进度的加快,各种水上游乐设备的增多,水上灾害和溺水事件频繁发生,水上救援任务困难重重,特别是在一些水流湍急的环境下进行救援。传统的水上救援工作比较缓慢,大多数是通过投射救…

电子病历:现代HIS系统不可或缺的核心组成部分

一、电子病历在 HIS 系统中扮演了一个什么角色?电子病历在医院信息系统(HIS)中扮演着核心、基础且不可替代的角色,可以说是整个HIS系统的临床信息中枢和业务驱动引擎。它的重要性体现在以下几个方面:1、临床诊疗活动的核心载体&a…

【深度学习】通俗易懂的基础知识:指数加权平均

一、什么是指数加权平均? 指数在数学中表示一个数的幂次运算(如aⁿ中的n),而在统计学中特指随时间变化的几何衰减系数,加权指对不同数据赋予不同权重,使重要数据对结果产生更大影响。指数加权平均指是一种时…

c++-list

C-list std::list是C标准模板库(STL)提供的双向链表容器&#xff0c;它提供了高效的插入和删除操作&#xff0c;特别适合频繁修改的序列。定义在 <list> 头文件中&#xff0c;属于 std 命名空间。该类的接口与常规容器接口基本一致。 模板原型&#xff1a; template <…

【笔试真题】2024秋招京东后端开发岗位-第一批笔试

31.牛牛与切割机 有一个序列 a1,a2,...,ana_1,a_2,...,a_na1​,a2​,...,an​ &#xff0c; 牛牛将对这个序列切割一刀&#xff08;划分分成两个不相交的非空序列&#xff0c;一个序列为 a1,...,apa_1,...,a_pa1​,...,ap​&#xff0c;另一个序列为 ap1,...,ana_{p1},...,a_na…

【整数转罗马数字】

思路计算数字的位数&#xff1a; 通过 while(x) 循环计算输入数字 num 的位数 n。提取各位数字&#xff1a; 将数字 num 的每一位分解并存储到 nums 数组中&#xff0c;顺序为从高位到低位。罗马数字映射&#xff1a; 使用固定数组 Roman 存储罗马数字符号&#xff1a;Roman {…

spring Scheduled注解详解

spirng Scheduled注解详解 用于标记需要安排执行的方法的注解。必须指定 cron、fixedDelay 或 fixedRate 中的恰好一个属性。 被标注的方法必须不接受任何参数。它通常会具有 void 类型的返回值&#xff1b;如果不是这样&#xff0c;那么在通过调度器调用该方法时&#xff0c;返…

新升级超值型系列32位单片机MM32G0005

灵动微推出的新型MM32G0005系列基于ArmCortex - M0内核&#xff0c;具备高可靠性、低功耗、高性价比等特性。Flash升级至64KB&#xff0c;SRAM为4KB&#xff0c;还有1KB Data Flash。Flash全温擦写次数超过10万次。采用24Pin封装&#xff0c;最多有22个IO。QFN20和TSSOP20封装与…

Spark SQL 的详细介绍

Spark SQL 是 Apache Spark 生态系统中用于处理结构化数据的模块&#xff0c;它将 SQL 查询与 Spark 的分布式计算能力相结合&#xff0c;提供了一种高效、灵活的方式来处理结构化和半结构化数据。以下是对 Spark SQL 的详细介绍&#xff1a;1. 核心定位与优势结构化数据处理&a…

【FreeRTOS】空闲任务与钩子函数原理、实现与功能详解

一、FreeRTOS空闲任务概述FreeRTOS中的空闲任务(Idle Task)是系统自动创建的一个特殊任务&#xff0c;具有最低优先级(优先级0)。当没有其他更高优先级的任务运行时&#xff0c;调度器就会运行空闲任务。空闲任务的主要功能系统资源回收&#xff1a;自动清理被删除任务的内存和…

imx6ull-驱动开发篇6——Linux 设备树语法

目录 前言 设备树 设备树概念 DTS、 DTB 和 DTC DTS 语法 .dtsi 头文件 设备节点 /根节点​​ 节点命名与标签 节点层次结构​ 属性数据类型​ 标准属性 compatible 属性 model 属性 status 属性 #address-cells 和#size-cells 属性 reg 属性 ranges 属性 n…

ansible简单playbook剧本例子2

1. 准备主机组[rootansible-master ansible_quickstart]# vim inventory/hosts[web:vars] ansible_port22 ansible_passwordAdmin123456[web] 192.168.100.1822.准备剧本 vim hello.yml--- - hosts: webremote_user: roottasks:- name: Ping the target hostsping:- name: 获取…

EmpService 和 EmpMapper接口的作用

在这个项目中&#xff0c;EmpService 和 EmpMapper 都定义接口&#xff0c;是基于面向接口编程&#xff08;Interface Oriented Programming&#xff0c;IOP&#xff09;的设计思想&#xff0c;这两种接口在项目中承担着不同的职责&#xff0c;具体说明如下&#xff1a; EmpSer…

【语音技术】什么是动态实体

目录 动态实体的定义和维度 1.1 动态实体的资源 1.2 生效维度 1.2.1 应用级 1.2.2 用户级 1.2.3 自定义级 2. 动态实体的上传及使用 2.1 WebAPI 2.1.1 授权认证 2.1.2 上传资源接口 2.1.2.1 参数说明 2.1.2.2 返回说明 2.1.3 查询打包状态 2.1.3.1 参数说明 2.1.…

STM32学习记录--Day3

今天了解了下I2C&#xff1a;1.I2C电路结构I2C通信示意图&#xff1a;数据传输阶段​​​​主→从模式​​&#xff08;写操作&#xff09;&#xff1a;主机控制SCL时钟&#xff08;把SCL拉低&#xff09;主机向SDA线发送数据&#xff08;每次8位1位ACK&#xff09;​​主←从模…

裂变数据看板:5个核心指标决定活动生死​

数据是裂变活动的“指南针”。本文详解曝光量、转化率、裂变系数等5大核心指标&#xff0c;结合工具与案例&#xff0c;教你用数据驱动活动优化&#xff0c;避免“自嗨式裂变”。​为什么数据是裂变的“生死线”&#xff1f;&#xff08;认知重构&#xff09; 很多企业裂变活动…

iOS 类存储 与 C# 类存储 的差异

C# 中类的代码&#xff08;包括方法、属性等成员&#xff09;的存储机制与 Objective-C 有显著差异&#xff0c;其核心依赖于 ​CLR&#xff08;公共语言运行时&#xff09;的方法表&#xff08;Method Table&#xff09;和虚拟方法表&#xff08;vtable&#xff09;机制&#…

Selenium自动化:轻松实现网页操控

selenium自动化 1 什么是 Selenium 自动化 Selenium 是一个用于 Web 应用程序测试的工具&#xff0c;支持多种浏览器&#xff08;如 Chrome、Firefox、Edge 等&#xff09;。WebDriver 是 Selenium 的核心组件&#xff0c;用于控制浏览器行为并执行自动化操作。元素定位是通过…

又开发了一个优雅的小工具!

在开源项目中&#xff0c;Issues是一个强大的功能&#xff0c;用于跟踪bug、功能请求和任务。然而&#xff0c;随着项目的发展&#xff0c;Issues可能会变得难以管理&#xff0c;特别是当你需要离线访问或进行深入分析时。 当然GitHub Issues除了上述功能以外&#xff0c;做在线…

【安装教程】Docker Desktop 安装与使用教程

文章目录一、环境要求二、安装步骤2.1 安装 WSL 2&#xff08;适用于非专业版 Windows 10 及 Windows 11&#xff09;2.2 安装 Docker Desktop2.3 汉化 DDocker Desktop2.4 卸载 Docker Desktop三、使用 Docker3.1验证安装3.2. 拉取镜像3.3. 运行容器3.4. 查看容器3.5.更改容器…