AI 笔记 - 模型优化 - 注意力机制在目标检测上的使用
人脸检测添加注意力机制
- 简介
- 人脸检测的核心挑战与注意力机制的作用
- 人脸检测中的注意力机制
- 作用
- 选型参考
- 基础选择(空间注意力 vs 通道注意力)
- 空间注意力(关注“哪里”重要)
- 通道注意力(关注“什么特征”重要)
- 进阶选择:结合多机制
- CBAM(Convolutional Block Attention Module)
- 多头自注意力(Transformer变体)
- 轻量化选择(稀疏注意力)
- 局部窗口注意力
- 轴向注意力(Axial Attention)
- 针对具体问题的注意力设计
- 多尺度人脸检测
- 遮挡人脸检测
- 小目标检测
简介
人脸检测的核心挑战与注意力机制的作用
挑战 | 注意力机制的解决方案 |
---|---|
局部关键特征(如眼睛、嘴巴) | 空间注意力聚焦人脸局部区域 |
多尺度人脸(大小差异) | 多尺度注意力或金字塔注意力 |
遮挡问题 | 动态抑制遮挡区域的权重 |
背景干扰 | 通道注意力增强人脸相关特征通道 |
计算效率(实时性要求) | 稀疏注意力或局部窗口注意力 |
人脸检测中的注意力机制
在人脸检测模型中,注意力机制通常添加到特征提取网络(如Backbone)或特征融合模块中
作用
增强关键区域的特征:注意力机制能够动态调整特征图中不同区域的权重,使模型更关注人脸区域,抑制背景噪声
处理遮挡和多尺度问题:在遮挡或多尺度人脸的情况下,注意力机制可以帮助模型聚焦于人脸的可见部分或关键特征(如眼睛、鼻子等)
提升检测精度:通过引入注意力机制,模型可以更准确地定位人脸边界框,减少误检和漏检
改善小目标检测:对于小尺度人脸,注意力机制可以增强其特征表示,提升检测效果
选型参考
基础选择(空间注意力 vs 通道注意力)
空间注意力(关注“哪里”重要)
适用场景:需要定位人脸或关键点(如边界框回归)。
典型结构:
# 示例:空间注意力模块(CBAM中的空间注意力)
def spatial_attention(feature):avg_pool = torch.mean(feature, dim=1, keepdim=True) # 通道平均max_pool, _ = torch.max(feature, dim=1, keepdim=True) # 通道最大concat = torch.cat([avg_pool, max_pool], dim=1)spatial_weights = torch.sigmoid(conv(concat)) # 通过卷积生成权重return feature * spatial_weights
通道注意力(关注“什么特征”重要)
适用场景:增强人脸相关特征(如肤色、纹理通道)。
典型结构(SENet风格)
def channel_attention(feature):gap = torch.mean(feature, dim=[2,3], keepdim=True) # 全局平均池化channel_weights = torch.sigmoid(fc(gap)) # 全连接层生成权重return feature * channel_weights
进阶选择:结合多机制
CBAM(Convolutional Block Attention Module)
结构:串联通道注意力 + 空间注意力。
优势:同时优化特征通道和空间位置。
代码实现:
class CBAM(nn.Module):def __init__(self, channels):super().__init__()self.channel_att = ChannelAttention(channels)self.spatial_att = SpatialAttention()def forward(self, x):x = self.channel_att(x)x = self.spatial_att(x)return x
多头自注意力(Transformer变体)
适用场景:需要建模长距离依赖(如遮挡人脸的部分关系)。
注意点:计算成本高,适合小分辨率特征图或轻量化设计。
改进方案:
- 使用局部窗口注意力(如Swin Transformer)
- 在Backbone的高层特征(低分辨率)应用自注意力
轻量化选择(稀疏注意力)
局部窗口注意力
适用场景:移动端或实时检测(如YOLO + 注意力)。
示例:仅在3×3邻域内计算注意力权重。
轴向注意力(Axial Attention)
特点:按行和列分别计算注意力,降低计算复杂度。
针对具体问题的注意力设计
多尺度人脸检测
方案:金字塔注意力(PANet、FPN + Attention)
- 在特征金字塔(FPN)的每一层独立应用注意力
- 高层特征(小目标)用自注意力,低层特征(大目标)用通道注意力。
遮挡人脸检测
方案:动态遮挡感知注意力
- 通过额外分支预测遮挡区域掩码,抑制被遮挡区域的权重。
- 参考论文:Occlusion-Aware R-CNN。
小目标检测
方案:高频细节注意力
- 在浅层网络(高分辨率特征图)应用空间注意力,聚焦细节纹理。
相关文章:
AI 笔记 - 模型优化 - 注意力机制在目标检测上的使用
人脸检测添加注意力机制 简介人脸检测的核心挑战与注意力机制的作用人脸检测中的注意力机制作用 选型参考基础选择(空间注意力 vs 通道注意力)空间注意力(关注“哪里”重要)通道注意力(关注“什么特征”重要࿰…...

AUTOSAR图解==>AUTOSAR_SRS_LIN
AUTOSAR LIN模块分析 目录 LIN模块概述LIN模块架构LIN通信状态流程LIN通信序列LIN配置结构总结1. LIN模块概述 本文档基于AUTOSAR规范SRS_LIN文档,对LIN(Local Interconnect Network)相关模块进行详细分析。主要包括以下几个模块: LIN接口 (LinIf)LIN驱动 (Lin)LIN传输层…...
UML 时序图 使用案例
UML 时序图 UML 时序图 (Sequence Diagram)时序图的主要元素消息类型详解时序图示例时序图绘制步骤时序图的应用场景 UML 时序图 (Sequence Diagram) 时序图是UML(统一建模语言)中用于展示对象之间交互行为的动态视图,它特别强调消息的时间顺序。 时序图的主要元素…...

华为昇腾使用ollama本地部署DeepSeek大模型
文章目录 前言一、本次使用的硬件资源二、Ollama介绍三、Ollama在arm64位的芯片的安装及使用方法总结 前言 本次打算在华为昇腾上面使用ollama进行部署DeepSeek大模型。 一、本次使用的硬件资源 存储资源 内存资源 cpu资源 二、Ollama介绍 Ollama 是一个开源的大型语言…...

多态的总结
什么是多态? 答:多态是多种形态,是为了完成某种行为时,不同对象会产生不同的形态(结合车票例子解释) 2. 什么是重载、重写(覆盖)、重定义(隐藏)? 答:重载的条件是:在同一…...

Windows 高分辨率屏幕适配指南:解决界面过小、模糊错位问题
🖥️ Windows 高分辨率屏幕适配指南:解决界面过小、模糊错位问题 摘要: 在使用高分辨率屏幕时,许多老旧的桌面软件会出现界面显示异常的问题,例如窗口过小、控件错位、文字模糊等。本文提供一套通用解决方案࿰…...
tvalid寄存器的理解
if(!out_axis_tvalid_reg || m_axis_tready ) beginend m_axis_tready 是上拍下一级给的ready信号 out_axis_tvalid_reg是上一拍,本级给下级的valid信号 一共有四种组合,然后可以通过这个if语句,在接下来的begin ... end中,用来…...
C++八股 —— 手撕定时器
文章目录 1. 什么是定时器2. 需要考虑的问题吧3. 接口设计4. 完整代码5. 性能优化 来自:腾讯百度C二面:手撕定时器_哔哩哔哩_bilibili 腾讯、网易、百度C: 手撕定时器 相关概念参考: C八股——函数对象、Lambda、bind、functi…...

K8S-statefulset-mysql-ha
需求 实现一个HA mysql,包括1个master,2个slave。在K8S上已statefulset部署。 mysql HA原理 略 K8S环境需要解决的问题 1、由于使用同一个statefulset配置,因此需要考虑master和slave使用不同的cnf文件。 2、不同pod之间文件的传输 3、…...

【方案分享】展厅智能讲解:基于BLE蓝牙Beacon的自动讲解触发技术实现
【方案分享】展厅智能讲解:基于BLE蓝牙Beacon的自动讲解触发技术实现 让观众靠近展品即可自动弹出讲解页面,是智能展厅的核心功能之一。本文将从软硬件技术、BLE Beacon原理、微信小程序实现、优劣对比与拓展方案五个维度,系统讲解“靠近展台…...

web常见的攻击方式有哪些?如何防御?
Web常见攻击方式及防御策略 SQL注入 (SQL Injection) 详细解析: SQL 注入是一种利用应用程序未正确验证用户输入的漏洞,通过向应用传递恶意 SQL 查询来操纵数据库的行为。这种攻击可能导致敏感数据泄露、篡改或删除。 步骤: 攻击者找到可接受动态参数的应用程序…...

力扣:《螺旋矩阵》系列题目
今天做了一下螺旋矩阵主题的一系列题目 即力扣中的相似题目 还是有所感悟的 接下来一一回顾: 第一题: 59. 螺旋矩阵 II - 力扣(LeetCode) 这题让我们生成一个正方形的矩阵,注意是正方形,不是长方形&a…...

发电厂进阶,modbus TCP转ethernet ip网关如何赋能能源行业
案例分享:稳联技术modbus TCP转ethernet ip网关wl-abc004赋能,发电厂自动化改造,推动能源行业智能化升级 随着全球能源结构转型和“双碳”目标的推进,传统发电厂(如火电、水电、生物质发电)正面临严峻挑战&…...

深入了解linux系统—— 操作系统的路径缓冲与链接机制
前言 在之前学习当中,我们了解了被打开的文件是如何管理的;磁盘,以及ext2文件系统是如何存储文件的。 那我们要打开一个文件,首先要先找到这个文件,操作系统又是如何去查找的呢? 理解操作系统搜索文件 …...
Ansible快速入门指南
Ansible 是一款基于 Python 开发的开源自动化运维工具,主要用于实现服务器配置管理、应用部署、任务自动化执行等功能。它通过 简单的 YAML 脚本(Playbook) 定义任务,结合 SSH 协议 对远程主机进行管理,无需在被控节点…...

华为2025年校招笔试真题手撕教程(一)
一、题目 输入: 第一行为记录的版本迭代关系个数N,范围是[1,100000]; 第二行到第N1行:每行包含两个字符串,第一个字符串为当前版本,第二个字符串为前序版本,用空格隔开。字符串包含字符个数为…...

第9.2讲、Tiny Decoder(带 Mask)详解与实战
自己搭建一个 Tiny Decoder(带 Mask),参考 Transformer Encoder 的结构,并添加 Masked Multi-Head Self-Attention,它是 Decoder 的核心特征之一。 1. 背景与动机 Transformer 架构已成为自然语言处理(NLP…...
postgresql 常用参数配置
#01 - Connection-Authentication 优化点: listen_addresses 0.0.0.0 建议:生产环境应限制为具体IP(如 192.168.1.0/24,127.0.0.1),避免暴露到公网。 ssl off 建议:启用SSL(ssl on…...
Python模块中的私有命名与命名空间管理:深入解析与实践指南
文章大纲 引言 在Python开发中,模块是代码组织和复用的重要方式,而私有命名和命名空间管理则是确保代码清晰和避免冲突的关键机制。私有命名通过特定的命名约定限制了模块中某些内容的访问,有效保护了内部实现细节;命名空间管理则帮助开发者理解标识符的作用域和查找规则…...

基于PCRLB的CMIMO雷达网络多目标跟踪资源调度
针对分布式组网CMIMO雷达多目标跟踪(MTT)场景,博客分析了一种目标-雷达匹配方案与功率联合优化算法。在采用分布式组网融合架构的基础上,推导包含波束和功率分配的后验克拉美罗界(PCRLB)。随后,将该效用函数结合CMIMO雷达系统资源,…...
AtCoder Beginner Contest 407(ABCDE)
A - Approximation 翻译: 给你一个正整数 A 和一个正奇数 B。 请输出与实数 的差最小的整数。 可以证明,在约束条件下,这样的整数是唯一的。 思路: 令。比较来判断答案。 实现: #include<bits/…...

VILT模型阅读笔记
代码地址:VILT Abstract Vision-and-Language Pre-training (VLP) has improved performance on various joint vision-andlanguage downstream tasks. Current approaches to VLP heavily rely on image feature extraction processes, most of which involve re…...

掌握 npm 核心操作:从安装到管理依赖的完整指南
图为开发者正在终端操作npm命令,图片来源:Unsplash 作为 Node.js 生态的基石,npm(Node Package Manager)是每位开发者必须精通的工具。每天有超过 1700 万个项目通过 npm 共享代码,其重要性不言而喻。本文…...

OpenCV CUDA模块特征检测与描述------一种基于快速特征点检测和旋转不变的二进制描述符类cv::cuda::ORB
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 cv::cuda::ORB 是 OpenCV 库中 CUDA 模块的一部分,它提供了一种基于快速特征点检测和旋转不变的二进制描述符的方法,用于…...

Awesome ChatGPT Prompts:释放AI对话潜力的开源利器
项目概览 Awesome ChatGPT Prompts 是由土耳其开发者 Fatih Kadir Akın 发起的开源项目,托管于 GitHub,旨在通过精心设计的提示词模板(Prompts)优化用户与 ChatGPT 的交互体验。项目以 Markdown 和 CSV 格式管理模板,无需复杂编程语言,但需文本处理能力,目前已在 GitH…...
Prompt Tuning:轻量级微调与反向传播揭秘
Prompt Tuning 损失函数与反向传播原理解析 在Transformers中,Prompt Tuning是一种轻量级参数高效微调方法,其核心思想是只训练额外添加的提示词向量(prompt embeddings),而冻结预训练模型的主体参数。 损失函数设计 Prompt Tuning的损失函数与标准的语言模型训练类似,主…...
C++ 继承详解:基础篇(含代码示例)
目录 1. 什么是继承? 2. 继承的访问控制 3. 派生类构造与析构 (1) 构造顺序 (2) 析构顺序 4. 函数隐藏(Name Hiding) 1. 什么是继承? 继承(Inheritance)是面向对象编程(OOP)的…...

PP-YOLOE-SOD学习笔记2
一、解析X-Anylabeling标注后的json格式问题 最近在使用自动标注工具后json格式转化过程中,即标注框的四点坐标转换为两点坐标时,发现json格式的四点顺序是按顺时针方向开始的,那么在转换其实就是删除2、4坐标或者1、3坐标即可。 二、数据集…...
OpenLayers 加载测量控件
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 地图控件是一些用来与地图进行简单交互的工具,地图库预先封装好,可以供开发者直接使用。OpenLayers具有大部分常用的控件&#x…...
.NET ORM开发手册:基于SqlSugar的高效数据访问全攻略
SqlSuger是一个国产,开源ORM框架,具有高性能,使用方便,功能全面的特点,支持.NET Framework和.NET Core,支持各种关系型数据库,分布式数据库,时序数据库。 官网地址:SqlS…...