目录
二维人体关节点只能提供图像平面内的位置信息,丢失深度维度,单张图像下三维人体姿态求解属于病态逆问题,同一组二维关节点可以对应多套不同的三维人体姿态解。传统解析求解方法易受噪声、关节点检测误差影响,容易陷入局部最优解。遗传算法(Genetic Algorithm,GA)作为全局随机搜索优化算法,依靠种群进化机制,能够在姿态解空间内搜索最优三维人体姿态,让投影得到的二维关节点与输入二维检测关节点误差最小,以此完成三维人体姿态估计。
1.算法基本原理
二维转三维姿态估计核心思想:给定图像检测得到的N个人体二维关节像素坐标,把三维人体姿态参数作为遗传算法种群个体,通过相机投影模型,将候选三维人体关节投影到二维图像平面,计算投影二维关节与输入检测二维关节之间的误差,将该误差作为适应度评价指标。经过选择、交叉、变异的迭代进化操作,不断淘汰误差大的姿态个体,保留误差小的姿态个体,种群逐步收敛,最终输出最优三维人体关节坐标。
人体姿态参数化是GA优化的基础。不直接把全部三维关节坐标作为优化变量,会大幅提升搜索维度,造成寻优效率低下。一般采用人体骨架模型,以根节点(骨盆)三维平移向量,加上各个关节的旋转角度作为待优化参数。人体骨架为树型层级结构,根节点确定人体整体空间位置,其余关节相对于父关节做局部旋转,由局部旋转矩阵递归计算全部关节三维坐标。遗传算法的每一个个体,代表一组完整的姿态参数组合,对应一套完整三维人体姿态。
相机采用针孔透视投影模型,将三维世界坐标系下人体关节点映射到二维图像像素平面。优化目标就是最小化重投影误差,同时引入人体骨骼长度约束,人体骨骼相邻关节之间骨骼长度是固定生理参数,抑制生成物理上不可能出现的畸形姿态,缩小无效搜索空间,提升解的物理合理性。遗传算法不依赖梯度信息,不需要目标函数可导,能够处理姿态估计的非凸、多局部最优的优化问题,对二维关节检测噪声具备一定鲁棒性。
1.1人体骨架前向运动学模型

1.2 针孔相机投影模型

1.3 适应度函数
适应度函数用于评价遗传算法中每个个体姿态的优劣,由重投影误差项与骨骼长度约束惩罚项两部分组成。重投影误差衡量投影二维点和检测二维点之间像素距离;惩罚项约束骨骼长度,保证生成人体骨架符合真实生理尺寸。

2.部分核心代码
clc;
clear;
close all;
warning off;
addpath 'func\'
addpath 'func\GA_toolbox\'
%初始spread
mu = 1;
%根据遗传算法进行参数的拟合
MAXGEN = 20;
NIND = 50;
Chrom = crtbp(NIND,1*10);
%14个变量的区间
Areas = [0.5;
1.5];
FieldD = [rep([10],[1,1]);Areas;rep([0;0;0;0],[1,1])];
LR = zeros(NIND,1);
MU2 = zeros(MAXGEN,1);
gen = 0;
for a=1:1:NIND
a
LR(a) = mu;
%计算对应的目标值
errs = func_obj(LR(a));
E = errs;
J(a,1) = E;
end
Objv = (J+eps);
gen = 0;
while gen < MAXGEN;
gen
P1 = 0.9;
P2 = 1-P1;
FitnV=ranking(Objv);
Selch=select('sus',Chrom,FitnV);
Selch=recombin('xovsp', Selch,P1);
Selch=mut( Selch,P2);
phen1=bs2rv(Selch,FieldD);
for a=1:1:NIND
if gen == 1
LR(a) = mu;
else
LR(a) = phen1(a,1);
end
%计算对应的目标值
errs = func_obj(LR(a));
E = errs;
JJ(a,1) = E;
end
Objvsel=(JJ+eps);
[Chrom,Objv]=reins(Chrom,Selch,1,1,Objv,Objvsel);
gen=gen+1;
%保存参数收敛过程和误差收敛过程以及函数值拟合结论
MU2(gen) = mean(LR);
Error(gen) = mean(JJ);
deltaf = Error(gen);
end
MU_best = MU2(end);
MU_best
save best_mu.mat MU_best
A09-51
3.仿真结论





遗传算法依靠全局搜索能力,针对二维到三维姿态估计的多解病态问题,不需要初值猜测,对二维关节检测噪声有一定容忍度。引入骨骼长度约束,有效过滤物理无效姿态解。但是算法缺点也十分突出,种群规模与迭代次数会直接影响计算耗时,优化变量维度较高时收敛速度慢;容易出现种群后期多样性下降,出现早熟收敛。工程上一般可以做改进:结合梯度局部优化,GA 输出结果作为初始值再做局部微调;缩小参数搜索范围;采用自适应交叉、变异概率,进一步提升收敛性能。
96

被折叠的 条评论
为什么被折叠?



