#1. A2J介绍
##1.1 A2J模型简述:
该篇文章发布于2019年的ICCV,并获得了2019年hand pose挑战赛第一名的成绩。
论文地址: https://arxiv.org/abs/1908.09999.
##1.2 Anchor-to-Joint解析:
首先给出两张paper中的示意图。左图是技术方案的一个流程示意,
为了实现上面的思路,采取的技术流程如下图所示。
A2J网络由3个分支组成,由2D-CNN 骨干网驱动。这3个分支分别负责预测锚点与节点之间的平面偏移量、估算节点深度值和提供锚点候选信息。
Backbone在实验中主要基于ResNet50,输出包含三个分支,一个是图像坐标系下面的偏移量输出,一个是深度值输出,最后一个是对anchor point进行加权的anchor proposal分支输出。
第三支的输出结果经过softmax之后直接乘在前面两支的输出结果上对anchor point投票进行权重赋值。
上面提到Backbone基于ResNet来提取特征,事实上作者对ResNet的结构进行了一些小的调整,使得最终编码得到的特征是经过16倍下采样的(而不是32倍)。
本质上,这两个分支旨在预测关节的三维位置。它们都包含4个256通道的中间卷积层,以及1个输出卷积层。
该分支通过权重分配发现特定关节的信息性锚点,锚候选分支建立在骨干网内公共主干的输出特征图上,涉及较细的特征。
对于损失函数的选择,我们使用SmoothL1作为距离衡量标准,最终的损失包括loss1和loss2两项。
loss2实际是上是一个正则项,可以有效地缓解过拟合现象,最终的效果也非常显著,
如下图所示,有无loss2的时候Informative anchor point的位置分布差异很大:
最终的损失如下,其中lamda是平衡损失1和损失2的权重因子:
hand pose dataset:
NYU_part
使用支持CUDA的GPU处理器来搭建硬件环境
##深度学习框架
Pytorch 1.12
##相关功能包
numpy 1.23
torchivision 0.13
opencv-python 4.5.4.36
PIL 4.3
A2J
├─README.md
├─fig # README使用图片
├─NYU_part # 数据集
├─label_test.npy # 测试集
└─label_train.npy # 训练集
├─result
├─pretrained.pth # 模型权重文件
├─train.log # 训练日志
└─visual_result.jpg # 可视化结果
├─src
├─anchor.py #锚点的初始化、变换并加之loss的定义
├─attention.py #注意力机制(CBAM模块)
├─dataset.py #数据集定义、读取、预处理
├─model.py #A2J模型
├─random_erasing.py #随机选择图像中的矩形区域并模糊其像素
├─resnet.py #resnet作为backbone
└─transforms.py #自定义图像增强操作
├─test.py #测试
├─train.py #训练
└─visualize.py #可视化
(1) 首先在train.py
中修改数据集的地址以及相关参数
(2) 运行train.py
(3) 生成的模型权重会保存在result
文件夹中
(1) 运行test.py
文件进行测试
(2) 运行visualize.py
文件进行结果可视化
在测试过程,指标选用Mean Joint Error
最终测试集上的测评结果: MJE=0.136
(运行test.py或visualze.py可得到)
在测试过程的测试结果可视化如下图(部分结果):
其中红色为真实结果,黄色为预测结果
Dear OpenI User
Thank you for your continuous support to the Openl Qizhi Community AI Collaboration Platform. In order to protect your usage rights and ensure network security, we updated the Openl Qizhi Community AI Collaboration Platform Usage Agreement in January 2024. The updated agreement specifies that users are prohibited from using intranet penetration tools. After you click "Agree and continue", you can continue to use our services. Thank you for your cooperation and understanding.
For more agreement content, please refer to the《Openl Qizhi Community AI Collaboration Platform Usage Agreement》