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

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

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

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训练数据越多效果越好,能得益于大数据。

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 以太坊私有链搭建_以太坊节点减少

    以太坊私有链搭建_以太坊节点减少网上关于如何搭建私链的文章很多,但是看来看去都是一样的,千篇一律,想找点不一样,新鲜的知识很难,本文总结归纳那些文章的内容,从使用私链的角度出发写了一篇比较全面的博客,内容包含以下几点:windows单节点 windows多节点 linux创建节点并,windows远程使用linux节点 linux节点和Windows节点建立连接(网络原因,提供思路)1.windows单节…

  • pytest skipif_jmeter阶梯式加压并发用户数

    pytest skipif_jmeter阶梯式加压并发用户数前言pytest.mark.skip可以标记无法在某些平台上运行的测试功能,或者您希望失败的测试功能Skip和xfail:处理那些不会成功的测试用例你可以对那些在某些特定平台上不能运行的测试用

  • 测试环境和生产环境数据同步_Django开发测试生产环境

    测试环境和生产环境数据同步_Django开发测试生产环境一、五种环境1、开发环境(DEV):开发环境是程序猿们专门用于开发的服务器,配置可以比较随意,为了开发调试方便,一般打开全部错误报告。2、测试环境(UAT):一般是克隆一份生产环境的配置,一个程序在测试环境工作不正常,那么肯定不能把它发布到生产机上。3、生产环境(PROD):是指正式提供对外服务的,一般会关掉错误报告,打开错误日志。可以理解为包含所有的功能的环境,任何项目所使用的环境都以这…

  • 什么是入门_初学板和专业板的区别

    什么是入门_初学板和专业板的区别1、Python,Pycharm,Anaconda区别与联系子曰:“工欲善其事,必先利其器”学习Python就需要有编译Python程序的软件,一般情况下,我们选择在Python官网下载对应版本的Python然后用记事本编写,再在终端进行编译运行即可。而在许多教程都推荐使用Anaconda和Pycharm,这到底是什么?对于小白来说,很懵逼。在学习Java时,正常情况选择安装JD…

  • sprintf函数用法注意事项

    sprintf函数用法注意事项注意字符串格式化时不要,输入和输出参数不要使用同一个字符数组。springt函数处理流程分析:输入和输出参数不同sprintf(str2,“ab%s”,str):输入和输出参数相同sprintf(str,“ab%s”,str):示例#include<stdio.h>intmain(){ charstr[10]=”0123456789″;…

  • pytest fixtures_figure可数吗

    pytest fixtures_figure可数吗fixture的优势Pytest的fixture相对于传统的xUnit的setup/teardown函数做了显著的改进:命名方式灵活,不局限于setup和teardown这几个命名conf

发表回复

您的电子邮箱地址不会被公开。

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