siamfc代码解读_每日一文:目标跟踪(SiamFC)「建议收藏」

siamfc代码解读_每日一文:目标跟踪(SiamFC)「建议收藏」Fully-ConvolutionalSiameseNetworksforObjectTracking.arXiv:1606.09549v2主体结构:核心CNN是AlexNet,去掉padding和全连接层FC,加入BN层,改为全卷积网络FCN,控制stride为8。FCN部分作用相当于特征提取,会得到与输入图像分辨率相关,通道数128的featuremap,类似与常用fHOG特征(h…


Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

Fully-Convolutional Siamese Networks for Object Tracking.arXiv:1606.09549v2

主体结构:核心CNN是AlexNet,去掉padding和全连接层FC,加入BN层,改为全卷积网络FCN,控制stride为8。FCN部分作用相当于特征提取,会得到与输入图像分辨率相关,通道数128的feature map,类似与常用fHOG特征(h/4, w/4, 31)。

检测流程:两路输入图像分别用训练好的同一个CNN(FCN)提取特征,目标区域扩展纹理(padding=1)的输入图像,简称目标图像缩放到127*127*3,特征6*6*128,目标图像4倍大小的检测区域,简称检测图像缩放到255*255*3特征22*22*128,相似度度量是cross-correlation交叉相关,计算每个位置的相似度得到score map,其实就是拿输入特征6*6*128*1作为卷积核,对22*22*128的feature map进行卷积操作,(22-6)/1+1 = 17,得到17*17*1的输出。最后将很粗的score map双三次插值上采样,获得更精确稳定的目标位置,这一步在相关滤波中也非常常见,不过那里用了更方便的频谱插值。

Cross-correlation:FCN具有位置对应特性,原本的检测操作应该是,在检测特征图上滑窗,寻找与目标特征相似度最高的位置,这里通过卷积操作代替滑窗检测,一个字:快!准!恨!

虽然卷积是滑窗检测的高效实现,但其本质上依然是滑窗,计算速度比相关滤波慢多了。这里我们有必要对比一下(ROUND 1):相关滤波:优点->得益于循环矩阵假设和FFT,计算速度非常快,较大feature map也能轻松应对;缺点->循环矩阵假设造成了边界效应,检测范围受限;

交叉相关:优点->没有假设也没有边界效应,是实实在在的滑窗检测,有卷积高效实现速度可以接受;缺点:计算量高,仅适合较小feature map。

尺度自适应:常用的多尺度检测方法实现尺度自适应,3个尺度更快86 fps,5个尺度更好58 fps。尺度检测是扩大或缩小检测区域,但检测图像都要缩放到255*255*3,也就是说尺度检测是天然可以并行的,SiamFC通过设置mini-batch的方式实现,一次性完成3或5个尺度样本检测,这在GPU上方便加速,但对CPU或ARM就不太友好了,单核速度需要*3或*5考虑。

在线不更新:这里的更新是指目标图像是不是更新,而非CNN的权值,CNN离线训练后就完全固定了,SGD反向传播在tracking问题中基本不可能实时。

最早16CVPRw的SINT就是在线不更新的,不更新当然速度快,但对特征的要求更高,特征必须对各种干扰和形变都非常鲁棒。SiamFC的特征来自AlexNet的conv5,属于高层语义特征,也就是说,这一层特征已经知道它要跟踪的是什么了,不会像HOG那样苛求纹理相似度。举个例子,如果跟踪目标是人,不论躺着或站着,conv5都能“认出来”这是人,而纹理特征如HOG或conv1可能完全无法匹配。

(什么是纹理,什么是语义,有无明显的界限?如果有一张100*100的苹果图像,1万个像素 vs. 一个词“apple”,算两个极端吗?)

在线不更新带来的另一个好处,SiamFC是目前最优秀的long-term跟踪算法。因为目标永远不会被污染,而且检测区域足够大,轻微的偏航都可以随时找回来。对比如下(ROUND 2):在线更新:优点->随时适应目标的变化,和背景信息的变化,对特征的要求较低,低层特征计算速度快分辨率高;缺点->模型更新会累计误差,遮挡或失败时会学到背景,丢失后再也找不回来。

在线不更新:优点->不更新速度更快,跟踪目标永远不会被污染,long-term特性非常优秀;缺点->对特征的要求非常高,必须是表达能力足够强足够鲁棒的特征,通常高层特征计算速度慢、分辨率低。

检测区域:目标图像是加了纹理扩展的,类似Staple中的padding=1,而检测区域又是目标图像的4倍,这一设置接近ECO和BACF的检测区域,而且特征图还不用加余弦窗,检测区域算非常大了。

训练样本:SiamFC是第一个用2015 ILSVRC Object detection from video task (VID)训练的,上一篇博文已经分析过用跟踪数据库训练有严重过拟合嫌疑,而且训练数据量有限。VID有4417个视频,超过2百万标注帧,非常适合训练跟踪算法,很高兴看到今年很多论文都用这个数据库训练,我们看到的论文结果相对公平。SiamFC训练数据越多效果越好,能得益于大数据。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/188480.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • jvisualvm 工具使用

    jvisualvm 工具使用转自:https://www.cnblogs.com/kongzhongqijing/articles/3625340.html jvisualvm工具使用 VisualVM是Netbeans的profile子项目,已在JDK6.0update7中自带(java启动时不需要特定参数,监控工具在bin/jvisualvm.exe)。 https…

    2022年10月30日
  • CICD构建实验「建议收藏」

    CICD构建实验「建议收藏」CICDCICD是一个可以集部署、拉取、上传等于一体的架构环境,它支持一线进行部署,免去了人工一条条的进行部署环境的工作流程,大大降低了人力手工运维成本和出错率。CICD的搭建需要至少三台服务器,他们分别监管着Harbor(镜像仓库存储),git(开发代码仓库存储),Jenkings(一键化部署)企业级镜像Harbor部署docker镜像级的存储可以储存在dockerhub上,也可以储存在自建本地仓库上,而Harbor属于本地仓库的其中一种,该软件可以提供图形化界面操作,安装简单,且方便查看。

    2022年5月5日
  • 【知识小结】PHP使用svn笔记总结

    【知识小结】PHP使用svn笔记总结

    2021年10月22日
  • 2021Java高级面试题及答案,太牛了!

    2021Java高级面试题及答案,太牛了!什么是RPC?RPC原理是什么?什么是RPC?RPC(RemoteProcedureCall)—远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。比如两个不同的服务A、B部署在两台不同的机器上,那么服务A如果想要调用服务B中的某个方法该怎么办呢?使用HTTP请求当然可以,但是可能会比较慢而且一些优化做的并不好。RPC的出现就是为了解决这个问题。RPC原理是什么?服务消费方(client)调用以本地调用方式调用服务;client

    2022年7月18日
  • 什么学习软件需要身份证验证_什么是两层身份验证,为什么我需要它?

    什么学习软件需要身份证验证_什么是两层身份验证,为什么我需要它?什么学习软件需要身份证验证Moreandmorebanks,creditcardcompanies,andevensocialmedianetworksandgamingsitesarestartingtousetwo-factorauthentication.Ifyou’realittleunclearonwhatitisoronw…

    2022年5月10日
  • Pychram引入conda环境[通俗易懂]

    Pychram引入conda环境[通俗易懂]Pychram引入conda环境一、前言考虑到:①pycharm比Spyder功能全面,②anaconda的环境配置方便,这两个因素,所以想要在pycharm上引入condaenvironment,充分利用Anaconda的库函数。二、导入步骤1.创建一个project,并在File栏中,点击settings…,进入设置界面2.在setting界面下,找到当前工程,并选中其中的PythonInterpreter3.点击右上角的齿轮图表4.在弹出的会话框中,选中Add…5.在Ad

    2022年8月26日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号