SiamFC代码配置复现 matlab版本

原创

SiamFC代码配置复现

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/ZZXin_/article/details/88078116

写在前面

最近在研究SiamRPN,究其根本,CNN依托于AlexNet骨架,所以花些功夫研究以下SiamFC代码,将其阶段性复现。

[ Tracking only ]

关于GPU显卡配置、cudn和cudnn安装可以参考Ubuntu16.0下安装显卡驱动、 cuda10.0 、cudnn的活生生案例

1.Ubuntu16.04配置Matconvnet

[可参考官方教程](http://www.vlfeat.org/matconvnet/)

%% 编译安装MatConvNet工具箱
mex -setup,mex -setup C++ %绑定C++编译器
% 将matlab工作路径切换到./MatConvNet,在该工作空间下输入:
addpath matlab %添加搜索路径
vl_compilenn %编译工具箱-一般编译(使用cpu)(注:一般在这行会报错,可用以下代码替换:vl_compilenn('EnableImreadJpeg',false))
vl_setupnn %启动工具箱
% 以下两种方式二选一即可
vl_compilenn('enableGpu',true) %使用cuda编译,编译速度一般
vl_compilenn('enableGpu',true,'cudaRoot','/usr/local/cuda-10.0','cudaMethod','nvcc','enableCudnn',true,'cudnnRoot','local/cudnn5') %使用cudnn编译(具体相应的路径名根据自身实际情况进行设置)
%% 测试
vl_testnn %测试cpu编译成功
vl_testnn('gpu',true) %测试GPU编译成功

     
     
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

注意:以上对MatConvNet的配置均在MatConvNet所在的工作目录下进行

2.运行阶段:
run_tracker('vot15_bag',1)

     
     
  • 1

注意:对于一些关键路径的修改,可根据报错提示进行相对应的修改,关于stats.mat文件,可以参考SiamFCdemo运行所需stats.mat文件,下载后放到相对应的文件路径即可;最后运行以上一句代码即可。
[2019/3/2 写]


看到一个相对比较良心的代码复现博文[论文复现] Fully-Convolutional Siamese Networks for Object Tracking可作为参考;
[2019/3/3 更]


MatConvNet是什么
MatConvNet函数文档
[2019/3/4 更]


又写在前面

突然警醒到:深度学习的关键所在在于神经网络的训练过程,你所搭建的自己的architecture一旦形成,需要利用相应的数据集进行训练,得到真正属于自己的architecture的权重参数,这才是end to end的真谛吧。
所以就有了接下来的工作,balabalabala…

[ Training only ]

关于配置问题,参见上面的[Training only]部分,在这里需要指出的是Matconvnet的版本问题,本人用的是v1.0-beta25版本,而Siamfc原作者当初用的是v1.0-beta20版本(Matconvnet工具箱下载链接),在tracking阶段,两者均可,但是,在训练阶段,可能由于版本的原因,会弹出一些很痛心的bug…诸如此图(ps:如果你到了这一步,你真的就离成功不远了,我真的是费了九牛二虎之力才到了这一步,奈何我是如此之菜…)
vl_nnbnorm错误关于解决方案,先别着急,等到了这一步自会说;

1.进行图片原始数据的预处理工作

在这里插入图片描述上图为step-by-step instructions步骤;【1】中链接为ILSVRC官网下载链接,但是需要注册,如果对官网所给的数据集并不是了解的话,建议使用这个直截了当的链接——ILSVRC2015_VID数据集下载链接,直接点击下载即可,一共89.6G;
【3】中要求做的是将VID中的validation和train数据集合并为一个,并将相应的5个文件夹的名称改为a,b,c,d,e;
【4】中按要求运行即可,
【5】中要求对每个视频的每一帧图片进行相应的处理(合并了一些信息),这一步骤耗费了大约一周的时间,持续不断的运行,5个matlab并行处理,全是泪…
【6】中对图片中的object进行操作,但是按要求运行并没有什么卵用,空的,不知道哪里出了问题,所以基于【7】以上步骤做的工作全部作废,一周的运行化为泡影…
所以,作此总结:
使用谷歌浏览器直接下载imdb_video.mat即可,给出的【4-7】的操作只为了得到一个它,所以直接下载它即可;
【8】中搞不懂它在做些什么;
【9】中需要做的是复制ILSVRC2015文件夹的tree结构供后续【10】中作crop得到的图片存储用,按照给定的要求做即可,这里以Ubuntu为例(过程可作参考,结合自身理解后期记录,可能会有错误,但能够有些帮助,知道相应的指令能够完成怎样的操作):

#将当前路径下的文件夹的tree结构存储到dirs.txt
find . -type d >dirs.txt
#新建一个文件夹ILSVRC2015_
mkdir ILSVRC2015_
cd ILSVRC2015_ | cp ../ILSVRC2015/dirs.txt ./
# 从dirs.txt产生相应的目录
xargs mkdir -p <dirs.txt

     
     
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

【10】中运行save_crops.m;这里虽然他那样讲,但是实际并不能够达到效果,会出现一些bugs,以下可以作为参考:

% load imdb_video.mat
imdb_video = load('/home/db/Subject/SiamFC/v1/siamese-fc/cfnet_imdb_video_2016-10.mat')
% run save_crop
% -imdb_video这里用imdb_video.imdb_video,你查看导入的imdb_video即能明白为啥这么做;
% v_1:1;v_end:4417;一共4417组VID,对其全部进行crop操作
% root_original:你存放ILSVRC2015的路径;root_crops:crop后存放的图片路径
%save_crops(imdb_video,v_1,v_end, root_original, root_crops)
save_crops(imdb_video.imdb_video,1,4417,'/home/db/Subject/SiamFC/v1/siamese-fc/ILSVRC2015', '/media/db/ZZXin EXT/ILSVRC2015_')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

【11】中可以按照要求做,忘记自己run的还是直接下载的,建议还是用原作者给的吧
至此,对图片的原始数据预处理工作全部完成;

2. training过程

在这里插入图片描述

  1. 配置Matconvnet(和上同),可以将这个文件写成一个脚本文件即可,每次进行Matconvnet的配置运行该脚本即可;
%% 编译安装MatConvNet工具箱
mex -setup,mex -setup C++ %绑定C++编译器
% 将matlab工作路径切换到./MatConvNet,在该工作空间下输入:
addpath matlab %添加搜索路径
vl_compilenn %编译工具箱-一般编译(使用cpu)(注:一般在这行会报错,可用以下代码替换:vl_compilenn('EnableImreadJpeg',false))
vl_setupnn %启动工具箱
% 以下两种方式二选一即可
vl_compilenn('enableGpu',true) %使用cuda编译,编译速度一般
vl_compilenn('enableGpu',true,'cudaRoot','/usr/local/cuda-10.0','cudaMethod','nvcc','enableCudnn',true,'cudnnRoot','local/cudnn5') %使用cudnn编译(具体相应的路径名根据自身实际情况进行设置)
%% 测试
vl_testnn %测试cpu编译成功
vl_testnn('gpu',true) %测试GPU编译成功

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

注:该脚本的运行路径是在Matconvnet文件夹下;

  1. 移除掉siam-fc/training/下的.example后缀,修改env_paths_training中的访问路径(很重要)
    % 这里是到crop后的ILSVRC2015_crops的路径,要涵盖全,一直到train/下
    % opts.rootDataDir = '/path/to/ILSVRC2015_crops/Data/VID/train/';
    opts.rootDataDir = '/media/db/ZZXin EXT/ILSVRC2015_/Data/VID/train';
    % 一直到imdb_video.mat的路径
    %opts.imdbVideoPath = '/path/to/imdb_video.mat';
    opts.imdbVideoPath = '/home/db/Subject/SiamFC/v1/siamese-fc/cfnet_imdb_video_2016-10.mat';
    % 一直到imageStats.mat的路径
    %opts.imageStatsPath = '/path/to/imageStats.mat';
    opts.imageStatsPath = '/home/db/Subject/SiamFC/v1/siamese-fc/cfnet_ILSVRC2015.stats.mat';

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  1. 直接运行run_experiment.m
# 运行training主程序
run_experiment(imdb_video.imdb_video)

 
 
  • 1
  • 2

至此,大工告成了么?
并没有,还记得最初的那个bug么?
解决方案
在这里插入图片描述
将BatchNorm.m中的第32行的参数‘moments’整行删除掉,并将第33行% obj.moments=[ ]注释掉;
至此,完工。
[2019/4/29 写]

                                </div>
            <link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-095d4a0b23.css" rel="stylesheet">
                </div>
</article>
<div class="postTime">
            <div class="article-bar-bottom">
        <div class="reward-user-box">
            <span class="reward-word">有 <span class="num">0</span> 个人打赏</span>
                        </div>
    </div>
            <span class="time">
        文章最后发布于: 2019-04-29 22:18:06        </span>
</div>
        <div class="recommend-box"><div class="recommend-item-box type_blog clearfix" data-report-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/skywalker_123/article/details/88718588&quot;,&quot;strategy&quot;:&quot;BlogCommendFromMachineLearnPai2&quot;,&quot;index&quot;:&quot;0&quot;}">
