MEgATrack:monochrome egocentric articulated hand-tracking for virtual reality

总体思路:面对输入的灰度图像,先使用DetNet从原始图像中选出手的图像裁减出来,将裁减后图像输入KeyNet,KeyNet输出一个2D的位置热力图和一个1D的相对位置的热力图,热力图预测关键点位置还需要一步如argmax,高斯拟合,sof-argmax等,因为热力图可能会出现多个峰值,需要找到一个符合高斯分布的中心点,确定关键点坐标。最后得到可以拟合模板手的数据(26个数据,手腕6个自由度+每个手指4个自由度)。这里不同与mano的是它没有输入手的shape数据,而这部分数据是在初始化时就设定好的。最后通过对模板手的拟合,完成手势的检测,同时运行的结果会作为历史信息加入到下一次模型的预测中,优化目标检测和骨骼点网络。(有点像循环神经网络,带入时序信息)通过前两次的结果(当前帧和前一帧)外推出下一步的预测结果。

相机方面:方案选用的相机为4个灰度鱼眼相机,这里涉及到相机多目共视检测和单目检测,黑色为盲区,蓝色为单目区,绿色为双目区,橙色为三目区,红色为四目区,鱼眼相机在边缘处存在畸变,相对于深度信息,鱼眼对距离信息能更好的捕获。

目标检测:此处采用的目标检测策略是一种简单高效的新型卷积网络(DetNet),由于此次目标的种类单一(只有双手),不涉及多目标检测,所以可以通过大量的数据训练,得到一个可以直接通过图片回归出2D手的中心和半径的网络(受启发于SSD网络,一种one-step网络,同时完成分类和预测)我们好像使用的是Renet。通过这样一个包含手的圆得

到一个内切的方形框。这里的loss是位置误差和置信误差的加权和,位置误差是预测圆和目标圆的MSEloss,置信误差是预测与标签的BCEloss(二进制交叉熵损失,将网络输出值使用softmax变为概率值,与标签计算),注意这里只考虑置信度为0.5以上的box。

为了运行到移动平台减少计算,这里运用了跟踪检测策略,即使用前两次检测的pose,用两次pose的变化加上前一次的pose,即将前两次pose的变化复制到前一个pose,得到预测的当前pose,利用预测的结果。在没有过去结果可以借鉴的情况下,选取四个摄像头中的一个循环运行DetNet网络,当有一个摄像头检测到人手后,加入tracking。这里我们可以看到,DetNet只在没有tracking的时候投入使用,这样大大减少了计算损耗。

关于DetNet的结构我们并不知道,但我觉得应该会是一种缩略版的SSD,因为SSD具有6层预测层,从38*38到1*1,大图层预测小目标,小图层预测大目标,但人手距离人眼的距离始终是有限的,超过一定距离的手是不需要进行预测的,所以这里应该会把大图层的预测网络删除,只保留合适的小图层,加快计算速度,同时前部VGG16的结构ye相对较大,可能会减少一些卷积操作,因为目标占图像的比例始终相对大。

关键点预测:过去对图像进行关键点预测时每张图片是独立的,这会带来两个主要问题:1,手在不同摄像头之间切换时预测效果会下降且对不完整的手预测效果差2,关键点会抖动尤其对有遮挡的手指。这都是因为没有给模型考虑时间连续性因素。在这篇论文中,对于DetNet先选取目标检测框的120%的区域截取,保证手部都在预选框中。对于tracking,外推先前的pose并将21个关节点的坐标输入KeyNet,每个坐标包含一个2D坐标和一个相对距离坐标

这里需要优化的目标是E2D(预测结果与目标在三维空间下的绝对坐标误差的模的平方和)与Edist(各个关键点与0节点到相机距离的预测差与系数倍的精确差作差的模的平方和)与Etemporal(当前手势与过去一个时刻手势的差的模的平方)

