CFNet视频目标跟踪核心源码分析——网络结构设计及实现

本文深入分析了CFNet视频目标跟踪算法的核心源码,包括网络结构设计,如join_cf_window、join_cf、join_crop_z和join_xcorr层的实现,探讨了各层的前向传播和反向传播过程,对于理解深度学习在目标跟踪中的应用具有指导意义。
摘要由CSDN通过智能技术生成

1. 论文信息

 

2. 网络结构设计及实现

根据官方实际代码,更加详细一点的网络结构如下图所示,可以看出,与SiamFC的网络结构类似,CFNet也包含两个分支——z和x,其中z分支对应目标物体模板,可以理解为目标在第 t 帧之内所有帧的模板数据加权融合(利用学习率来进行,与KCF算法类似),x分支对应目标物体搜索图像,它是目标周围的一大片区域,用于在区域内利用滑动窗口进行搜索,从而确定目标的真正位置。

 

3. join_cf_window层的实现

论文定义的join_cf_window层,其主要作用是对模板图像进行加窗,抑制边缘部分从而尽量减轻因样本循环移位带来的边缘失真(边界效应),join_cf_window层的定义位于make_net.m源码中:

join = dagnn.DagNN();
% Apply window before correlation filter.
join.addLayer('cf_window', MulConst(), ...
    {'in1'}, {'cf_example'}, {'window'});
p = join.getParamIndex('window');
join.params(p).value = single(make_window(in_sz, join_opts.window));
join.params(p).learningRate = join_opts.window_lr;

其中MulConst是作者自己定义的计算函数,其具体定义位于src/util目录下的MulConst.mmul_const.m文件中。

 

3.1 join_cf_window层的前向传播

mul_const.m文件中,关于前向传播时,其实现细节为:

y = bsxfun(@times, x, h);
varargout = {y};

其中,x表示join_cf_window层的输入数据,h表示窗,可以看出加窗的过程实质是矩阵元素级乘法,这一点与KCF算法相同。

这里需要注意的是:窗口h的定义位于src/training目录下的make_window.m源码文件中,如下所示:

function h = make_window(sz, type)
% sz = [m1, m2]

switch type
    case ''
        h = ones(sz(1:2));
    case 'cos'
        h = bsxfun(@times, reshape(hann(sz(1)), [sz(1), 1]), ...
                           reshape(hann(sz(2)), [1, sz(2)]));
    otherwise
        error(sprintf('unknown window: ''%s''', type));
end

end

 

3.2 join_cf_window层的反向传播

mul_const.m文件中,利用join_cf_window层进行反向传播时,其实现细节为:

der_x = bsxfun(@times, der_y, h);
der_h = sum(sum(der_y .* x, 3), 4);
varargout = {der_x, der_h};

这里面有一个细节需要注意:作者在设计该层的方向传播时,用的也是矩阵元素级乘法,与正向传播的计算模式相同,并没有求偏导的过程。个人推测这里面的原因是:join_cf_window层的计算任务是对数据进行加窗,这样的任务对正向和反向传播是对等的,因此反向传播计算方式与正向传播类似。

 

4. join_cf层的实现

join_cf层是论文中非常关键的一层,文章的核心内容几乎全体现在这一层里面了。该层的定义位于make_net.m源码中:

join.addLayer('cf', ...
    CorrFilter('lambda', join_opts.lambda, 'bias', join_opts.bias), ...
    {'cf_example'}, cf_outputs, {'cf_target'});

其中CorrFilter是作者自己定义的函数,它的具体定义位于src/util目录下的CorrFilter.mcorr_filter.m文件中,两者的关系是

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值