✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,代码获取、论文复现及科研仿真合作可私信。
🍎个人主页:Matlab科研工作室
🍊个人信条:格物致知。
更多Matlab完整代码及仿真定制内容点击👇
🔥 内容介绍
在计算机视觉和目标跟踪领域,扩展目标泊松多伯努利混合 (PMBM) 跟踪器是一种先进的技术,用于在复杂场景中跟踪多个目标。它通过将目标建模为泊松分布的混合,实现了对目标数量不确定性的处理,同时利用多伯努利过程来描述单个目标的生存和观测概率。
PMBM 跟踪器的原理
PMBM 跟踪器基于以下假设:
-
场景中的目标数量服从泊松分布。
-
每个目标的状态由马尔可夫链表示。
-
目标的观测概率由多伯努利过程描述。
PMBM 跟踪器通过维护一组粒子来表示目标状态的后验分布。每个粒子代表一个可能的轨迹,其中包含目标状态的估计值和相关的权重。
PMBM 跟踪器的算法
PMBM 跟踪器的算法包括以下步骤:
-
**初始化:**初始化粒子集,每个粒子代表目标状态的一个可能值。
-
**预测:**根据目标运动模型,预测每个粒子的状态。
-
**更新:**使用观测数据更新粒子权重,根据多伯努利过程计算观测概率。
-
**采样:**根据粒子权重重新采样粒子集,以消除低权重粒子。
-
**合并:**合并粒子集中的轨迹,以获得目标估计值。
PMBM 跟踪器的优点
PMBM 跟踪器具有以下优点:
-
**处理目标数量不确定性:**它允许目标数量随时间变化,而不需要预先知道。
-
**鲁棒性:**它对遮挡、杂波和目标外观变化具有鲁棒性。
-
**实时性:**它可以在实时环境中运行,处理高帧率视频数据。
PMBM 跟踪器的应用
PMBM 跟踪器已广泛应用于各种计算机视觉和目标跟踪任务中,包括:
-
行人跟踪
-
车辆跟踪
-
动物跟踪
-
运动目标检测
结论
扩展目标泊松多伯努利混合 (PMBM) 跟踪器是一种先进的技术,用于在复杂场景中跟踪多个目标。它通过处理目标数量不确定性和利用多伯努利过程来描述目标生存和观测概率,实现了鲁棒和准确的目标跟踪。PMBM 跟踪器在计算机视觉和目标跟踪领域有着广泛的应用,为实时环境中的目标跟踪提供了强大的解决方案。
📣 部分代码
function [mkT,PkT,vkT,VkT] = factorizedGIWsmoothing(mkk,Pkk,vkk,Vkk,mk1T,Pk1T,vk1T,Vk1T,vk1k,Vk1k,models)
% Models
Q = models.Q;
Ts = models.Ts;
d = models.d;
n = models.n;
% Motion model
[fm,Fm] = models.motionModel(mkk,Ts);
%% Gaussian
% Predicted mean
mk1k = fm;
% Predicted covariance
Pk1k = Fm*Pkk*Fm.' + Q;
% Make sure P is symmetric
Pk1k = 0.5*(Pk1k + Pk1k.');
% Smoothing gain
G = Pkk*Fm.'/Pk1k;
% Smoothed mean
mkT = mkk + G*(mk1T - mk1k);
% Smoothed covariance
PkT = Pkk - G*(Pk1k-Pk1T)*G.';
% Make sure P is symmetric
PkT = 0.5*(PkT + PkT.');
%% Inverse Wishart
% Division of IW k+1|T and IW k+1|k is porportional to IW(e,E)
e = vk1T-vk1k;
E = Vk1T-Vk1k;
% Make sure that n is large enough for the given e
if n<max([2*(d+1)^2/e+0.1 , 3*(d+1)-e+0.1])
n = max([2*(d+1)^2/e+0.1 , 3*(d+1)-e+0.1]);
end
% inverse transformation matrix
[Mm,M1,M2,I_x] = models.inverseMatrixTransformationFunction(mkT);
if isempty(I_x)
% No matrix transformation dependent on the kinematic state
% i.e., M(x) is assumed to be an identity matrix
% Density approximations achieved by matching E[X] and E[X^-1] instead
% of minimising the KL-div
k = (e- (2*(d+1)^2)/n )/(1 +e/n - 3*(d+1)/n);
K = E/(1+(e-3*(d+1))/n);
elseif models.KLdiv_minimization_flag
% Matrix transformation function is used, density approximations by
% minimizing the KL divergence
% GB2(Xk ; a, b, A, zeros) can be approximated as IW(Xk ; g, G) by
% matching E[X] and E[X^-1]
g = ( e-2*(d+1)^2/n ) / ( e/n+1-3*d/n-3/n );
% G = ((1+e/n-3*d/n-3/n)^-1)*iM*E*iM.';
% The matrix density iM(x)*E*iM(x).' induced by N(x;m,P) is approximated as
% Wishart
% The matrix E must have eigenvalues>0
[w,v]=eig(E,'vector');
E = w*diag(max(v,1e-5))*w.';
% Compute approximations of expected values
[E_logdetX,E_X,E_invX] = approximateMatrixTransformationExpectedValues(E,PkT,Mm,M1,M2,I_x,d);
% Wishart approximation
[h,H] = WishartApproximation(E_X,E_logdetX,g,d);
if h<=d+1
% If h is too small, there might be numerical issues
% Approximate instead by matching E[X] and E[X^-1]
E_X_invX = E_X*E_invX;
E_X_invX_I = E_X_invX - eye(d);
% Least squares solution
h = 0.5*(trace(E_X_invX_I\((d+1)*E_X_invX))); %E_X_invX_I(:)\((d+1)*E_X_invX(:));
H = E_X/h;
end
% The integral
% int IW(Xk ; g, G) N(xk ; m, P) dxk
% can then be approximated by
% int IW(Xk ; g, ((1+e/n-3*d/n-3/n)^-1)*Yk)W(Yk; h, H) dYk
% = GB2(Xk ; a, b, A, zeros)
a = h/2;
b = (g-d-1)/2;
A = ((1+e/n-3*d/n-3/n)^-1)*H;
if g>2*d+1 && h>d+1
% GB2(Xk ; a, b , A, zeros) is approximated as IW(Xk ; k, K) by
% minimising the KL-divergence
ExpVal_invX = (2*b/(2*a-d-1))*(eye(d)/A);
ExpVal_logdetX = log(det(A)) + sum(psi(0,eps+a-((1:d)-1)/2)-psi(0,b-((1:d)-1)/2));
[k,K] = InverseWishartApproximation(ExpVal_invX,ExpVal_logdetX,a,d);
elseif (h+d+1)*g-2*(d+1)^2>0 && h+g-2*(d+1)>0 && h>d+1
% GB2(Xk ; a, b , A, zeros) is approximated as IW(Xk ; k, K) by
% matching E[X] and E[X^-1]
k = ( (h+d+1)*g-2*(d+1)^2 )/( h+g-2*(d+1) );
K = H*h*(h-d-1)/(h+g-2*d-2);
else
k = h;
K = H;
end
else
% Matrix transformation function is used, density approximations by
% matching expected values instead
% GB2(Xk ; a, b, A, zeros) can be approximated as IW(Xk ; g, G) by
% matching E[X] and E[X^-1]
g = ( e-2*(d+1)^2/n ) / ( e/n+1-3*d/n-3/n );
% G = ((1+e/n-3*d/n-3/n)^-1)*iM*E*iM.';
% The matrix density iM(x)*E*iM(x).' induced by N(x;m,P) is approximated as
% Wishart
% The matrix E must have eigenvalues>0
[w,v]=eig(E,'vector');
E = w*diag(max(v,1e-5))*w.';
% Compute approximations of expected values
[~,E_X,E_invX] = approximateMatrixTransformationExpectedValues(E,PkT,Mm,M1,M2,I_x,d);
% Wishart approximation by matching E[X] and E[X^-1]
E_X_invX = E_X*E_invX;
E_X_invX_I = E_X_invX - eye(d);
% Least squares solution
h = ((d+1)/d)*trace(E_X_invX_I\E_X_invX);
% Make sure that h is large enough for the given g
if h+d+1 < max([2*(d+1)^2/g+1 , 3*(d+1)-g+1])
h = max([2*(d+1)^2/g+1 , 3*(d+1)-g+1])-d-1;
end
H = E_X/h;
if (h+d+1)*g-2*(d+1)^2>0 && h+g-2*(d+1)>0 && h>d+1
% GB2(Xk ; a, b , A, zeros) is approximated as IW(Xk ; k, K) by
% matching E[X] and E[X^-1]
k = ( (h+d+1)*g-2*(d+1)^2 )/( h+g-2*(d+1) );
K = H*h*(h-d-1)/(h+g-2*d-2);
else
k = 0;
K = 0;
end
end
% IW(Xk ; vkk, Vkk) IW(Xk ; k, K) is proportional to IW(Xk, vkk+k , Vkk+K)
vkT = vkk + k;
VkT = Vkk + K;
% Make sure V is symmetric
VkT = 0.5*(VkT + VkT.');
end
⛳️ 运行结果
🔗 参考文献
https://arxiv.org/abs/1605.06311
🎈 部分理论引用网络文献,若有侵权联系博主删除
🎁 关注我领取海量matlab电子书和数学建模资料
👇 私信完整代码和数据获取及论文数模仿真定制
1 各类智能优化算法改进及应用
生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、设施布局优化、可视域基站和无人机选址优化、背包问题、 风电场布局、时隙分配优化、 最佳分布式发电单元分配、多阶段管道维修、 工厂-中心-需求点三级选址问题、 应急生活物质配送中心选址、 基站选址、 道路灯柱布置、 枢纽节点部署、 输电线路台风监测装置、 集装箱船配载优化、 机组优化、 投资优化组合、云服务器组合优化、 天线线性阵列分布优化、CVRP问题、VRPPD问题、多中心VRP问题、多层网络的VRP问题、多中心多车型的VRP问题、 动态VRP问题、双层车辆路径规划(2E-VRP)、充电车辆路径规划(EVRP)、油电混合车辆路径规划、混合流水车间问题、 订单拆分调度问题、 公交车的调度排班优化问题、航班摆渡车辆调度问题、选址路径规划问题
2 机器学习和深度学习方面
2.1 bp时序、回归预测和分类
2.2 ENS声神经网络时序、回归预测和分类
2.3 SVM/CNN-SVM/LSSVM/RVM支持向量机系列时序、回归预测和分类
2.4 CNN/TCN卷积神经网络系列时序、回归预测和分类
2.5 ELM/KELM/RELM/DELM极限学习机系列时序、回归预测和分类
2.6 GRU/Bi-GRU/CNN-GRU/CNN-BiGRU门控神经网络时序、回归预测和分类
2.7 ELMAN递归神经网络时序、回归\预测和分类
2.8 LSTM/BiLSTM/CNN-LSTM/CNN-BiLSTM/长短记忆神经网络系列时序、回归预测和分类
2.9 RBF径向基神经网络时序、回归预测和分类