多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

mmdetection 中的经验性空间注意力(Empirical Attention):基于 Faster R-CNN 的 GeneralizedAttention 配置与实验全解

mmdetection 中的经验性空间注意力(Empirical Attention):基于 Faster R-CNN 的 GeneralizedAttention 配置与实验全解 mmdetection 中的经验性空间注意力Empirical Attention基于 Faster R-CNN 的 GeneralizedAttention 配置与实验全解【免费下载链接】mmdetectionOpenMMLab Detection Toolbox and Benchmark项目地址: https://gitcode.com/gh_mirrors/mm/mmdetection导读本文围绕 OpenMMLab 目标检测工具箱 mmdetection 官方复现的论文An Empirical Study of Spatial Attention Mechanisms in Deep NetworksarXiv:1904.05873展开系统讲解广义空间注意力GeneralizedAttention机制在该仓库中的落地方式。通过研读 configs/empirical_attention 下的四份官方配置、ResNet 骨干网络的 plugins 插件机制 以及对应单元测试读者将掌握四位注意力因子标记如1111、0010的含义、如何将注意力模块插入 ResNet 的指定 stage 与卷积层之后、如何与可变形卷积DCN叠加以及如何基于 COCO 1x 训练计划复现官方精度指标。一、背景为什么需要经验性研究注意力论文摘要指出注意力机制已成为深度神经网络中的流行组件但关于不同影响因素factors以及从这些因素计算注意力的方法如何影响性能缺乏系统性考察。为此论文在一个**广义注意力公式generalized attention formulation**下对多种空间注意力元素进行消融实验这一公式同时涵盖了主流的 Transformer 注意力、可变形卷积deformable convolution和动态卷积dynamic convolution模块并在多个应用上进行验证。研究中几个反直觉的重要发现包括查询query与键key的内容比较在自注意力self-attention场景下作用可以忽略但在编码器-解码器注意力encoder-decoder attention中至关重要**可变形卷积 仅键内容显著性key content only saliency**的组合在自注意力中能达到最佳的精度-效率权衡注意力机制的设计仍存在很大的改进空间。mmdetection 在configs/empirical_attention/目录中以 Faster R-CNNR-50 骨干 FPN为测试平台将论文中的注意力模块封装为GeneralizedAttention通过四种配置组合验证论文结论。对应论文的 BibTeX 引用记录在 configs/empirical_attention/README.md 的 Citation 小节中。二、四份官方配置注意力类型 × 可变形卷积的消融矩阵该目录下共 4 份可运行的模型配置构成一个 2×2 的消融矩阵注意力类型1111/0010× 是否叠加 DCN配置文件attention_typeDCNLr schd训练显存 (GB)推理速度 (fps)box AP (COCO)faster-rcnn_r50-attn1111_fpn_1x_coco.py1111否1x8.013.840.0faster-rcnn_r50-attn0010_fpn_1x_coco.py0010否1x4.218.439.1faster-rcnn_r50-attn1111-dcn_fpn_1x_coco.py1111是1x8.012.742.1faster-rcnn_r50-attn0010-dcn_fpn_1x_coco.py0010是1x4.217.142.0以上表格完整继承自 configs/empirical_attention/README.md 的 Results and Models 小节补充说明各模型的推理时延、训练资源配置与权重下载地址Weights 字段均记录在 configs/empirical_attention/metafile.yml 中例如0010无 DCN模型在 V100、batch size 1、FP32、输入分辨率 (800, 1333) 条件下单张推理约 54.35 ms对应 README 中的 18.4 fps。2.1 不带 DCN 的基础配置以1111配置为例完整文件内容如下_base_ ../faster_rcnn/faster-rcnn_r50_fpn_1x_coco.py model dict( backbonedict(plugins[ dict( cfgdict( typeGeneralizedAttention, spatial_range-1, num_heads8, attention_type1111, kv_stride2), stages(False, False, True, True), positionafter_conv2) ]))它直接在 configs/faster_rcnn/faster-rcnn_r50_fpn_1x_coco.py 这一标准基准配置之上仅向 ResNet 骨干注入一个GeneralizedAttention插件其余检测头、训练管线均保持不变。0010版本与1111唯一差异是attention_type0010可见 faster-rcnn_r50-attn0010_fpn_1x_coco.py。2.2 叠加 DCN 的配置叠加可变形卷积的版本在插件之外额外开启了 DCN见 faster-rcnn_r50-attn1111-dcn_fpn_1x_coco.py_base_ ../faster_rcnn/faster-rcnn_r50_fpn_1x_coco.py model dict( backbonedict( plugins[ dict( cfgdict( typeGeneralizedAttention, spatial_range-1, num_heads8, attention_type1111, kv_stride2), stages(False, False, True, True), positionafter_conv2) ], dcndict(typeDCN, deform_groups1, fallback_on_strideFalse), stage_with_dcn(False, True, True, True)))dcn配置 DCN 模块类型为DCNdeform_groups1表示单个可变形组fallback_on_strideFalse表示在 stride 较大的层上不退回普通卷积stage_with_dcn(False, True, True, True)从第 2 个 stage 起启用可变形卷积ResNet 共 4 个 stage该配置在 4 个模型中取得了最高的 box AP42.1。0010 DCN 的配置见 faster-rcnn_r50-attn0010-dcn_fpn_1x_coco.py其 box AP 为 42.0与1111 DCN 几乎持平但显存占用仅 4.2 GB、推理更快17.1 fps vs 12.7 fps直观印证了论文可变形卷积配合仅键内容显著性即可达到最优精度-效率权衡的结论。2.3 核心参数attention_type的语义attention_type是一个四位的 0/1 标记对应论文广义注意力公式中计算注意力分数时所启用的不同影响因素查询内容、键内容、查询位置、键位置1111启用全部四种因子是完整版的空间注意力0010仅保留键内容显著性key content only saliency这一路信号即论文自注意力实验中与可变形卷积组合效果最佳的变体。从结果看0010相比1111在显存与速度上优势明显4.2 GB vs 8.0 GB精度损失很小无 DCN 时 39.1 vs 40.0叠加 DCN 后两者精度基本持平42.0 vs 42.1。这组实验与论文结论一致自注意力中复杂的查询-键内容比较收益有限精简因子即可逼近甚至持平完整注意力的效果。其余插件参数含义spatial_range-1注意力作用的局部空间范围-1表示不限制、覆盖全局num_heads8多头注意力的头数kv_stride2键/值特征的下采样步长用于在保持空间范围的同时降低计算量stages(False, False, True, True)插件只在第 3、4 个 stage 生效与 DCN 配置中的stage_with_dcn位置对应positionafter_conv2插件插入在每个 Bottleneck 的第二个 3×3 卷积之后。三、源码纵深ResNet 的 plugins 插件机制如何注入注意力GeneralizedAttention之所以能以如此简洁的配置注入骨干依赖 mmdetection 的 ResNet 实现原生支持的外部插件plugins机制核心代码位于 mmdet/models/backbones/resnet.py。3.1 插件的三个字段契约由 ResNet 构造文档注释 可知plugins是用于各 stage 的插件列表每个插件字典必须包含cfg必填构建插件模块的配置字典position必填插件在 block 内的插入位置可选after_conv1、after_conv2、after_conv3stages可选tuple[bool]插件作用于哪些 stage长度需与num_stages一致。3.2 插件从配置到前向的调用链在 ResNet 构造阶段mmdet/models/backbones/resnet.py插件按position被分类收集到after_conv1_plugins/after_conv2_plugins/after_conv3_plugins三组随后make_stage_plugins(plugins, stage_idx)依据每个插件声明的stages布尔掩码决定该 stage 是否携带插件make_block_plugins()再为 block 逐个构建插件实例。在 Bottleneck 前向中对应位置如 conv2 之后会调用插件模块并做残差累加。正是这套机制让在哪里插、插几层、插什么完全由配置文件驱动无需改动检测头代码。3.3 测试用例的印证仓库单元测试 tests/test_models/test_backbones/test_resnet.py 对该机制做了直接验证例如其中一段测试在 Bottleneck 的after_conv2位置注入一个GeneralizedAttentionspatial_range-1, num_heads8, attention_type0010, kv_stride2断言block.gen_attention_block.in_channels 16并验证输入输出形状保持一致另一段测试进一步验证了GeneralizedAttention与NonLocal2d、ContextBlock可同时插入同一 block 的不同位置。这些用例说明插件模块由mmdet的注册机制按typeGeneralizedAttention自动构建插件不改变特征图的空间尺寸与通道数可作为即插即用的残差式增强模块同一 block 内可组合多个不同位置、不同类型的插件。四、训练与评估在 COCO 1x 计划下复现4.1 训练配置要点由 configs/empirical_attention/metafile.yml 的元数据可知四份配置统一遵循 Faster R-CNN R-50 FPN 1x COCO 的经典训练设定数据集COCO目标检测box AP 指标优化器带动量的 SGD 权重衰减Weight Decay训练资源8 张 V100 GPU训练轮数12 epochs即 1x 计划推理基准V100、batch size 1、FP32、输入分辨率 (800, 1333)。由于四份配置都只覆盖_base_中的 backbone 部分学习率、batch size、数据增强等其余超参数均继承自 configs/faster_rcnn/faster-rcnn_r50_fpn_1x_coco.py 及其引用的 configs/base公共配置。4.2 复现命令使用仓库自带工具即可完成训练与测试需按 docs 中的安装说明先完成 mmdetection 环境搭建。以1111 DCN 为例单机多卡训练bash tools/dist_train.sh configs/empirical_attention/faster-rcnn_r50-attn1111-dcn_fpn_1x_coco.py 8在 COCO 验证集上评估bash tools/dist_test.sh configs/empirical_attention/faster-rcnn_r50-attn1111-dcn_fpn_1x_coco.py checkpoint路径 8注意原 README 结果表中的模型权重与训练日志由官方发布每个模型约 12 epochs 训练完成其下载地址记录于 metafile.yml 各模型条目的Weights字段中权重加载后即可直接执行上述dist_test.sh复现 README 中报告的 box AP。五、从实验结果读出的实践结论结合 README 表格与 metafile 中的推理数据可以提炼出对该论文工程化落地有直接参考价值的几点显存与精度权衡0010显存开销4.2 GB不足11118.0 GB的六成且推理更快非常适合显存受限场景DCN 是精度提升的关键无论何种注意力类型叠加 DCN 后 box AP 均提升约 2 个点40.0→42.1、39.1→42.0说明可变形感受野与空间注意力的组合收益显著注意力因子可以精简在叠加 DCN 后0010与1111精度几乎一致42.0 vs 42.1印证了论文中自注意力场景下查询-键内容比较作用可忽略的核心结论为后续在 mmdetection 中低成本引入注意力组件提供了参考基线。引用article{zhu2019empirical, title{An Empirical Study of Spatial Attention Mechanisms in Deep Networks}, author{Zhu, Xizhou and Cheng, Dazhi and Zhang, Zheng and Lin, Stephen and Dai, Jifeng}, journal{arXiv preprint arXiv:1904.05873}, year{2019} }【免费下载链接】mmdetectionOpenMMLab Detection Toolbox and Benchmark项目地址: https://gitcode.com/gh_mirrors/mm/mmdetection创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表