此处还有一个问题便是不同大小的人手在不同距离上的表现不一,所以网络在图像理解时会出现到底是手大还是距离近的歧义,因为KeyNet的输出是与模板手匹配,不能只适配pose而不考虑模板手大小随人手的变化,因为在训练时使用的都是匹配的模板手和图像,这里如果不变会影响网络的效果。这里给pose参数加入了一个全局的大小参数(左右手共享)将模板手的大小与真人手相匹配,最大化模型的效果。

KeyNet的输入是96*96的灰度图,输出为21*18*18的2Dheatmap(坐标信息)和21*18的1Dheatmap(相对距离信息)。但这里为什么是96和18,有没有更好的组合不得而知。

数据采集:这里是使用可移动平台搭载6个60HZ的灰度鱼眼相机用来采集不同角度训练的灰度图片,1个50HZ深度相机来采集手部信息,这些相机都是相互时空标定的。同时可移动平台也可以变化不同背景和光线条件,增强网络的鲁棒性。但这里其实是有局限的,比如无法采集到对面角度和底部的手的图像,所有图像都是从人的一侧出发的,所以后面会遇到当人把手转向自己时效果不好。

在训练DetNet时,在训练集中加入随机的强度标度来模拟环境和光线的变化。

在训练KeyNet时,输入的数据为一个96*96的灰度图像和一个63维(x,y,relativedistance)的关键点向量,值得注意的是,这里需要给关键点数据加入高斯噪声,否则网络会只重视输入近来的关键点信息而忽视了输入的图像信息,相当于只使用过去信息的推测,不结合现有图像,这会导致在tracking失效时模型效果下降。数据集方面,90%的数据是加入过去两个pose的外推,10%加入20个帧之前的关键点信息(用于训练快速运动,同时ye可以减少对63维参数的依赖,这两种情况我感觉有一定因果关系,平衡图片与外推的关系,让在tracking失效无法外推时能有一定效果)。

这里DetNet和KeyNet的训练是分开的,这样可以给不同的网络定制不同的训练策略,而且相对来说这两个网络是独立的,前者只需高效的选出手的预测框,而后者只需通过一张96*96的图片和之前的关键点信息来给出本次的关键点信息。

评估方面:本次使用的是精确率和召回率。首先有效数据的条件是(1)预测框不超过真实框的120%(2)所有的投影的真实关键点落在截取的图片内(3)超过16个真实关键点在全图像边界内(这是因为有时会出现部分手在视觉图像外的情况,这时就要保证至少16个关键点在视觉图像内,少于16个预测效果会变差)评估KeyNet的指标有Mean-keypoint-position-error(MKPE)平均关键点位置误差,计算3D的关键点距离误差,用于评估空间准确度。以及Mean-keypoint-acceleration(MKA)平均关键点加速度

计算下一刻加前一刻的位置减去2倍的当前时刻(相当于下一个与当前时刻的位置差减去当前时刻与潜前一时刻的位置差)用于评估时间流畅度(这个差距越小,说明在时间上动作越流畅,因为宏观上运动是不会跳变的)。

值得一提的是,本次训练并没有加入双手交叉重叠的训练集,但仍然能够处理一些重叠的情况,我认为这是tracking策略以及loss中带有与前帧loss计算的贡献,但同时对于这部分图片的分析效果不佳是显而易见的。同样的问题ye出现在物体遮挡上。如果训练时可以加入更多重叠训练集,效果会更好,但这就会存在自动标注困难的问题,单一面的深度信息已经不足以解决。需要更多角度的深度信息的结合。同

时还存在单目追踪相对于多目不稳定的问题。

个人见解,如有不对劳烦指正。

