尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Pytorch-SiamFC 裁剪机制全解:127像素参考区与255像素搜索区是怎么来的

Pytorch-SiamFC 裁剪机制全解:127像素参考区与255像素搜索区是怎么来的 Pytorch-SiamFC 裁剪机制全解127像素参考区与255像素搜索区是怎么来的【免费下载链接】Pytorch-SiamFCPytorch implementation of Fully-Convolutional Siamese Networks for Object Tracking项目地址: https://gitcode.com/gh_mirrors/py/Pytorch-SiamFCPytorch-SiamFC 是目标跟踪经典论文《Fully-Convolutional Siamese Networks for Object Tracking》的 PyTorch 实现。它用孪生网络分别对127×127 的参考区reference region和255×255 的搜索区search region做嵌入再通过相关运算得到 33×33 的得分图来定位目标。本文带你在 10 分钟内彻底弄懂这套 SiameseFC 裁剪机制这两个魔数到底从哪里来、和 33×33 相关图有什么数学关系以及如何在 training/experiments/default/parameters.json 中安全地调整它们。一图看懂 SiameseFC 的裁剪与匹配流程在深入数字之前先看整体流水线两路图像各自过同一个嵌入网络然后在相关层做匹配。相关图的峰值理论上应出现在地图正中心因为两张图都以目标为中心裁剪裁剪机制核心参数一览 打开默认实验配置 training/experiments/default/parameters.json与裁剪直接相关的参数只有这几个参数默认值含义reference_sz127输入网络的参考区边长像素search_sz255输入网络的搜索区边长像素final_sz33相关图得分图边长context_margin0.5参考区上下文边距系数pos_thr/neg_thr16 / 24训练标签的正/负阈值搜索图像素这三个尺寸之间其实是一条严丝合缝的数学链255 − 127 1 129再除以网络总步长 4四舍五入后正好是33×33。下面逐个拆解。127像素参考区目标框 上下文边距参考区并不是直接把目标框抠出来而是目标框外再包一圈上下文context margin让网络学到目标长什么样而不是框的边缘是什么。计算逻辑在 training/datasets.py 的ref_context_size方法中取目标框宽 w、高 h边距为context_margin × (w h)默认 0.5即四周共加半个宽高加边距后取宽高的几何平均√((wm)×(hm))得到一个正方形边长强制取奇数保证目标中心严格落在图像中心像素上。这一步先用crop_img从原帧裁出该正方形区域training/crops_train.py再统一缩放到127×127与目标实际大小无关——所以任意尺寸的目标喂进网络都是同样大小。255像素搜索区按同一比例放大 255/127 倍搜索区必须比参考区大才能覆盖目标在下一帧的可能位移。Pytorch-SiamFC 的做法是等比放大搜索区在原帧中的实际边长 参考区边长 ×search_sz/reference_sz即 ×255/127 ≈ 2 倍同样保证为奇数居中裁剪再缩放到255×255。这样带来一个非常漂亮的几何性质搜索区与参考区中心对齐且尺度成比例因此目标无论出现在搜索区哪个位置参考区作为相关核扫过时匹配峰值恰好落在搜索区对应的偏移位置——相关图的空间位置与目标位移一一对应。255 与 127 的差值 128相关图的视野两区尺寸之差决定了得分图能表达的位移范围。相关层本质是把 127×127 的参考嵌入当作卷积核在 255×255 的搜索嵌入上滑动相关位置数 255 − 127 1 129×129每个位置对应一个偏移也就是说网络最多能表达目标相对参考中心偏移±64 像素搜索图像素的位移嵌入网络总步长为 4所以 129 下采样为 ⌈129/4⌉ 33×33即final_sz的来源。相关运算的实现见 training/models.py 中SiameseNet.match_corr利用分组卷积groupsbatch的数学等价技巧把参考嵌入 ⊗ 搜索嵌入变成一次卷积峰值位置即目标中心估计。标签阈值16 与 24 如何和裁剪尺寸配合训练时目标在两幅图中都以中心对齐所以标签是固定的以相关图中心为圆心距离 ≤pos_thr16 px折成搜索图像素→ 正样本距离 neg_thr24 px→ 负样本中间一圈 → 中性区不参与损失。标签生成在 training/labels.py 中。注意 training/labels.py 的文档注释提到一个实用上限相关图实际只对应搜索区中央129 像素的子区域其半对角线约 91.2 px阈值设得再大也无意义。这再次印证了 127/255/33 三者是一体的。边界不足时的 Padding均值填充当目标贴近视频边缘、裁剪区伸出帧外时training/crops_train.py 的resize_and_pad会先按四边各自记录缺角pads字典再用裁剪区像素均值填充而非黑边最后缩放到目标尺寸。这样网络在边界帧上也能拿到完整的 127/255 输入且填充色与图像统计特性接近不会引入突兀特征。如何调整裁剪参数最快上手清单 ️如果你想改动这套裁剪机制记住以下三条原则即可保持奇数与中心对齐reference_sz、search_sz建议用奇数127/255 都是否则目标中心会落在像素之间相关图峰值偏移三参数联动final_sz必须满足final_sz ≈ (search_sz − reference_sz) / 4 1步长 4 的 BaselineEmbeddingNet改 255/127 就要同步改 33阈值随搜索区缩放pos_thr、neg_thr以搜索图像素为单位搜索区变宽时应等比放大并保证不超过 129 像素子区域的半对角线。总结Pytorch-SiamFC 的裁剪机制是一套环环相扣的设计127 像素参考区 目标框 0.5 上下文边距后等比缩放255 像素搜索区 参考区按 255/127 放大保证中心对齐且覆盖 ±64 px 位移两者之差 129 经步长 4 下采样得到33×33 相关图配合 16/24 像素的标签阈值完成训练。理解了这条数字链你就能自由调整 Pytorch-SiamFC 的裁剪参数也可以看懂基于 SiameseFC 思想的各类改进方案了。【免费下载链接】Pytorch-SiamFCPytorch implementation of Fully-Convolutional Siamese Networks for Object Tracking项目地址: https://gitcode.com/gh_mirrors/py/Pytorch-SiamFC创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表