Move Mirror是一项AI实验:能找到你的姿势,并将你的动作与来自世界各地的数千张图像进行匹配。本文将进行步骤与原理拆解。
制作数据集,保证多样与准确性
通过PoseNet解析了数千张图像,但并非所有图像都被正确解析,因此舍弃了一些图像,最终得到大约80,000张图像的数据集。
姿势匹配,定义相似性
提取17个身体及面部的关键点,根据余弦相似度和加权匹配,关键点的置信度得分。
余弦相似度
将每组17个关键点转换为一个向量并将它们全部绘制在高维空间中,那么寻找两个最相似姿势的任务将转化为在这个高维空间中找到最接近的两个向量。
这正是余弦距离:余弦相似度是两个向量之间相似度的量度。
由于数据集中的图像具有不同的宽度/高度,并且每个人都可以出现在图像的不同位置(左上,右下,居中等),为了能够一致地比较数据,因此有两个额外的步骤:
1 调整大小和缩放比例:使用每个人的边界框坐标来裁剪和缩放每个图像(以及相应的关键点坐标),使其大小一致。
2 归一化:通过将它们视为L2归一化向量数组,我们进一步归一化了所得的关键点坐标。
从视觉上描述上述两个步骤:
我们可以在js中调用余弦相似度的库 “compute-cosine-similarity”。
加权匹配
姿势是多种多样的,在下图中可以看出通过余弦相似度并没有对关节的识别做到很确定,有时我们根本看不到关节,所以我们需要根据我们对人体的形态了解来做出更好的估计。
因此,虽然余弦向量技术很有用,并且可以输出好的结果,但通过合并置信度可以可以做得更好。具体来说,通过加权关节数据,以使低置信度关节对距离度量的影响小于高置信度关节。Google研究人员乔治·帕潘德里欧(George Papandreou)和泰勒·朱(Tyler Zhu)提出了可以精确地做到这一点的公式:
在15ms内搜索80,000张图像
在这里运用 “优势点树” 的数据结构将数据递归地分为两类:
通过这种树结构,就不再需要单独比较每张图片:如果传入姿势与“优势树”中的某个节点不够相似,我们可以假设该节点的子节点也都是不符合要求的,进而舍弃整条分支的搜索。与其强行搜索所有数据库,不如通过遍历树进行搜索,这样就可以安全而又有效的切除大量不相关的数据,提高模型运行速率。https://github.com/fpirsch/vptree.js/tree/master现奥地利IST Austria 图形学和智能设计(博士)。💡大家带着问题来聊,也可以分享自己的相关观点或者经历,希望大家能就一些观点,有收获,有火花~每期由mixlab社区精选、收录人工智能的相关内容。包括AI产品、AI技术、AI场景、AI投资事件、AI的思维方式等。MIX的主题包括:AR、VR、计算设计、计算广告、智能设计、智能写作、虚拟偶像等。付费加入星球后,即可免费加入科技前沿外刊群:《新科学家杂志》、《英国金融时报》、《华尔街日报》、《经济学人》、《纽约时报》、《泰晤士报》等当日最新外刊。