【SiamRPN++】论文阅读笔记

SiamRPN++: Evolution of Siamese Visual Tracking with Very Deep Networks 论文地址 代码地址

写在前面

这篇文章是之前SiamRPN和DaSiamRPN的团队做的,北航的李博,现在毕业了在商汤,大牛就是大牛,这个SiamRPN++在所有的benchmark上都做到了最好,并且提升还很大,最大的贡献就是改变了Siam tracker的网络结构吧,用更深的网络代替,里面还用到了模型压缩的方法,只能喊666了吧,果然还是要多读书,我连模型压缩都不懂呢,感觉人生无望了啊~

Motivation

  • 虽然Siamese的tracker在VOT数据集上表现很好,但是在OTB上还是比不过一个state-of-the-arts的tracker,一个原因是VOT会每隔五帧更新,但是OTB没有,那些效果好的方法用的是比较深的网络。

Contribution

  • 文章深度分析了Siamese网络不能太深的原因是因为网络太深会影响Siamese的变化不变性
  • 提出了一个简单但是有效的采样方式来打破深度网络的空间限制,这样成功得让Siamese网络在ResNet上运行;
  • 提出了一个特征整合结构给互相关操作,这样使得相似性度量可以用到多层的特征;
  • 提出了一个depth-wise的分组相关操作来得到不同语义特征的相似性图。

Algorithm

1、Spatial Aware sampling strategy

文章表明了严格的平移变换不变只发生在没有padding的网络中,但是目前已有的深网络都不可避免的需要padding,所以要想使用比较深的网络,就得解决这个问题,这里作者做了一个骚操作,如下图:
在这里插入图片描述
他们假设由于padding产生的空间限制是加了一个空间的偏差,并做了实验证明,实验过程如下:先是将原先在中间的物体做一定像素的平移,然后输入给网络,将其收敛后的heatmap可视化出来。如上图1,发现当平移为1时产生了强烈的中心偏差,然而当平移像素值为32时,这个heatmap就更加接近于ground truth。所以只要使用了这个空间采样机制,就可以消除padding对结果的影响,使得Siamese的结构可以使用ResNet-50来提取特征。

2、ResNet-driven Siamese Tracking

在这里插入图片描述
如上图,作者使用了SiameseRPN的结构来做,只不过把特征提取的过程使用ResNet代替,文章中对ResNet做了一些细微的调整,因为原始的ResNet总步长太大,不适用于密集的Siamese网络,所以修改了conv4和conv5层的步长,最后使用了一个1*1的卷积来将通道数归一化到256.

因为ResNet-50 的padding都保留了,所以最后的特征图会很大,所以文章只选择了中间77的位置(因为这个77可以包含所有的信息)

他们对ResNet做了finetune对网络的精度还有很大的提升。

3、Layer-wise Aggregation

因为ResNet不同层的感受野不一样,低层的信息一般是一些表观的特征,比如颜色、形状、边缘,是用来定位的,而深层则是一些语义类的信息,可以用来做分类。如上图3,文章就把conv3\4\5层的特征都拿出来做分类,把这三层的特征都feed到SiameseRPN网络中,然后将他们直接加权:
S a l l = ∑ l = 3 5 α i ∗ S l , B a l l = ∑ i = 3 5 β + i ∗ B l S_{all} = \sum_{l=3}^5 \alpha_i*S_l , B_{all} = \sum_{i=3}^5 \beta+i*B_l Sall=l=35αiSl,Ball=i=35β+iBl
加权的权重是offline预训练的。

4、Depthwise Cross Correlation

如下图:
在这里插入图片描述
其实就是因为他们发现了属于相同类的物体在相同的channel上响应度比较高,所以他们把输出的特征分组,按组来做相关操作,这样就会使得网络参数量大大降低,不过这一块具体如何实现的文章里没有详细写. 听说这个DW卷积是人家做模型压缩的时候常用的手法, 像MobileNet里面就用到了, 现在整个测试的代码都已经开源了,具体怎么做的看代码应该就知道了.

Experiment

在各大benchmark上都是第一,速度35FPS,这个提升实在厉害,延续了这个组一出手都是最强的,还以为DaSiamRPN就已经很难超越了,没想到又有这么大的提升。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

总结

优点
  • 分析了为什么Siamese的网络之前不能用深层网路,提出了用ResNet来做,给tracking提了一个新思路吧;
  • 解决了深层网络的限制性,并且使用多层的特征来预测,更加准确;
  • 使用depthwise来减少网络参数,使得网络更加稳定。
缺点
  • 唉,就是depthwise每怎么解释怎么做,还有就是没有模板更新吧,不过用的应该还是DaSiamrpn里的更新方式,简单粗暴效果好。
03-19
### IEEE 802.1Q VLAN Tagging Protocol Standard IEEE 802.1Q 是支持虚拟局域网(VLAN)的标准协议之一,通常被称为 Dot1q。该标准定义了一种用于以太网帧的 VLAN 标记系统以及交换机和桥接器处理这些标记帧的操作流程[^2]。 #### 协议结构概述 IEEE 802.1Q 的核心功能在于通过在以太网数据帧中插入特定字段来实现 VLAN 标签的功能。这种标签使得网络设备能够识别哪些流量属于哪个 VLAN,并据此执行转发决策。具体来说: - **Tag Header**: 在原始以太网帧头部增加了一个额外的 4 字节字段作为 VLAN 标签头。这四个字节包含了以下部分: - **Priority Code Point (PCP)**: 使用 3 比特表示优先级级别,范围从 0 到 7,主要用于 QoS 控制。 - **Canonical Format Indicator (CFI)**: 这是一个单比特位,在传统以太网环境中设置为零。 - **VLAN Identifier (VID)**: 使用 12 比特标识具体的 VLAN ID,理论上可以支持多达 4096 个不同的 VLAN(编号从 0 至 4095),其中某些特殊值保留给内部用途或管理目的。 #### 数据包处理机制 当一个带有 VLAN tag 的数据包进入支持 IEEE 802.1Q 的交换机时,它会依据此标签决定如何路由或者过滤该数据流。如果目标端口不属于同一 VLAN,则不会传输至其他无关联的物理接口上;反之亦然——只有相同 VLAN 成员之间才允许互相通信除非经过路由器跨网段访问[^1]。 此外,为了简化管理和配置过程并增强互操作性,还引入了一些辅助性的子协议和服务组件比如 GARP(通用属性注册协议)。GARP 可帮助分发有关 VLAN 成员资格的信息到各个连接节点以便动态调整其行为模式而无需频繁手动干预[^3]。 以下是创建带 VLAN TAG 的 Python 示例代码片段展示如何模拟构建这样的 Ethernet Frame: ```python from scapy.all import Ether, Dot1Q, IP, sendp def create_vlan_packet(src_mac="00:aa:bb:cc:dd:ee", dst_mac="ff:ff:ff:ff:ff:ff", vlan_id=100, src_ip="192.168.1.1", dst_ip="192.168.1.2"): ether = Ether(src=src_mac, dst=dst_mac) dot1q = Dot1Q(vlan=vlan_id) ip_layer = IP(src=src_ip, dst=dst_ip) packet = ether / dot1q / ip_layer return packet packet = create_vlan_packet() sendp(packet, iface="eth0") # Replace 'eth0' with your network interface name. ``` 上述脚本利用 Scapy 库生成包含指定源地址、目的地址及所属 VLAN 编号的数据报文并通过选定的网卡发送出去测试实际效果。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值