<div class="content" style="width: 852px;">
	<a href="https://blog.csdn.net/skywalker_123/article/details/88718588" target="_blank" rel="noopener" title="SiamFC代码运行注意事项">
	<h4 class="text-truncate oneline" style="width: 692px;">
			<em>SiamFC</em><em>代码</em>运行注意事项		</h4>
	<div class="info-box d-flex align-content-center">
		<p class="date-and-readNum oneline">
			<span class="date hover-show">03-21</span>
			<span class="read-num hover-hide">
				阅读数 
				620</span>
			</p>
		</div>
	</a>
	<p class="content" style="width: 852px;">
		<a href="https://blog.csdn.net/skywalker_123/article/details/88718588" target="_blank" rel="noopener" title="SiamFC代码运行注意事项">
			<span class="desc oneline">把权重文件下载好,在SiamFC文件夹下建立net文件夹,放入2016-08-17.net以下路径都配对:env_paths_trackingrun_trackerstartup命令行输入:run_t...</span>
		</a>
		<span class="blog_title_box oneline ">
								<span class="type-show type-show-blog type-show-after">博文</span>
										<a target="_blank" rel="noopener" href="https://blog.csdn.net/skywalker_123">来自:	<span class="blog_title"> skywalker_123的博客</span></a>
											</span>
	</p>
