目录
毕业设计题目:基于Transformer与多源特征融合的夜间行人检测方法研究
毕业设计题目:基于Transformer与多源特征融合的夜间行人检测方法研究
一、 选题背景及意义
随着智慧城市、自动驾驶和安防监控的快速发展,24小时不间断的视觉感知变得至关重要。然而,夜间环境存在光照不足、图像噪点多、对比度低、细节模糊等问题,导致基于传统CNN的检测模型性能急剧下降。行人作为交通场景中的弱势群体,其夜间检测的准确性和可靠性直接关系到生命安全。近年来,Transformer模型凭借其强大的全局上下文信息捕捉能力和对远程依赖关系的建模,在多个视觉任务中展现出超越CNN的潜力。本研究旨在探索基于Transformer的先进模型,并针对夜间图像的特殊性进行创新性改进,以期显著提升夜间行人检测的精度与鲁棒性,为自动驾驶和智能安防系统的全天候运行提供关键技术支撑。
二、 研究内容与关键技术
-
核心基线模型构建:以经典的Transformer目标检测模型(如DETR、Deformable DETR或Swin Transformer)作为基线(Baseline)。在公开数据集(如NightOwls, ExDark, COCO night subset)上完成模型的训练与测试,作为性能对比的基准。
-
核心创新点 - 多源特征增强机制:
-
创新点一:光照感知的特征增强模块(Illumination-Aware Feature Enhancement, IAFE)
夜间图像的退化主要源于光照不均。本设计拟在Transformer的Backbone之后或Encoder层之间,引入一个轻量级的光照感知子网络。该子网络通过分析输入图像的亮度通道或梯度信息,预测一个光照注意力图(Illumination Attention Map),用于动态地重新加权特征图。在暗区赋予更高权重以增强特征,在过曝区则抑制可能存在的噪声,引导Transformer更关注于信息丰富的区域。 -
创新点二:多波段特征融合(针对多模态数据可选,创新性更强)
若条件允许(如有对应的多模态数据集),可引入热红外图像(Thermal Infrared)作为另一输入源。热成像不受可见光影响,能清晰呈现行人热源。本研究将设计一个双流Transformer融合网络:-
可见光流:使用上述基线模型。
-
热红外流:使用一个结构 simpler 的Transformer分支进行处理。
-
融合模块:在特征层面,设计一个基于交叉注意力的融合模块(Cross-Attention Fusion Module),让可见光特征和热红外特征进行双向信息交互,最终融合生成对光照变化鲁棒的增强特征。
-
-
-
损失函数优化:
针对夜间行人目标常为小目标且分布密集的特点,在DETR的二分匹配损失基础上,引入Focal Loss或GIoU Loss,缓解正负样本不平衡问题并提升边界框的回归精度。
三、 技术路线与实施方案
-
数据准备与预处理:选择并下载夜间行人检测数据集(如NightOwls),进行数据清洗、标注格式统一(如转为COCO格式)、数据增强(如模拟不同噪声、随机亮度调整等)。
-
基线模型复现:使用PyTorch或MMDetection框架,复现选定的基线模型(如Deformable DETR),并在数据集上训练至收敛,记录其性能(mAP, Recall等)。
-
创新模块实现:编码实现IAFE模块或双流融合模块,并将其集成到基线模型中。
-
实验与消融研究:
-
对比实验:将改进后的模型与基线模型、以及经典CNN模型(如Faster R-CNN, YOLOv5)进行性能对比。
-
消融实验:通过控制变量,验证每个创新模块(如IAFE、特定的Loss函数)对最终性能的贡献程度。
-
-
结果分析:定量分析各项指标,定性可视化检测结果(如注意力图、成功/失败的案例),深入分析模型的有效性与局限性。
四、 创新点总结
-
架构新:将先进的Transformer架构系统性地应用于夜间行人检测这一特定且困难的任务中。
-
方法新:提出了光照感知的特征增强机制(IAFE),动态调整特征权重,使其自适应夜间光照条件,该模块轻量且可插拔。
-
思路新(可选):探索了基于交叉注意力的多模态(可见光+热红外)融合策略,为全天候感知提供了更优的解决方案。
创新点
一、核心思想与动机
为什么需要IAFE?
夜间图像的根本问题是光照不均和信噪比低。这意味着:
-
暗区域:特征微弱,细节被噪声淹没,是模型难以检测的“盲区”。
-
亮区域(如车灯、路灯照射区):可能过曝,产生眩光,同样会干扰特征提取。
传统的CNN或Vanilla Transformer以一种“平等”的方式处理图像的所有区域。它们没有显式地“意识到”哪些区域因为太暗而需要被增强,哪些区域因为过曝而需要被抑制。
IAFE要做什么?
IAFE模块旨在充当一个智能的“前灯”和“遮阳板”。它的核心任务是:
-
感知(Awareness):自动评估图像中每个区域的光照条件(明/暗)。
-
增强(Enhancement):根据感知结果,动态地、自适应地重新调整特征图中每个位置的重要性(即权重)。对暗区赋予更高的权重,以增强其贡献;对过亮或噪声多的区域赋予较低权重,以抑制其干扰。
二、IAFE模块的详细设计与工作流程
IAFE是一个轻量级的、可插拔的子网络,通常插入在Backbone(特征提取器)和Transformer Encoder之间。它的工作流程如下:
步骤 1: 提取光照感知线索(Illumination Cue)
我们不能直接使用RGB三通道图像来判断亮度。最有效的方法是转换到其他颜色空间或计算亮度信息。
-
输入:Backbone提取的初始特征图
F_in ∈ R^(B×C×H×W),或者为了降低计算量,也可以直接从原始图像入手。 -
操作:
-
从原始输入图像
I中,分离出亮度通道(Luminance Channel)。-
如果图像是RGB格式,一个常见的近似方法是计算:
L = 0.299 * R + 0.587 * G + 0.114 * B(ITU-R BT.601标准)。得到L ∈ R^(H×W)。 -
或者转换到YUV或Lab颜色空间,并提取Y(亮度)通道。
-
-
对亮度通道
L进行预处理:-
高斯模糊:轻微模糊以平滑噪声。
-
归一化:将值归一化到[0, 1]区间。
-
-
步骤 2: 生成光照注意力图(Illumination Attention Map)
这是模块的核心。我们需要一个小型网络来学习如何根据亮度信息生成权重。
-
输入:上一步得到的亮度信息
L(H×W)。 -
网络结构:一个极简的卷积网络,通常包含2-3层。
-
示例结构:
-
Conv2d(1, 8, kernel_size=3, padding=1) -> ReLU -
Conv2d(8, 1, kernel_size=3, padding=1) -
Sigmoid激活函数(将输出压缩到[0,1]范围)
-
-
-
输出:一张光照注意力图
A_ill ∈ R^(H×W),其尺寸与特征图的空间尺寸相同。这张图上的每个值在0到1之间:-
值接近 1:表示该区域光照条件良好,是“易检测区”,无需过度增强(甚至可能需要轻微抑制过曝)。
-
值接近 0:表示该区域光照极差,是“困难区域”,需要被大幅增强。
-
步骤 3: 特征调制(Feature Modulation)
将生成的注意力图应用到Backbone提取的特征上,完成增强。
-
操作:
-
广播乘法:将注意力图
A_ill在通道维度上进行广播(复制C次),然后与初始特征图F_in进行逐元素相乘(Element-wise Multiplication)。
F_enhanced = F_in * A_ill
-
重要细节(创新关键):这里的操作需要根据你的设计意图进行反转。
-
直觉上,暗区权重小(~0),相乘后特征值会变小,这反而是抑制了。这不符合我们的初衷。
-
因此,正确的做法是使用反转的注意力权重:
F_enhanced = F_in * (1 - A_ill) -
(1 - A_ill)我们称之为 “增强图”。现在,暗区(A_ill ~ 0->(1 - A_ill) ~ 1)权重高,特征被放大;亮区(A_ill ~ 1->(1 - A_ill) ~ 0)权重低,特征被抑制。
-
-
-
可选进阶操作:为了更精细的控制,可以引入一个可学习的缩放因子
γ和偏移量β:
F_enhanced = F_in * (1 + γ * (1 - A_ill)) + β
这样网络可以自学增强的幅度和偏置。
步骤 4: 输出
将增强后的特征图 F_enhanced 送入后续的Transformer Encoder-Decoder进行后续处理。
三、IAFE模块的创新性体现
-
显式物理先验:不同于让网络隐式地学习所有规律,IAFE引入了“光照不均”这个明确的物理先验知识,引导模型更快、更准地关注关键问题。
-
动态自适应:它不是一种固定的图像处理(如直方图均衡化),而是根据每张输入图像的具体情况,动态生成独一无二的增强权重图,是内容自适应的。
-
轻量且可插拔:整个模块参数量极小(只有几个卷积层),计算开销低,可以无缝集成到任何CNN或Transformer架构中,而不破坏其原有结构。
四、伪代码实现(PyTorch风格)
python
复制
下载
import torch
import torch.nn as nn
import torch.nn.functional as F
class IAFE(nn.Module):
"""
Illumination-Aware Feature Enhancement Module
"""
def __init__(self, enhancement_mode='subtractive'):
super(IAFE, self).__init__()
# 小型网络,从亮度图生成Attention Map
self.attention_net = nn.Sequential(
nn.Conv2d(1, 8, kernel_size=3, padding=1),
nn.ReLU(inplace=True),
nn.Conv2d(8, 1, kernel_size=3, padding=1),
nn.Sigmoid() # 输出范围[0, 1]
)
self.enhancement_mode = enhancement_mode
def forward(self, x, rgb_img):
"""
Args:
x (Tensor): Backbone提取的特征图,形状为 [B, C, H, W]
rgb_img (Tensor): 原始的RGB输入图像,形状为 [B, 3, H, W],用于提取亮度信息
Returns:
Enhanced feature map
"""
# 1. 从RGB图像提取亮度信息 L [B, 1, H, W]
lumi = 0.299 * rgb_img[:, 0:1, :, :] + 0.587 * rgb_img[:, 1:2, :, :] + 0.114 * rgb_img[:, 2:3, :, :]
# 2. 生成光照注意力图 A_ill [B, 1, H, W]
illumination_attention = self.attention_net(lumi)
# 3. 根据模式进行特征调制
if self.enhancement_mode == 'subtractive':
# 使用 (1 - A_ill) 作为增强图,暗区权重高
enhancement_map = 1 - illumination_attention
else:
# 或者其他你想要的模式
enhancement_map = illumination_attention
# 4. 将enhancement_map广播到与特征图x相同的通道数,然后相乘
enhanced_x = x * enhancement_map
return enhanced_x
# 在模型中的用法
class MyDetectionModel(nn.Module):
def __init__(self, backbone, transformer, ...):
...
self.backbone = backbone
self.iafe = IAFE() # 实例化IAFE模块
self.transformer = transformer
...
def forward(self, imgs):
# 1. 提取原始图像特征
features = self.backbone(imgs)
# 2. 将特征和原始图像一起送入IAFE进行增强
enhanced_features = self.iafe(features, imgs)
# 3. 将增强后的特征送入Transformer
outputs = self.transformer(enhanced_features)
return outputs
五、如何验证其有效性(在论文中体现)
在你的毕业设计中,你需要通过消融实验(Ablation Study) 来证明IAFE模块的有效性:
-
Baseline:不带IAFE模块的Deformable DETR模型。
-
Baseline + IAFE:加入IAFE模块的模型。
-
关键指标:比较两者在夜间行人测试集上的
mAP(尤其是针对小尺寸行人的AP_S)、Recall等指标。显著的提升(例如2~4个点的mAP)就是IAFE模块价值的最有力证明。 -
可视化:选取几张有代表性的夜间图片,可视化中间生成的
illumination_attention图和enhancement_map。你会看到,模块确实成功聚焦在了暗区域,这将是非常直观的佐证。
486



被折叠的 条评论
为什么被折叠?



