
本文核心贡献如下:


摘要:裂缝检测在基础设施检测和结构健康监测中扮演着重要角色。然而,传统的人工检测方法耗时费力,难以扩展到大规模监测场景。此外,裂缝通常表现为细长、低对比度的结构,且易受背景噪声影响,这给现有目标检测模型在精细特征表示和精确定位方面带来了挑战。本研究提出了一种改进的基于YOLO的架构,集成了注意力机制,称为 YOLO-AMC,以增强自动化裂缝检测性能。基于 YOLOv11,移除了原始的 C2PSA 模块,并在颈部的多尺度特征融合层中引入了多种注意力机制,包括全局注意力机制、残差卷积块注意力模块和混洗注意力,以加强跨尺度特征集成。实验结果表明,所提出的 YOLO-AMC 架构在多个评估指标上 consistently 优于基线 YOLOv11n 和 YOLOv8n 模型。在所评估的注意力模块中,GAM 取得了最佳的检测性能,在测试数据集上获得了 mAP@0.5 = 0.9917 和 mAP@0.5:0.95 = 0.9506,高于 YOLOv11n 和 YOLOv8n。此外,在保持 7.6 GFLOPs 的合理计算复杂度的同时,所提出的模型在高性能 GPU 平台和资源受限的边缘设备上均实现了实用的推理性能,在 NVIDIA RTX 4090 平台上达到 110.95 FPS,在 Raspberry Pi 5 边缘设备上达到约 5 FPS。这些结果证明了模型在精度与部署效率之间的良好权衡。
# yolo_amc.py
# YOLO-AMC: Improved YOLO Architecture with Attention Mechanisms for Building Crack Detection
# 基于 Ultralytics YOLOv11 框架的伪代码实现
import torch
import torch.nn as nn
from ultralytics import YOLO
# ========== 1. 自定义注意力模块 ==========
class GAM(nn.Module):
"""Global Attention Mechanism"""
def __init__(self, channels):
super().__init__()
self.channel_attention = nn.Sequential(
nn.AdaptiveAvgPool2d(1),
nn.Conv2d(channels, channels, 1),
nn.Sigmoid()
)
self.spatial_attention = nn.Sequential(
nn.Conv2d(channels, channels, 3, padding=1),
nn.Sigmoid()
)
def forward(self, x):
ca = self.channel_attention(x) * x
sa = self.spatial_attention(ca) * ca
return sa
class ShuffleAttention(nn.Module):
"""Shuffle Attention (SA)"""
def __init__(self, channels, groups=4):
super().__init__()
self.groups = groups
self.channel_att = nn.Sequential(
nn.AdaptiveAvgPool2d(1),
nn.Conv2d(channels // groups, channels // groups, 1),
nn.Sigmoid()
)
self.spatial_att = nn.Sequential(
nn.Conv2d(channels // groups, 1, 3, padding=1),
nn.Sigmoid()
)
def forward(self, x):
b, c, h, w = x.shape
g = self.groups
x_group = x.view(b, g, c//g, h, w)
# 通道注意力
ca = self.channel_att(x_group.mean(dim=[3,4], keepdim=True)) * x_group
# 空间注意力
sa = self.spatial_att(ca) * ca
out = sa.view(b, c, h, w)
# channel shuffle
out = out.view(b, g, c//g, h, w).transpose(1,2).contiguous().view(b, c, h, w)
return out
class ResCBAM(nn.Module):
"""Residual CBAM"""
def __init__(self, channels):
super().__init__()
self.channel_att = nn.Sequential(
nn.AdaptiveAvgPool2d(1),
nn.Conv2d(channels, channels//16, 1),
nn.ReLU(),
nn.Conv2d(channels//16, channels, 1),
nn.Sigmoid()
)
self.spatial_att = nn.Sequential(
nn.Conv2d(2, 1, 7, padding=3),
nn.Sigmoid()
)
def forward(self, x):
ca = self.channel_att(x) * x
# spatial attention
avg_out = torch.mean(ca, dim=1, keepdim=True)
max_out, _ = torch.max(ca, dim=1, keepdim=True)
spatial_input = torch.cat([avg_out, max_out], dim=1)
sa = self.spatial_att(spatial_input) * ca
return x + sa # residual connection
# ========== 2. 修改YOLO模型结构(移除C2PSA,在颈部插入注意力) ==========
def create_yolo_amc(attention_type='GAM', attn_positions=['A3']):
"""
加载YOLOv11基线,移除C2PSA,在颈部指定位置插入注意力模块
注意:实际使用时需结合Ultralytics YOLO API进行模型修改,此处为伪代码示意
"""
# 加载预训练模型
model = YOLO('yolo11n.pt')
# 获取网络结构(伪代码)
# 1. 移除 backbone 中的 C2PSA 模块
# 2. 在 neck 的 A1~A4 层后插入对应的注意力模块
# 具体实现需覆盖模型层,这里简化
return model
# ========== 3. 训练配置 ==========
def train_yolo_amc(model, data_yaml, epochs=800, imgsz=640, batch=32):
"""
使用与YOLOv11相同的超参数训练YOLO-AMC
"""
results = model.train(
data=data_yaml,
epochs=epochs,
imgsz=imgsz,
batch=batch,
optimizer='SGD',
lr0=0.01,
momentum=0.937,
weight_decay=0.0005,
patience=100,
seed=0,
device=0,
project='yolo_amc_exp',
name=attention_type
)
return results
# ========== 4. 评估与推理 ==========
def evaluate_model(model, data_yaml):
"""评估模型性能,输出mAP@0.5, mAP@0.5:0.95等"""
metrics = model.val(data=data_yaml)
print(f"mAP@0.5: {metrics.box.map50:.4f}")
print(f"mAP@0.5:0.95: {metrics.box.map:.4f}")
print(f"Precision: {metrics.box.mp:.4f}")
print(f"Recall: {metrics.box.mr:.4f}")
return metrics
def inference_on_edge(model_path, image_path):
"""边缘设备推理示例(ONNX)"""
# 转换为ONNX
model = YOLO(model_path)
model.export(format='onnx', imgsz=640)
# 在Raspberry Pi 5上运行
import onnxruntime as ort
session = ort.InferenceSession('model.onnx')
# 图像预处理及推理(略)
# 返回检测结果
# ========== 5. 主流程 ==========
if __name__ == '__main__':
# 1. 创建YOLO-AMC模型(以GAM为例,插入A3位置)
model = create_yolo_amc(attention_type='GAM', attn_positions=['A3'])
# 2. 训练(需要准备crack_dataset.yaml)
train_yolo_amc(model, data_yaml='crack_dataset.yaml')
# 3. 评估
evaluate_model(model, 'crack_dataset.yaml')
# 4. 边缘部署
inference_on_edge('best.pt', 'test_crack.jpg')裂缝检测在基础设施检测和结构健康监测中扮演着重要角色。表面裂缝被广泛认为是材料退化和潜在结构失效的早期指标,因此对于桥梁、道路和建筑物的安全评估与维护决策至关重要。传统的裂缝检测主要依赖人工目视检查,这种方法耗时费力,容易受到主观判断和疲劳的影响,难以应用于大规模基础设施监测。
随着计算机视觉和深度学习的发展,基于卷积神经网络的自动化裂缝检测方法已越来越多地取代传统图像处理方法。Cha 等人 [1] 采用 Faster R-CNN 进行结构损伤检测,证明了深度学习在识别多种类型缺陷方面的有效性。Fan 等人 [2] 利用深度卷积神经网络进行道路裂缝识别,表明深层特征可以显著提高检测精度。随着实时检测系统在实际应用中变得越来越重要,在保持高效推理速度的同时实现高检测精度已成为一个关键研究问题 [3]。
在现有的目标检测模型中,YOLO 系列因其在精度和速度之间的良好平衡而被广泛采用。然而,在裂缝检测场景中,裂缝通常表现为细长、低对比度且不规则的结构,这对标准 YOLO 架构的特征提取和定位提出了更大的挑战。YOLOv11 [6] 引入了 C2PSA 模块以增强空间感知能力。然而,精细的裂缝特征在多尺度下采样过程中仍可能被削弱,在平衡检测精度与计算成本方面仍有提升空间。
为了增强卷积神经网络对关键特征的表示能力,注意力机制已被广泛集成到目标检测架构中。通过重新加权通道和空间维度的特征响应,注意力模块使网络能够聚焦于信息丰富的区域,同时抑制背景噪声。先前的研究表明,将注意力模块嵌入到基于 YOLO 的模型中可以改善小尺度或弱特征目标的检测 [7, 8, 9]。在我们先前的工作 [10] 中,将注意力模块集成到 YOLOv11 架构中,在保持实用推理效率的同时提高了裂缝检测性能。这些发现表明,合适的注意力设计可以在不显著增加模型复杂度的情况下进一步提高检测精度。
尽管注意力机制已显示出良好的效果,但设计一种高效、注意力增强的 YOLO 架构,在保持计算效率的同时提高检测性能,仍然是一个开放性问题。因此,本研究提出了一种改进的基于 YOLO 的架构,集成了注意力机制,称为 YOLO-AMC,它建立在 YOLOv11 框架之上。图 1 展示了所提框架的整体架构,其中注意力模块被集成到颈部,以增强跨多尺度的裂缝相关特征融合。

本工作的主要贡献总结如下:
随着基础设施的老化,裂缝检测已成为结构健康监测领域的一个重要研究课题。早期的裂缝检测方法主要依赖传统的图像处理技术和手工特征。然而,在复杂背景、光照变化或低对比度条件下,这些方法往往难以保持稳定的检测性能。近年来,随着深度学习的进步,卷积神经网络已被广泛应用于裂缝检测任务,并在精度和泛化性能方面表现出显著提升 [11, 12]。
为了提高裂缝定位能力,后续研究逐渐从图像分类扩展到目标检测和像素级分割方法。Li 等人 [13] 采用全卷积网络来定位损伤区域,而 Yang 等人 [14] 利用特征金字塔结构和分层特征融合来增强多尺度裂缝的表示。他们的结果表明,多级特征集成在检测精细裂缝模式中起着关键作用。尽管 U-Net 等像素级分割模型能够提供更精确的轮廓信息,但它们通常涉及更高的计算成本,这限制了它们在实时检测或边缘设备部署场景中的适用性 [15]。
在目标检测领域,YOLO 系列因其单阶段检测架构而被广泛用于实时视觉任务,该架构在推理速度和检测精度之间提供了良好的平衡。自 YOLOv3 引入多尺度预测以来,小目标检测性能得到了显著提升 [16]。YOLOv4 通过网络架构优化和改进的训练策略进一步提升了性能,在实际应用中表现出更好的稳定性和准确性 [17]。Zhou 等人 [18] 将 YOLOv4 应用于隧道裂缝检测,证明了 YOLO 框架用于工程检测任务的可行性。
尽管多尺度预测改进了小物体的检测,但裂缝通常表现出细长、低对比度且不规则的模式。经过多次下采样和特征融合后,弱特征很容易被高层语义信息和背景噪声所抑制 [19, 20]。在大多数基于 YOLO 的架构中,颈部负责跨尺度特征融合,通常使用特征金字塔结构和路径聚合网络来集成多级信息。不同层次的特征包含不同的空间分辨率和语义表示,如果在适当阶段未进行增强,精细的裂缝特征可能会在融合过程中被削弱,从而影响整体检测性能。
为了增强深度神经网络对关键特征的表示能力,近年来注意力机制已被广泛引入各种视觉模型。CBAM 通过依次应用通道注意力和空间注意力来改进特征判别能力,使网络能够聚焦于信息更丰富的区域。GAM 强调通道和空间信息之间的全局交互,以增强跨维度特征关系。Shuffle Attention 采用通道分组和特征重组,在保持轻量级架构的同时增强特征表示。
注意力模块通常通过重新加权操作来调整特征分布,其有效性与原始网络结构密切相关。先前的研究表明,在具有残差连接的网络中,注意力模块的调制效果可能受到主分支信号的影响 [24, 25],这表明注意力机制的性能增益不仅取决于模块设计本身,还取决于网络内的集成策略和插入层次。
在目标检测任务中,注意力机制已被集成到基于 YOLO 的模型中,以改进小尺度或弱特征目标的检测。Chien 等人 [26] 将多个注意力模块嵌入到 YOLO 架构中,并在检测细长物体方面取得了改进的性能。类似的方法也已应用于裂缝检测和路面缺陷检测任务 [27, 28],证明注意力机制对于增强低对比度和精细结构特征是有效的。随着对边缘设备部署需求的增加,最近的研究进一步关注在有限计算资源下平衡模型效率和特征增强 [29, 30]。Saeheaw 等人 [31] 将特征增强和注意力模块引入 YOLOv11 的特征融合层,表明在适当层次增强特征可以在保持可接受计算成本的同时提高检测性能。
此外,多尺度特征融合在小目标检测中起着关键作用。不同层次的特征包含不同的空间分辨率和语义信息,如果在融合节点没有适当的增强,弱特征可能会在聚合过程中被抑制 [15, 32]。Lin 等人 [33] 和 Tan 等人 [34] 指出,特征金字塔结构和模块配置的设计直接影响检测精度和推理效率。因此,在设计注意力增强的检测架构时,需要考虑模块类型、插入位置和计算成本之间的平衡。
本研究旨在提高基于 YOLO 的架构在裂缝检测任务中的性能,并提出了一个增强模型,命名为 YOLO-AMC,该模型将注意力机制集成到基线检测框架中。基于 YOLOv11 框架,本研究将全局注意力机制、混洗注意力和残差 CBAM 融入网络,并系统研究了不同注意力集成策略对检测精度和推理效率的影响。
本研究采用 YOLOv11 作为基线架构。该模型由三个主要部分组成,即骨干网络、颈部和检测头,分别负责层次化特征提取、多尺度特征融合以及最终分类和边界框回归。遵循 YOLO 系列用于实时目标检测的设计理念,YOLOv11 在模型复杂度和推理效率之间提供了良好的平衡,使其适用于实时检测场景。
原始 YOLOv11 架构在骨干网络中引入了 C2PSA 模块以增强空间特征表示。然而,在裂缝检测任务中,裂缝通常表现为细长、低对比度的结构,其判别信息高度依赖于精细纹理和弱特征响应。在这种情况下,内置的注意力机制可能与外部引入的注意力模块相互作用,使得难以独立评估不同注意力设计对特征增强的贡献。
为了确保公平比较,本研究移除了原始 YOLOv11 架构中的 C2PSA 模块,得到一个没有内置注意力结构的简化基线模型。这一修改使得后续引入的注意力模块能够在一致的架构条件下进行评估,以便进行系统比较。对于整体性能评估,使用原始 YOLOv11 和 YOLOv8 作为主要基线模型,并将它们的性能与所提出的 YOLO-AMC 架构进行比较,以验证改进模型在裂缝检测任务中的有效性以及实际部署的可行性。
为了分析不同注意力机制在 YOLO 架构中的行为差异,选择了三个具有不同结构特征的代表性注意力模块:全局注意力机制、混洗注意力和残差 CBAM。Res-CBAM 源自原始的 CBAM [21],并按照 YOLOv8-AM 中采用的设计实现。
设输入特征图定义为:

3.2.1 全局注意力机制 (GAM)
全局注意力机制对通道和空间维度的全局依赖关系进行建模。它通过依次应用通道注意力和空间注意力来执行特征调制,可表示如下:

3.2.2 混洗注意力 (SA)
混洗注意力采用分组策略结合通道拆分,以降低计算复杂度的方式进行注意力建模。输入特征图被分成多个通道组,并在每个组内应用通道注意力和空间注意力。这种设计限制了注意力计算的范围,同时提供了有效的特征调制,使得该模块能够在增强特征表示的同时保持较低的计算成本 [23]。

3.2.3 残差块注意力模块 (ResBlock-CBAM)
ResBlock-CBAM 是一个源自原始 CBAM [21] 的残差注意力模块。在本研究中,其实现遵循 YOLOv8-AM [26] 中采用的 Res-CBAM 设计,其中通道注意力和空间注意力与残差连接相结合,以保留原始特征信息的直接传播。
ResBlock-CBAM 的操作可表示如下:

其中 F' 表示经通道注意力细化后的中间特征,F'' 表示经空间注意力进一步调制后的特征。
通过引入残差连接,将注意力细化后的特征与原始输入特征相加,有助于保留低级和中级特征信息,同时稳定整个网络中的特征传播。与没有残差连接的注意力模块相比,ResBlock-CBAM 允许网络在应用注意力调制的同时保留原始特征流,从而降低了对不同特征层变化的敏感性。因此,该模块在不同特征尺度上倾向于提供更稳定的特征细化,并可能提高目标检测任务中多尺度特征融合的鲁棒性。
近年来,注意力机制已在目标检测任务中展现出强大的性能 [26, 35, 36, 37]。通过引入注意力机制,模型可以更有效地增强关键特征的表示,同时抑制无关或噪声信息,从而提高整体检测性能。
在本研究中,注意力模块被集成到 YOLOv11 的颈部结构中,并移除了原始的 C2PSA 模块,以便评估外部注意力模块对模型性能的贡献。选择颈部作为插入位置,因为它是 YOLO 架构中负责多尺度特征融合的核心组件。由于裂缝通常呈现跨尺度分布和细微的视觉特征,其判别信息可能出现在不同分辨率的特征图中。因此,在特征融合过程中引入注意力机制可以增强跨多个尺度的裂缝相关特征的集成。

为了构建适用于裂缝检测的注意力增强架构,在 YOLOv11 的颈部模块中定义了四个候选插入位置,记为 A1、A2、A3 和 A4,如图 2 所示。这些位置位于多尺度特征融合路径上的不同节点,对应于特征金字塔中具有不同空间分辨率和语义层次的特征图。在 YOLO-AMC 架构中,不同层次的特征图在空间分辨率和语义抽象程度上有显著差异。具体来说,A1 对应于分辨率较高的特征图,保留了更多的局部纹理信息;而 A2 和 A3 位于中间层次,平衡了空间细节和语义信息;相比之下,A4 对应于分辨率较低、语义表示更强的特征图。在多尺度特征融合过程之后,检测头利用来自特征金字塔的特征图(记为 P3、P4 和 P5,如图 2 所示)执行最终的目标检测。这些特征层次整合了来自网络不同阶段的信息,其有效性可能受到 A1–A4 位置注意力模块配置的影响。通过在不同层次插入注意力模块,可以构建多个 YOLO-AMC 变体,以系统评估不同注意力集成策略对裂缝检测性能的影响,并分析注意力机制与特征层次之间的相互作用。
在相同的训练条件下,将 YOLO-AMC 变体与原始 YOLOv11 和 YOLOv8 基线模型进行比较,以评估所提架构在检测精度和推理效率方面的有效性。
为了系统评估所提模型在裂缝检测中的性能,所有实验均使用相同的数据集、相同的训练设置和相同的模型规模进行,以确保公平且可重复的比较。
使用我们先前研究建立的复合裂缝数据集作为本工作的基准数据集。该数据集通过整合五个公开的裂缝图像数据集构建而成,包括 BAC HIEN Crack Concrete 2024 [38]、Crack Detection.v2 [39]、Crack Detection.v3i [40]、Crack Finder.v1i [41] 和 Concrete Crack Images for Classification 数据集 [42]。整合后的数据集包含 15,524 张训练图像、2,276 张验证图像和 1,665 张测试图像。所有裂缝实例均使用边界框重新手动标注,以适应目标检测框架。为防止不同源数据集之间的数据泄露,整合后的数据集在合并后重新划分,确保每张图像仅出现在一个子集中。
所有模型均使用 Ultralytics YOLOv11 框架进行训练。实验在配备 NVIDIA RTX 4090 GPU、Intel Core i9-14900K CPU 和 64 GB 内存的系统上进行。输入图像尺寸设置为 640×640,批量大小设置为 32。每个模型最多训练 800 个 epoch,并采用早停机制以防止过拟合。
优化器及相关超参数遵循 Ultralytics 默认设置,包括初始学习率 0.01、动量 0.937 和权重衰减 0.0005。为确保可重复性,所有实验的随机种子固定为 0。所有比较模型使用相同的训练设置和数据集配置,以确保性能差异主要归因于模型架构设计。
为了全面评估模型性能,采用以下指标:
推理时间定义为完整推理流程的总延迟,包括预处理、模型前向传播和后处理。为确保公平测量,推理期间禁用结果保存。所有推理时间均使用单图像推理模式在每张图像的基础上测量。报告平均推理时间和相应的每秒帧数作为效率指标。
提出 YOLO-AMC 架构后,首先在相同的实验设置下,将集成注意力的 YOLO 变体与原始 YOLOv11 和 YOLOv8 在检测精度、模型复杂度和推理性能方面进行比较,以评估所提出的 YOLO-AMC 用于裂缝检测的有效性。

表 1 总结了 YOLOv11、YOLOv8 以及带有三种注意力模块的 YOLO-AMC 变体在参数量、FLOPs、检测精度和推理速度方面的比较结果。结果表明,所有集成注意力的模型在 mAP@0.5 和 mAP@0.5:0.95 上均优于原始 YOLOv11 和 YOLOv8。其中,GAM 取得了最高的检测精度,其次是 Res-CBAM 和 SA。这些结果表明注意力机制可以有效增强精细裂缝特征的表示。
在模型复杂度方面,集成注意力模块后参数量和 FLOPs 有所增加;然而,所有模型仍保持在轻量级模型范围内。值得注意的是,SA 在比 YOLOv11 更少的参数量和 FLOPs 的情况下取得了更高的检测精度,表明性能提升不仅归因于模型规模的增加,也与注意力机制的特征重加权能力有关。尽管 GAM 和 Res-CBAM 引入了额外的计算开销,但其整体模型复杂度仍在可接受范围内。
对于推理效率,在 NVIDIA RTX 4090 GPU 上使用完整测试集测量端到端推理时间。结果表明,尽管与 YOLOv11 和 YOLOv8 相比,添加注意力模块后 FPS 略有下降,但所有 YOLO-AMC 变体仍然保持了高效的推理性能。虽然 YOLOv8 实现了最高的推理速度,但 SA 排名第二,并在检测性能和计算成本之间提供了更好的平衡。
本节通过消融实验分析注意力设计在 YOLO-AMC 中的效果,包括注意力放置位置、多层配置和混合注意力集成。
将三个注意力模块插入颈部的四个特征层,并比较它们的检测性能。

根据表 2,GAM 模块在 A3 位置取得最佳性能,而 A2 位置结果最低,最大差异为 0.0033。这表明 GAM 对特征层变化更为敏感。结果表明,全局注意力建模在不同语义层次上不会产生一致的特征增强。相比之下,Res-CBAM 在四个插入位置上表现出非常小的性能变化,最大差异仅为 0.0008。这表明 Res-CBAM 对插入位置的依赖性显著降低。这种稳定性有助于在不同的结构配置下保持良好的检测性能。SA 表现出介于 GAM 和 Res-CBAM 之间的行为,最大差异为 0.0029,表明其对特征层变化具有中等敏感性。
值得注意的是,对于所有三个注意力模块,A3 位置均取得了相对较好的性能。这表明中间特征层可能在空间细节和高级语义信息之间提供了更好的平衡,使注意力机制能够更有效地增强裂缝相关特征。这一观察支持了在 YOLO-AMC 架构中选择注意力插入位置时考虑特征层次的重要性。
为了客观分析不同插入位置对 YOLO-AMC 性能变化的影响,本研究采用了两种放置敏感性度量:
从表 3 可以看出,GAM 在 Range 和 Std 上均表现出最高值,表明它对插入位置最敏感。SA 表现出中等敏感性,而 Res-CBAM 在这两个指标上的值都显著较低,显示出在不同特征层次上的高稳定性。Range 和 Std 之间的一致性进一步证实了不同的注意力结构在 YOLO-AMC 架构中对特征层次变化的依赖程度不同,这可能会影响最终的检测性能。特别是,Res-CBAM 中的残差连接可能在特征调制期间提供了稳定的信号传播路径,从而降低了模型对插入位置变化的敏感性。

由于裂缝通常表现为具有跨尺度分布的细长结构,不同的特征层次保留了不同比例的空间细节和语义信息。因此,注意力模块的特征增强效果可能取决于其应用的特征层次。
除了单层插入配置外,本研究还进一步评估了多层插入策略,以分析 YOLO-AMC 架构中多级特征增强的效果,并探究在多个特征层次应用注意力调制是否能产生累积改进。此分析有助于理解注意力机制在多级特征金字塔结构中的协同效应。主要评估指标仍然是 mAP@0.5:0.95。

如表 4 所示,多层插入策略并不总是优于最佳的单层配置。在所评估的注意力模块中,GAM 在 A2+A3+A4 配置下仍然取得了最高的 mAP@0.5:0.95,表明在多个特征层次上应用注意力增强可以保持较强的特征表示能力。然而,与最佳单层插入设置相比,性能增益仍然有限,表明在多个特征层次上过度进行注意力调制可能并不总能产生累积改进。在 Res-CBAM 和 SA 中也可以观察到类似的现象,多层配置与相应的单层结果相比仅提供了微小的差异。
为了量化多层配置相对于最佳单层配置的边际收益,定义多层增益为:Δ = mAP_{multi-layer} - mAP_{best-single} (13) 其中 mAP_{best-single} 表示相应注意力模块在 A1–A4 中的最佳单层结果。Δ Gain 用于衡量多层增强带来的实际性能改进。为便于比较,表 5 总结了每个注意力模块的最佳单层结果、多层结果以及相应的 Δ Gain。
对于 GAM,多层配置高于其最佳单层位置 A3,表明在全局注意力建模机制下,多个语义层次上的特征增强可能提供互补的益处。Δ Gain 为 +0.0041,表明多层配置可以进一步提高 GAM 结构的检测性能。这一观察可能部分解释了在集成全局注意力机制时 YOLO-AMC 架构所实现的性能改进。
相比之下,Res-CBAM 在多层配置下的性能仅略高于其最佳单层结果,表明改进有限。Δ Gain 仅为 +0.0009,表明多层增强的边际收益很小。这表明该结构已经具有稳定的特征调制能力,多层配置并未带来显著的额外增益。在 YOLO-AMC 架构下,这意味着某些注意力模块即使使用单层配置也能保持稳定的性能。
对于 SA,多层插入导致性能下降,低于其在 A3 的最佳单层结果。Δ Gain 为 -0.0040,表明多层增强不一定能提高检测性能,可能存在特征冗余。这一结果表明,在相对轻量级的注意力结构中,同时在多个层次应用注意力可能会引入特征干扰,进而对定位性能产生负面影响。这进一步表明,在 YOLO-AMC 架构中,不同的注意力模块对多级特征融合的适应性不同。
结果表明,多层注意力插入的有效性取决于注意力模块的结构。GAM 受益于多层增强,而 Res-CBAM 表现出稳定但有限的改进,SA 在多层注意力调制下可能经历性能下降。
基于先前对单注意力模块和多层插入配置的分析,本研究进一步探讨了不同注意力模块的混合集成。通过将不同的注意力机制分配到不同的特征层次,分析了多个注意力结构在特征金字塔内的协同效应。本实验的目的不是进行最终的模型选择,而是研究不同注意力组合在裂缝检测中的行为特性。
根据先前的结果,GAM 在多层配置下表现较好,而 Res-CBAM 在单层插入下表现出更高的稳定性。因此,将两个注意力模块分配到不同的特征层次以构建混合注意力配置,随后与单注意力模型和基线模型进行比较。
本节评估了两种混合配置:
从表 6 可以看出,混合注意力配置在大多数评估指标上取得了与单注意力模型相当或略优的性能。特别是,A1 使用 Res-CBAM 且 A2+A3+A4 使用 GAM 的配置取得了最高的 mAP@0.5 和 mAP@0.5:0.95,表明定位精度有所提高,同时与单 GAM 模型相比,精确率和召回率也有所提升。这些结果表明两种注意力模块具有互补行为,Res-CBAM 有助于在高分辨率特征表示中进行稳定的特征细化,而 GAM 在多级融合过程中加强了全局特征建模。通过在不同特征层次上集成不同的注意力机制,模型能够更有效地平衡局部细化和全局上下文。
尽管如此,虽然这种混合设计取得了最佳的整体性能,但本研究将其视为结构探索而非主要模型。因此,采用单 GAM 模型作为参考架构,因为其设计更简单、可解释性更强,而混合配置则用于展示组合多种注意力机制的潜在益处。
在之前的消融实验中,移除了 YOLOv11 中的原始 C2PSA 模块,以隔离外部注意力模块的影响。在本节中,将 C2PSA 重新引入 YOLO-AMC 架构,以检查其对不同注意力模型的影响,并分析其与外部注意力机制的相互作用。如表 7 所示,集成 C2PSA 后,所有三个注意力模型在 mAP@0.5:0.95 上均有轻微提升,GAM 提升 +0.0017,Res-CBAM 提升 +0.0024,SA 提升 +0.0030。尽管这些结果表明 C2PSA 与外部注意力机制仍然具有互补性,但当已集成这些机制时,整体的改进相对有限。此外,集成 C2PSA 导致模型参数显著增加,GAM 从 2.90M 增加到 3.30M,Res-CBAM 从 3.45M 增加到 3.85M,SA 从 2.22M 增加到 2.62M,这表明适度的性能提升是以增加模型复杂度为代价的。
为了更直观地比较不同模型在裂缝检测中的实际性能,从测试集中选取了两张代表性图像来可视化各模型的检测结果,如图 3 和图 4 所示。结果比较了三个 YOLO-AMC 模型与两个基线模型在同一输入图像上的表现。

在图 3 中,图像显示了一个普通混凝土表面上的裂缝。根据检测结果,所有模型都成功检测到裂缝区域。GAM 产生的边界框在裂缝区域周围显得略微更紧凑,而 Res-CBAM 和 SA 生成的边界框在空间分布上与基线模型相当。

在图 4 中,图像显示了一个带有彩色涂层的混凝土表面上的裂缝。YOLO-AMC 变体表现出比基线模型更高的检测置信度,而所有模型的边界框大小和定位大致相当。
检测结果与定量分析一致,表明注意力机制改善了裂缝特征表示。
采用 Grad-CAM++ [43] 来可视化特征金字塔不同层次的特征响应。为了观察多尺度特征金字塔中的注意力分布,选择了三个具有不同语义表示的特征图(P3、P4 和 P5),分别对应低、中、高级特征表示。将集成注意力的模型与基线模型在相同输入图像上进行比较,并可视化产生的特征响应,如图 5 所示。
在 P3 尺度上,YOLOv11 和 YOLOv8 的热图表现出明显的水平和垂直条纹状图案,其中 YOLOv8 的水平条纹尤为突出。这些结构化的响应模式部分掩盖了裂缝路径的连续性。YOLOv11 显示出类似的网格状激活模式,高响应区域沿固定方向分布,而非集中在裂缝几何结构上。相比之下,GAM 和 SA 的热图表现出较少的条纹伪影,并且可以观察到沿裂缝方向更连续的响应。然而,GAM 的激活响应仍然分布在相对较广的区域,没有表现出强烈的局部集中性。在此尺度上,Res-CBAM 表现出更均匀的响应模式,高激活区域较小,裂缝周围的激活强度较低。
在 P4 尺度上,不同模型的热图分布表现出更明显的差异。GAM 在裂缝两侧呈现出高对比度的激活带,高激活区域主要分布在图像的左侧和右侧,尽管仍可观察到一些背景响应。SA 和 YOLOv11 的热图表现出沿裂缝方向延伸的条纹状激活,高响应区域通常与裂缝路径对齐。YOLOv8 在裂缝附近也显示出条纹状激活,但在背景区域可以观察到激活扩散。Res-CBAM 在 P4 尺度上表现出相对较低的激活强度,热图中存在大面积的低响应区域,仅在局部裂缝节点周围有少量高激活区域,表明在该尺度上特征响应相对保守。
在 P5 尺度上,不同模型的热图响应模式表现出更显著的差异。GAM 的高激活区域主要集中在图像左下部分的裂缝交叉点,并沿裂缝方向以梯度状方式延伸。Res-CBAM 的高激活区域汇聚在裂缝中段的局部节点周围,呈现出更局部的分布,周围背景区域的激活相对较低。SA 在裂缝的中上段表现出局部高激活区域,其整体热图分布介于局部集中和区域扩散之间。YOLOv8 在 P5 尺度上表现出相对较强的激活响应,高响应区域集中在裂缝的局部部分,表明倾向于局部激活。相比之下,YOLOv11 的整体激活强度较低,突出的高激活区域较少,其热图以更均匀的低响应分布为特征。
4.5 边缘设备上的检测结果
为了验证所提模型在资源受限设备上的实际可行性,在 Raspberry Pi 5 平台上进行了边缘设备推理实验。该平台配备四核 ARM Cortex-A76 处理器和 8 GB 内存。为了提高边缘设备上的推理效率,所有训练好的模型都转换为 ONNX 格式。对于推理时间评估,使用验证集的前 100 张图像进行基准测试,并以单图像模式执行推理,批量大小为 1。为确保不同平台之间的一致性,以端到端的方式测量推理时间,包括图像加载、预处理、模型前向传播和后处理操作。每个模型在 Raspberry Pi 5 上的推理性能如表 8 所示。
从结果来看,所有模型都可以在 Raspberry Pi 5 平台上成功运行推理,表明所提出的 YOLO-AMC 架构在边缘设备部署上具有良好的可行性。其中,SA 模型实现了最佳的推理速度,平均延迟为 178.04 ms,对应约 5.62 FPS。
为了展示在边缘设备上的实际检测性能,选择了 YOLO-AMC (GAM) 模型作为推理示例,结果如图 6 所示。左图显示了在 GPU 环境中获得的检测结果,右图显示了在 Raspberry Pi 5 上的推理结果。该模型在两个平台上都成功检测到了裂缝区域,并且检测结果高度一致。
这些结果表明,所提出的模型可以有效地部署在边缘设备上,同时保持一致的检测性能。
5 讨论
实验结果表明,将注意力模块集成到颈部结构中可以有效提高裂缝检测的整体性能。与 YOLOv11 和 YOLOv8 相比,所提出的集成注意力模型取得了更高的 mAP@0.5 和 mAP@0.5:0.95。由于裂缝通常细长且低对比度,其判别性特征在多阶段下采样过程中容易被削弱。通过在多尺度特征融合阶段引入注意力机制,网络可以重新加权特征响应,更专注于裂缝相关区域,从而提高检测性能。
进一步的 Grad-CAM++ 热图观察显示,不同模型在特征层次上表现出不同的响应模式。在 P3 尺度上,基线模型倾向于显示条纹状或结构化的图案,而集成注意力的模型在某些区域表现出相对更平滑的空间响应。在 P4 尺度上,特征响应逐渐与裂缝方向对齐,基于注意力的模型在某些情况下显示出更连续的激活模式。在 P5 尺度上,特征响应变得更加集中,大多数模型将激活集中在局部裂缝区域,表明高层特征强调语义判别。
这些现象可能与注意力机制的特性和网络架构设计有关。低级特征对局部纹理更敏感,更容易受到周期性图案的影响,这也在先前的研究中观察到。随着空间注意力的引入,可以在空间位置上重新加权特征响应,有助于抑制背景干扰。此外,中级特征在空间细节和语义信息之间提供了平衡,使得注意力机制在此层次上更有效。不同注意力模块的设计也可能影响其在特征层次上的稳定性和有效性。在更高的特征层次上,较大的感受野倾向于关注更具判别性的局部区域,这与先前研究报告的结果一致。
注意力机制的有效性不仅取决于是否应用了注意力,还取决于模块设计及其在特征金字塔中的插入位置。不同的注意力结构在不同语义层次上可能表现出不同的行为,这表明在设计注意力增强模型时,应同时考虑模块特性和特征层次,而不是依赖固定的插入策略。
此外,C2PSA 集成实验的结果表明,尽管 C2PSA 与外部注意力模块具有互补性,但额外的性能增益相对有限,并且伴随着模型复杂度的增加。这些发现表明,当已经集成了外部注意力机制时,引入额外注意力模块的边际收益变得不那么显著。
总体而言,注意力集成应被视为一种灵活的设计策略,而不是固定的配置,允许根据特定的应用要求和性能目标来调整模型架构。
6 结论
本研究提出了一种改进的 YOLO 架构,集成了注意力机制,命名为 YOLO-AMC,用于建筑裂缝检测。实验结果表明,与 YOLOv11 和 YOLOv8 相比,将不同的注意力模块集成到 YOLO 架构中,在 mAP@0.5 和 mAP@0.5:0.95 方面提高了检测性能。这些结果表明,注意力机制可以在不引入显著计算开销的情况下有效增强精细裂缝特征的表示。注意力模块在颈部中的插入位置也可能影响检测性能,观察到的变化趋势与注意力模块的结构特征有关。然而,插入位置的影响相对小于注意力模块设计本身的影响。
基于上述观察,在设计注意力增强的目标检测模型时,应同时考虑注意力模块的选择及其插入位置。在所评估的配置中,基于 GAM 的模型始终表现出有竞争力的性能,因此被选为本研究的参考模型。同时,混合配置和 C2PSA 集成变体取得了额外的性能改进,表明组合多种注意力机制或集成现有模块可以进一步提高检测精度。所提出的 YOLO-AMC 在不同的裂缝场景中表现出稳定的检测性能,并且可以成功部署在 Raspberry Pi 5 等低功耗边缘设备上,证明了所提方法在实际应用中的可行性。
未来的工作可以进一步研究注意力机制在多尺度特征融合中的作用,并评估所提出的设计观察在其他目标检测架构和应用领域的泛化能力。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。