</div>
</div>
<div class="comment-edit-box d-flex">
	<a id="commentsedit"></a>
	<div class="user-img">
		<a href="//me.csdn.net/weixin_44287997" target="_blank" rel="noopener">
			<img class="" src="https://avatar.csdn.net/9/D/8/3_weixin_44287997.jpg">
		</a>
	</div>
	<form id="commentform">
		<input type="hidden" id="comment_replyId">
		<textarea class="comment-content" name="comment_content" id="comment_content" placeholder="想对作者说点什么"></textarea>
		<div class="opt-box"> <!-- d-flex -->
			<div id="ubbtools" class="add_code">
				<a href="#insertcode" code="code" target="_self"><i class="icon iconfont icon-daima"></i></a>
			</div>
			<input type="hidden" id="comment_replyId" name="comment_replyId">
			<input type="hidden" id="article_id" name="article_id" value="88078116">
			<input type="hidden" id="comment_userId" name="comment_userId" value="">
			<input type="hidden" id="commentId" name="commentId" value="">
			<div style="display: none;" class="csdn-tracking-statistics tracking-click" data-report-click="{&quot;mod&quot;:&quot;popu_384&quot;,&quot;dest&quot;:&quot;&quot;}"><a href="#" target="_blank" class="comment_area_btn" rel="noopener">发表评论</a></div>
			<div class="dropdown" id="myDrap">
				<a class="dropdown-face d-flex align-items-center" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">
				<div class="txt-selected text-truncate">添加代码片</div>
				<svg class="icon d-block" aria-hidden="true">
					<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-triangledown"></use>
				</svg>
				</a>
				<ul class="dropdown-menu" id="commentCode" aria-labelledby="drop4">
					<li><a data-code="html">HTML/XML</a></li>
					<li><a data-code="objc">objective-c</a></li>
					<li><a data-code="ruby">Ruby</a></li>
					<li><a data-code="php">PHP</a></li>
					<li><a data-code="csharp">C</a></li>
					<li><a data-code="cpp">C++</a></li>
					<li><a data-code="javascript">JavaScript</a></li>
					<li><a data-code="python">Python</a></li>
					<li><a data-code="java">Java</a></li>
					<li><a data-code="css">CSS</a></li>
					<li><a data-code="sql">SQL</a></li>
					<li><a data-code="plain">其它</a></li>
				</ul>
			</div>  
			<div class="right-box">
				<span id="tip_comment" class="tip">还能输入<em>1000</em>个字符</span>
				<input type="button" class="btn btn-sm btn-cancel d-none" value="取消回复">
				<input type="submit" class="btn btn-sm btn-red btn-comment" value="发表评论">
			</div>
		</div>
	</form>
</div>

	<div class="comment-list-container">
	<a id="comments"></a>
	<div class="comment-list-box" style="max-height: none;"><ul class="comment-list"><li class="comment-line-box d-flex" data-commentid="10644994" data-replyname="weixin_44287997">      <a target="_blank" href="https://me.csdn.net/weixin_44287997"><img src="https://avatar.csdn.net/9/D/8/3_weixin_44287997.jpg" alt="weixin_44287997" class="avatar"></a>        <div class="right-box ">          <div class="new-info-box clearfix">            <a target="_blank" href="https://me.csdn.net/weixin_44287997"><span class="name ">目标跟踪的小白妹子</span></a><span class="date" title="2019-09-28 09:27:18">1周前</span><span class="floor-num">#4楼</span><span class="new-comment">。</span><span class="new-opt-box"><a class="btn btn-link-blue btn-delete" data-type="delete">删除</a><a class="btn btn-link-blue btn-report" data-type="report">举报</a><a class="btn btn-link-blue btn-reply" data-type="reply">回复</a><a class="btn btn-link-blue btn-read-reply" data-type="readreply">查看回复(3)</a></span></div><div class="comment-like " data-commentid="10644994"><svg class="icon "><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-thumbsup"></use></svg><span></span></div></div></li><li class="replay-box"><ul class="comment-list"><li class="comment-line-box d-flex" data-commentid="10648675" data-replyname="ZZXin_">      <a target="_blank" href="https://me.csdn.net/ZZXin_"><img src="https://avatar.csdn.net/B/0/4/3_zzxin_.jpg" alt="ZZXin_" class="avatar"></a>        <div class="right-box reply-box">          <div class="new-info-box clearfix">            <a target="_blank" href="https://me.csdn.net/ZZXin_"><span class="name mr-8">ZZXin_</span></a><span class="text">回复</span>  <span class="nick-name">目标跟踪的小白妹子</span><span class="date" title="2019-09-28 22:41:43">1周前</span><span class="text"></span><span class="new-comment">

emmmmmmm…举报回复

  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值