ARTICLE DETAIL

资讯详情

深耕网站SEO优化与搜索引擎排名提升的一线实战洞察。

TransT视觉跟踪为何选用ResNet50+FrozenBN?深度解读Siamese式双分支骨干网设计逻辑

TransT视觉跟踪为何选用ResNet50+FrozenBN?深度解读Siamese式双分支骨干网设计逻辑 TransT视觉跟踪为何选用ResNet50FrozenBN深度解读Siamese式双分支骨干网设计逻辑【免费下载链接】TransTTransformer Tracking (CVPR2021)项目地址: https://gitcode.com/gh_mirrors/tr/TransTTransT 是 CVPR 2021 提出的基于 Transformer 的视觉目标跟踪网络它用一个 ResNet50 骨干网共享处理模板与搜索区域再经注意力融合输出目标框。本文深度解读 TransT 骨干网的设计逻辑为什么选 ResNet50、为什么冻结 BatchNormFrozenBN、Siamese 双分支如何做到又快又准帮助新手快速看懂这份开源实现。1️⃣ TransT 骨干网整体架构速览先看整体框架Template模板128×128与 Search Region搜索区域256×256两路图像进入同一个特征提取器经 1×1 卷积降维后送入 Transformer 特征融合网络ECA 自注意力 CFA 交叉注意力最后由预测头输出框回归与分类结果。这张图对应源码 ltr/models/tracking/transt.py 中的TransT.forwardfeature_search, pos_search self.backbone(search)与feature_template, pos_template self.backbone(template)同一个self.backbone被调用两次——这就是 Siamese 式孪生式的含义。2️⃣ 为什么骨干网是 ResNet502.1 ImageNet 预训练白拿一套通用视觉特征骨干构建入口在 ltr/models/backbone/transt_backbone.py 的build_backbone其中backbone_pretrainedTrue即加载 ImageNet 分类预训练权重见 ltr/models/backbone/resnet.py 的resnet50函数。特征质量高ResNet50 在 ImageNet 上学到的边缘、纹理、部件等中层语义对判断图像里有没有这个目标天然适用省去从零训练骨干的大量数据与时间可复用生态权重来自标准 torchvision 模型库复现与换骨干如 resnet18成本极低。2.2 只取 layer38 倍下采样的甜点层注意Backbone类固定output_layers[layer3]且 ltr/models/backbone/resnet.py 中 layer3 使用dilation2空洞卷积、不降采样输入分辨率layer3 特征图感受野搜索区域 256×256stride 832×32×1024较大覆盖目标周边上下文模板 128×128stride 816×16×1024足够紧凑layer3 的 8 倍下采样让 256 像素的搜索区域只产生 32×321024 个特征向量这正是 Transformer 融合网络能跑得快的关键——序列长度直接决定注意力的计算量。若取 layer416 倍下采样则语义偏全局、细节丢失取浅层则特征图过大、推理变慢。layer3 恰好是精度与速度的平衡点。2.3 权重共享一份骨干双倍收益Siamese 设计的核心是模板与搜索区域共享同一套卷积权重而不是两个独立网络参数省TransT-N2 仅 16.7M 参数TransT-N4 也仅 23.0M是轻量级跟踪器推理快track()中模板特征在初始化时只算一次并缓存self.zf之后每帧只对搜索区域跑一次骨干配合 32×32 的短序列实测可达50~70 fps的实时速度训练稳两路图像分布差异尺度、内容由共享权重强制对齐模型学到的是同一物体在不同图像中的不变表征而非两条各自为政的特征流。3️⃣ FrozenBN冻住的到底是什么3.1 BatchNorm 统计量与裁切图严重失配BatchNorm 依赖批内或运行时的 running均值/方差做归一化这套统计量是在 ImageNet 完整自然图像上学出来的。但跟踪任务喂给骨干的输入是紧贴目标的小模板裁切块128×128目标几乎占满带大量背景、目标偏小的搜索区域裁切块256×256。这些裁切块的亮度、对比度、纹理分布与 ImageNet 差异巨大。如果 BN 继续更新统计量归一化行为会被非典型输入带偏特征尺度抖动训练极易不稳定。3.2 冻结后确定性、可复现的特征提取器ltr/models/backbone/transt_backbone.py 中专门实现了FrozenBatchNorm2dBackbone的 docstring 也写明 ResNet backbone with frozen BatchNorm前向时用固定的running_mean/running_var做仿射缩放等价于把 BN 折叠成一个线性变换。好处包括推理确定在线跟踪每帧是单张图前向batch1批统计量毫无意义冻住统计量后同一输入永远得到同一特征模板缓存特征self.zf与后续各帧搜索特征严格可比保留预训练归纳偏置ImageNet 上学好的归一化尺度被完整保留骨干充当稳定的通用特征提取器让 Transformer 专心学融合骨干输出稳定后注意力融合网络ltr/models/neck/featurefusion_network.py只需解决模板与搜索特征怎么配准这一个核心问题。配套地训练配置 ltr/train_settings/transt/transt.py 中骨干参数组的学习率仅为 1e-5其他模块 1e-4即微调而非重学与 FrozenBN 的保守策略一脉相承。4️⃣ 从代码看懂双分支数据流整个 Siamese 骨干的行为可以用 4 步概括对应 ltr/models/tracking/transt.py构建build_backbone创建 ResNet50layer3 输出、1024 通道Joiner再拼接正弦位置编码position_embedding sine模板前向template(z)提取模板特征并缓存搜索前向track(search)每帧只跑搜索区域融合输出input_proj1×1 卷积1024→256 通道把两路特征投影到 Transformer 维度经 ECA/CFA 融合后由 MLP 头输出pred_boxes与pred_logits。搜索/模板区域大小256/128在 ltr/train_settings/transt/transt.py 中由search_feature_sz32、template_feature_sz16乘以 8 倍上采样因子得到与骨干 stride 8 严格对齐——这也是选择 layer3 的直接原因。5️⃣ 上手验证批量跑一次评测理解架构后最直观的验证是跑评测。项目内置了 got10k_toolkit、pysot_toolkit 两套评测工具支持 GOT-10k、LaSOT、OTB、NFS、UAV123、VOT 等数据集批量实验例如在 GOT-10k 上TransT-N4 取得 72.3 AOTransT-N2 达 69.9 AO 且速度快一倍——这套 ResNet50 FrozenBN Siamese 共享骨干 Transformer 融合的组合正是少参数、实时速度、强精度三者兼得的原因。总结ResNet50ImageNet 预训练通用特征 layer3 的 8 倍下采样短序列兼顾精度与 Transformer 推理速度FrozenBN冻结归一化统计量消除裁切输入分布失配与单帧推理的不确定性让骨干成为稳定特征提取器Siamese 共享骨干模板与搜索区域共用权重参数减半、模板特征一次缓存、所有数据集同一套模型与超参无在线更新模块简单且高效。【免费下载链接】TransTTransformer Tracking (CVPR2021)项目地址: https://gitcode.com/gh_mirrors/tr/TransT创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表