Facebook灰度手势识别论文笔记相关推荐

  1. 阅读小车循迹论文笔记:灰度传感器、仿生处理器、路径跟踪机制()

    阅读小车循迹论文笔记 灰度传感器 grayscale sensors 小车循迹中灰度传感器的工作原理 发射 接收 电压比较器(运放) 红外灰度传感器总电路原理图 仿生处理器Bio-inspired p ...

  2. Deep Learning论文笔记之(一)K-means特征学习

    Deep Learning论文笔记之(一)K-means特征学习 zouxy09@qq.com http://blog.csdn.net/zouxy09          自己平时看了一些论文,但老感 ...

  3. 论文笔记 《Selective Search for Object Recognition》

    论文笔记 <Selective Search for Object Recognition> 项目网址:http://koen.me/research/selectivesearch/ 一 ...

  4. 《使用机器视觉从照片中确定西瓜质量》论文笔记

    <使用机器视觉从照片中确定西瓜质量>论文笔记 链接:Watermelon Quality Determining from a Photo Using Machine Vision | I ...

  5. 论文笔记目录(ver2.0)

    1 时间序列 1.1 时间序列预测 论文名称 来源 主要内容 论文笔记:DCRNN (Diffusion Convolutional Recurrent Neural Network: Data-Dr ...

  6. 论文笔记:WORD TRANSLATION WITHOUT PARALLEL DATA

    引用文章 Facebook MUSE 无监督跨语言迁移学习任务 face - Word Translation without Parallel Data 文献阅读笔记:Word Translatio ...

  7. 《Understanding and Diagnosing Visual Tracking Systems》论文笔记

    本人为目标追踪初入小白,在博客下第一次记录一下自己的论文笔记,如有差错,恳请批评指正!! 论文相关信息:<Understanding and Diagnosing Visual Tracking ...

  8. 论文笔记:Identifying Lung Cancer Risk Factors in the Elderly Using Deep Neural Network - Chen, Wu

    论文笔记:Identifying Lung Cancer Risk Factors in the Elderly Using Deep Neural Network - Chen, Wu 原文链接 I ...

  9. 《CalliGAN: Style and Structure-aware Chinese Calligraphy Character Generator》论文笔记

    关于<CalliGAN: Style and Structure-aware Chinese Calligraphy Character Generator>的论文笔记. 原文:Calli ...

最新文章

  1. MATLAB-循环类型相关(for while break continue)
  2. flask html css文件更改后(谷歌)浏览器不及时更新样式文件怎么办?(ctrl+shift+delete清除缓存的图片和文件)
  3. 面试再也不怕问到HashMap(一)
  4. mysql auto_increment 原理_[Mysql]mysql原理之Auto_increment
  5. spring-boot 定时任务
  6. Celery增加Systemd配置
  7. 《贪玩蓝月》年入10亿?背后的玩法也太“流氓”了
  8. python程序由三种基本结构组成_python入门基础教程04 Python程序基本组成
  9. kotlin-中文免费文档(后台,android,前端)
  10. 贝叶斯公式的理解——机器学习算法(一)
  11. html网页设计课程的思维导图,html思维导图
  12. 哥尼斯堡的“七桥问题”
  13. 【运筹学】整数规划 ( 整数规划求解方法 | 指派问题 )
  14. Oracle-----同义词索引
  15. 如何使用逆分布函数模拟MEDIAN()聚合函数
  16. MacBook软件安装和更新与卸载
  17. 中投民生:“巨无霸”上市估值2000亿美金直接超越茅台
  18. bat和cmd文件是什么,dos又是什么东西
  19. 李子柒方面否认年入1.68亿,造谣者居然这样回应...
  20. python通过Ctypes 模块 调用C++动态链接库,遇到的access violation reading 0x0000000000000000解决方案

热门文章

  1. 证明:矩阵不同特征值对应的特征向量之间线性无关
  2. XB7608AFJ单节锂电池二合一保护芯片
  3. 大写字母与小写字母的转换
  4. java quartz 重启不了_java – 重新启动quartz调度程序而不会出现错误
  5. 雷军:你写程序有写诗一样的感觉吗?没有就做产品经理吧
  6. 什么是有限状态机FSM
  7. Transform 3.1:SPSS 的通用数据转换程序
  8. 位运算符:按位取反(~)、位与()、位或(|)、位异或(^);左移运算符(<<)、右移运算符(>>)
  9. 2022秋季C语言专题实验03-一维数组
  10. 迭代器的定义与自定义一个迭代器