1.以w*h大小的彩色图像作为输入
2.经过VGG的前10层网络得到一个特征度F
3.网络分成两个循环分支,一个分支用于预测置信图S:关键点(人体关节),一个分支用于预测L:像素点在骨架中的走向(肢体)
4.第一个循环分支以特征图F作为输入,得到一组S1,L1
5.之后的分支分别以上一个分支的输出St-1,Lt-1和特征图F作为输入
6.网络最终输出S,L
7.损失函数计算S,L的预测值与groundtruth(S*,L*)之间的L2范数
S和L的groundtruth根据标注的2D点计算,如果某个关键点标注缺失则不计算该点
损失函数为每一层循环网络的损失函数之和
关键点检测:(关节)
1.通过图像中标注的2D点Xj,k计算S的groundtruth(S*)//其中Xj,k表示图片中第k个人的第j种关节
计算方法:Sj*符合正态分布,当像素点P接近注释点Xj,k时,达到正态曲线的峰值,则每张图像中第j种关节的S,为图像中k个人的正态分布峰值
关节连接:(肢体)
1.通过第k个人的两个关建点Xj1,k,Xj2,k之间任意像素p的单位向量计算L的groundtruth(Lc*)//其中k表示第k个人,j1和j2表示两个能够相连的关节(例如手肘和手腕直间通过手臂相连),c表示第c种肢体
计算方法:计算图像中第k个人的关键点Xj1,k指向Xj2,k的单位向量Lc,k*(P)=v(v大小和方向固定)
其中像素P是否落在肢体上需要满足两个条件
每张图像中第c中肢体的Lc*,为k个人在位置p的向量平均值
关键点dj1,dj2和PAF已知之后,计算两个关键点连线向量和两关键点连线上各像素的PAF向量之间的点积的积分作为两个关键点之间的相关性。
像素p进行采样:
例如图片中存在多个手肘和手腕时,如何确定每一个人的手腕和手肘并进行连接?即一张图像上存在n个手肘m个手腕(关键点),手肘标签Dj1{dj1^1,dj1^2….,dj1^n},手腕标签Dj2{dj2^1,dj2^2….,dj2^m},手臂(手腕和手肘相连)集合Zc。
关键点和关键点之间的相关性PAF已知,将关键点作为图的顶点,将关键点之间的相关性PAF看为图的边权,则将多人检测问题转化为二分图匹配问题,并用匈牙利算法求得相连关键点最优匹配。
Dj1,Dj2是两种关节的集合,Zc是第c种肢体的集合,Emn是两种关键点之间的相关性,求最优的zc集合。
二分图:是图的一种特例,图中包含两个点群X、Y,同一个点群内无边,不同点群之间有边。
二分匹配:二分图上进行匹配,一个点群中的点只与另一个点群中的点进行唯一匹配,即任意两条边没有公共顶点
最大匹配:匹配边数最多
完美匹配:所有点都是匹配点
最大权重匹配:所有匹配边权重之和最大
求解最大匹配方法:匈牙利算法