siamRPN论文理解与复现
**论文地址:http://openaccess.thecvf.com/content_cvpr_2018/papers/Li_High_Performance_Visual_CVPR_2018_paper.pdf
论文讲解:
siamRPN的网络结构由两部分组成,siam+RPN
Siam部分:主要功能是提取特征
RPN部分:功能为产生候选框以及二分类vector
RPN流程:
①从主干网络得到template Frame 特征向量和detection Frame特征向量之后,对这两组特征向量分别使用3*3的卷积核卷积两次,一次用来计算回归框[t_r_k,d_r],一次用来预测类别[t_c_k,d_c];
② 分别对这两任务分支求相关,得到分别的回归候选框相关向量reg和二分类相关向量cls。
回归候选框流程:
①在x,y两个轴方向,以16为步长遍历detection Frame,得到289个anchor,为了解决自动调节目标框大小的问题,将每个anchor配备5个尺度{0.33,0.5,1,2,3},最终得到1445个anchor;
②用步骤①得到的1445个anchor与标准框作IOU处理,取前16个IOU最大的anchor作为正样本,后48个作负样本,于是得到64个回归框偏移{dx,dy,dw,dh}label以及对应二分类{0,1}label;
③上图中的reg节点,为网络回归框的输出,reg一行的通道数为4k的意思为每个anchor有4个需要归回的坐标偏移参数(dx,dy,dw,dh),每个anchor有5个尺度,最终的output size为[17,17,20];
④将reg的输出reshape处理,得到尺寸为[1445,4]的vector “per_box”;
pre_box=tf.reshape(pre_box,(-1,4))
⑤计算正样本与预处理框per_box之间的距离,负样本和无效样本与预处理框per_box之间的距离均置零;
inside=tf.multiply(target_inside_weight,tf.subtract(pre_box, target_box))
⑥将大于1的距离均置为1,保留小于1的距离
mask=tf.cast(tf.less(tf.abs(inside),1),tf.float32)
⑦0.5x^2
option1=tf.multiply(tf.multiply(inside,inside),0.5)
⑧|x|-0.5
option2=tf.subtract(tf.abs(inside),0.5)
⑨使用smooth_l1作回归框的损失函数
相当于在小于1的部分使用2范数(更smooth,且求导方便),在大于1的部分使用1范数(避免梯度,然后加起来最后求均值。
smooth_l1=tf.multiply(tf.add(tf.multiply(option1,mask),tf.multiply(option2,tf.subtract(1.,mask))),target_outside_weight)
(1)二分类流程:
①去掉label为-1的无效标签,只保留标签为0和1的那64个有效标签组成预测标签
②使用交叉熵函数作为分类损失函数。
cls_loss = tf.reduce_mean(tf.nn.sparse_softmax_cross_entropy_with_logits(logits=pre_score_valid, labels=label_valid))
复现:使用VOT2013训练模型
(一):下载工程
https://github.com/makalo/Siamese-RPN-tensorflow
(二)准备数据
①新建date文件到工程根目录
将vot2013下载加压后,将整个VOT2013目录放到date里(VOT2016数据集形式跟VOT2013不同,使用时,需要转化成VOT2013形式,否则跑不起来)
(三)修改数据集路径
(四)训练
run train.py
训练自己的数据集时,只需要将数据集形式制作成VOT2013形式即可。
(五)跟踪过程
inference 阶段
第一帧:
与训练template frame数据处理过程一样,在目标附近截取一块,然后resize到127* 127大小。送到训练好的模型中,保存Weight for Regression 与Weight for Classification。后不更新。
待跟踪帧:
以前一帧位置为中心,截取一个比较大的区域,然后resize到255* 255大小。送到训练好的模型中,到Classification Branch时,使用第一帧保留的Weight for Classification去卷积待跟踪帧提取的相应特征,得到17 * 17 * 10的分类vector输出;并行的,此处还有一个Regression Branch,使用第一帧保留的Weight for Regression去卷积待跟踪帧提取的相应特征,得到17* 17* 20的回归vector输出;用公式表示为:
网络输出17* 17* 5=1445个偏移,这个阶段最后的输出也将是1445的回归框
②Proposal selection(论文中给出了两种Proposal selection,源码中只采用了第二种,我就只关注了第二种:cosine window and scale change penalty)
cosine window是为了抑制较大位移;scale change penalty是为了抑制目标尺寸有较大的变化;
(一)先进行scale penalty
将得到的惩罚因子与网络Classification Branch的output相乘,得到惩罚后的得分预测psore;
(二)然后使用汉宁窗对上一步得到的分数预测psore进行加权余弦窗处理
使用nms得到最后的跟踪框,然后更新这帧的跟踪框作为下一帧需要跟踪帧的初始框。
siamRPN论文理解与复现相关推荐
- InfoGAN论文理解及复现
InfoGAN论文理解及复现 by AHU Random_Walker 主要从四个方面来了解相关工作,即 Motivation Related Work-Method Experiments Conc ...
- 非真实感渲染(NPR)论文理解及其复现(Unity) - 《Stylized Highlights for Cartoon Rendering and Animation》
Stylized Highlights for Cartoon Rendering and Animation 该论文的目的主要是用来渲染卡通风格的高光.复现参考自[NPR]非真实感渲染实验室 符号: ...
- 导师:顶会论文3天都复现不出来?你退学吧!
(文末招聘论文讲师) 说起国内的AI算法大赛平台,你首先会想到哪一个? 我猜你第一反应会是:阿里云天池--国内第一人工智能竞赛平台. 天池的比赛打的多了,但天池的论文复现课程你体验过吗?11月23日, ...
- SiamRPN论文学习笔记(上)
SiamRPN论文学习笔记(上) 引言 SiamRPN的网络结构 孪生子网络部分 区域候选子网络部分 RPN的诞生 区域候选子网络 训练阶段 两阶段训练 anchors尺寸设置 分类分支中anchor ...
- MobileNetV3 论文理解,以及tensorflow、pytorch相关代码
MobileNetV3论文理解,以及tensorflow+pytorch代码 MobileNetV3相关 论文地址 Block结构变化 算法内部微结构变化 网络整体结构 网络性能 Tensorflow ...
- A Learned Representation for Artistic Style论文理解
A Learned Representation for Artistic Style论文理解 这篇论文是在Perceptual losses for real-time style transfer ...
- 图卷积网络进行骨骼识别代码_【骨骼行为识别】2s-AGCN论文理解
Two-Stream Adaptive Graph Convolutional Networks for Skeleton-Based Action Recognition 论文链接: https:/ ...
- PacificA: Replication in Log-Based Distributed Storage Systems 论文理解
PacificA: Replication in Log-Based Distributed Storage Systems 论文理解 思考:论文有个结论说,相比 GFS 具有中心化的实体,Pacif ...
- [计算机视觉] AprilTag 2: Efficient and robust fiducial detection(2016)论文理解
论文地址 chrome-extension://cdonnmffkdaoajfknoeeecmchibpmkmg/assets/pdf/web/viewer.html?file=https%3A%2F ...
- [计算机视觉] AprilTag: A robust and flexible visual fiducial system(2011)论文理解
论文地址 chrome-extension://cdonnmffkdaoajfknoeeecmchibpmkmg/assets/pdf/web/viewer.html?file=https%3A%2F ...
最新文章
- 深度学习与芯片之间的羁绊往事
- 中国IT运维O2O市场产值规模预测及发展策略建议报告2022年
- Servlet线程安全2
- mysql8.0.18用什么jdk_基础命令、cake-install、mysql远程登录、JDK安装
- CentOS 7从Python 2.7升级至Python3.6.1
- garch预测 python_安利几个非常实用的 Python 库
- SAP Hybris backoffice加载的zul文件和zk文件是什么东西
- 数据库:计算地球上两个坐标点之间里程
- mockito接口_什么是Mockito Extra接口?
- MinGw编译opencv教程
- Rasa课程、Rasa培训、Rasa面试系列之: Rasa客户案例T-Mobile电信公司
- c语言头文件下载大全,C语言头文件大全
- Android Activity 透明主题 使用
- Latex 多图片排版--排版代码生成器
- Java中常用的String方法解析和使用示例
- el-form表单对象内还嵌套对象,绑定的prop规则校验会失效
- C++精确到小数点后两位取值
- 如何查看电脑是否支持Wi-Fi 6
- vps实现私人代码托管并用nginx部署hexo
- Logistic 分类器与 softmax分类器