引言
随着智能手机算力的提升,AR/VR应用的不断涌现,普通消费者对好玩有趣的AR应用接受度和期待越来越高,而3D沉浸式购物,包括各类AR试戴、AR量脚、AR试鞋等,因其广阔的应用前景而获得巨大关注。
例如,基于图像算法的AR量脚可以解决用户网购鞋子时尺码不合脚的问题。用户可以直接通过手机的摄像头、Lidar等传感器拍摄自己的脚并立刻获知脚长,再选购合适尺码的鞋子。该算法可以大大减少退换货的问题出现,提升了用户网购体验。
另一方面,手部商品的AR试戴作为3D沉浸式购物重要的组成部分,有着广阔的应用前景,例如,手表、手机作为重要的电商品类,具有客单价高、销量高的特点,如果能提高这些品类的AR试戴体验,必然能够提高用户的购买意愿。
为了解决AR量脚和AR试戴的实际问题,我们在PixelAI移动端视觉算法库中实现了对应的AR算法,结合2022年双十一,在淘宝App和天猫App中进行了算法到实际产品的落地。具体来说,在AR量脚算法中,我们将目标检测、直线检测、图像分割、三维点云重建等多种算法进行融合,并精心设计了量脚界面和教程,保证用户良好体验的同时,让脚长测量误差处于3mm以内。而基于AR手部算法,我们在天猫App 3D空间中上线了AR手表试戴,AR手机体验和数字戒指商品的AR试戴。本文将着重介绍来自PixelAI移动端视觉算法库的AR试戴、AR量脚两项技术。
AR量脚
▐ 算法线上效果
- AR量脚手淘入口
▐ 手部3D重建算法
手部3D重建算法是从单张手部图像恢复手部3D几何信息的深度学习算法。也就是说,输入是一张手部照片或者视频,输出是手部的3D几何信息(输出手部纹理信息的方法不在本文讨论范围内)。
几何信息通常以3D Mesh(网格)顶点坐标的形式表示,以学术界使用最多的手部3D模型MANO[12]为例,输入一组模型的系数,就可以得到768个3D顶点的坐标。基于3D顶点和固定的三角面顶点索引,就能重建整个3D手模型;同样地,基于3D顶点和固定的蒙皮权重,就能得到手部21个关节点的3D坐标。
- 技术选型
考虑到MANO模型包含768个稠密的手部顶点,满足大部分手部AR试戴场景的需求,因此我们也采用了MANO模型来进行手部3D重建。实际中,基于神经网络的手部3D重建主要分成两大类方法。
第一类是网络只学习MANO的参数。具体来说,包括表征姿态的pose系数和表针手部形状的shape系数,然后通过后处理中的MANO前向过程,得到手部3D 顶点坐标。第一类方法可以看作是间接学习的方法,优势是得到的3D 顶点坐标包含MANO模型训练数据集中的大量真实手的先验知识,符合手的结构,不会出现怪异的姿势,但缺点是3D顶点坐标投影到图像坐标系后与原始图像中的手不够贴合。
第二类方法是网络直接输出手部3D Mesh顶点,即网络直接回归得到768个顶点的3D坐标(768x3个浮点数)。这种方案的优点是省去了后处理中的MANO前向过程,简化流程,同时这种方案能更精准地建模手的动作。
基于实际的应用场景,我们认为,手部模型更多的是存在比较多的自遮挡,而不容易出现某些顶点偏离很多造成的鬼畜问题。因此我们采用第二类方法,即显式地学习手部3D Mesh的方案。
- 网络设计
现有SOTA模型(Mesh Graphormer[17], METRO[18])大多采用ResNet50或者HRNet系列的Backbone,因而计算量太大,无法应用到移动端。小模型中精度较高的是快手在CVPR2022上发表的MobRecon[10],这篇论文通过采用2D Keypoints Prediction + 2D-to-3D Lifting的方案,先用真实数据和大量的合成数据预训练Backbone和2D关键点分支,再一起训练网络的全部参数,其中3D部分采用了螺旋卷积模块,用于提高3D部分网络对手部图形结构的感知能力,提高3D重建的精度。
在测试中我们发现,MobRecon存在两方面的问题:1)虽然论文中提出MobRecon的模型在iPhone 12 Pro机型上可以达到83FPS,但实际上,MobRecon转换后的MNN模型在中端Android机型vivo Y50上耗时59.6ms,未能达到实时。核心原因是MobRecon的螺旋卷积模块使用了scatter_add 算子,运行比较慢。另一个问题是MobRecon没有学习相机参数的分支,无法将3D顶点准确地投影到图像坐标系。
结合上述的调研分析,我们根据已有方案,从下面三个方面来设计网络:
- 设计轻量型Backbone+3D Head,采用成熟的残差网络结构,以便能在移动设备上达到实时
- 借鉴MobRecon网络,增加2D手部关节点坐标预测分支,用于在预训练阶段提高网络对手部特征的提取能力
- 借鉴SMPL[8]中的弱透视相机学习思路,新增相机参数预测分支,用于将3D手部Mesh顶点投影回2D图像上
基于这些改进思路,我们的算法框架如下:
实验结果
这里是我们的方案与一些SOTA方案的对比:
算法名称 |
FLOPs |
PA-MPJPE(mm) ↓ |
预测相机内参 |
预测2D关节点 |
是否移动端实时 |
Mesh Graphormer[17] |
4G |
5.9 |
✗ |
✗ |
✗ |
METRO[18] |
4G |
6.7 |
✗ |
✗ |
✗ |
I2L-MeshNet[14] |
4G |
7.3 |
✗ |
✗ |
✗ |
MobRecon[10] |
480M |
6.9 |
✗ |
✓ |
✗ |
Ours |
680M |
6.7 |
✓ |
✓ |
✓ |
可以看到,我们的方案在误差上小于一些服务器端大模型,在精度和速度上达到比较好的折衷。
▐ AR层算法设计
手部3D重建完成后,我们可以实时重建手部的3D模型,并且将手投影回2D图像上。但这距离手部AR试戴还差一步,我们还需要设计利用3D重建结果来调整3D商品位姿的AR层算法,例如常见的PnP[15]算法,PA[19]算法等。这些算法的核心目的是得到一个用来变换3D商品的Transform矩阵,再利用渲染引擎的接口来实时改变3D商品的位置和姿态。实际中对于不同的试戴商品,我们进行了不同的上层AR算法设计。
- 手表试戴
手表试戴中我们采用了手腕关键点估计算法和PnP算法。概括来说,根据手腕关键点和虚拟手腕模型的对应关系,计算手腕的旋转矩阵R和平移矩阵t,再将R和t作用到手表上,就能得到正确的试戴结果。
- 手机上手
考虑手机上手到应用场景,我们评估基于PnP的方案是满足业务需求的。借鉴手表试戴的思路,我们将PnP算法迁移迁移到手掌区域上来。由于在试玩手机的过程中,手指是可以变动的,而手掌区域可以近似看作刚体,因此我们利用手掌区域的关键点进行PnP算法。具体来说,选择MANO手模的手掌区域顶点,与当前图像重建的3D顶点的2D投影点进行PnP计算,得到旋转矩阵R和平移向量t,再作用到与标准手模匹配好的手机模型上,就能得到正确的手机位姿。
- 戒指试戴
戒指试戴的功能是将虚拟的戒指商品放置到用户对应的手指上,达到真实的试戴效果。
相比手机上手中的手掌区域,戒指试戴采用的手指指节区域更小,采用2D投影点误差会更大。同时与手机上手只需要支持手掌不同,戒指试戴需要支持前置和后置摄像头,手掌和手背,以及360度旋转下的效果。在这种设置下,不可避免地会出现许多指节被遮挡的情景,采用PnP的方案效果会比较差。
因此我们进一步提出了利用3D指节坐标来进行试戴的新方案,具体来说:
- 戒指与手指关节的绑定在重建好的3D手部模型基础上,我们选择需要试戴的指节的顶点编号,并设置好与戒指正反面的对应关系。
- 根据手指关节构建forward和up向量forward和up向量是构建一个局部坐标系的两个参数。我们采用指节的轴向方向为foward,指节的径向方向为forward,构建局部坐标系。
- 根据局部坐标系旋转戒指利用LookRotation函数,就可以根据forward和up向量,得到戒指对应的旋转矩阵。
总结
作为提升用户体验的重要技术之一,AR技术在未来的电商、教育、医疗等领域拥有巨大的潜力。随着技术朝着3D化的发展,以及业务上AR和3D需求的增加,PixelAI算法团队正在不断深耕AR相关算法,加速研发各类AR试、AR量、AR扫等算法,充实优化移动端算法库,以更好地支持3D和AR算法在淘宝天猫等各项业务中的落地。
参考论文
[1] RangiLyu K. NanoDet-Plus: Super fast and high accuracy lightweight anchor-free object detection model[J]. 2021.
[2] Glenn J , Ayush C , Alex S , et al. Ultralytics/yolov5: v7.0 - YOLOv5 SOTA Realtime Instance Segmentation[J]. 2022.
[3] Ge Z, Liu S, Wang F, et al. Yolox: Exceeding yolo series in 2021[J]. arXiv preprint arXiv:2107.08430, 2021.
[4] Gu G , Ko B , Go S H , et al. Towards Light-weight and Real-time Line Segment Detection[J]. 2021.
[5] Huang S , Qin F , Xiong P , et al. TP-LSD: Tri-Points Based Line Segment Detector[C]// European Conference on Computer Vision. Springer, Cham, 2020.
[6] Fréchet M M. Sur quelques points du calcul fonctionnel[J]. Rendiconti del Circolo Matematico di Palermo (1884-1940), 1906, 22(1): 1-72.
[7] Hao S, Zhou Y, Guo Y. A brief survey on semantic segmentation with deep learning[J]. Neurocomputing, 2020, 406: 302-321.
[8] Qin X , Zhang Z , Huang C , et al. U2-Net: Going deeper with nested U-structure for salient object detection[J]. Pattern Recognition, 2020, 106:107404.
[9] Chen X, Liu Y, Ma C, et al. Camera-space hand mesh recovery via semantic aggregation and adaptive 2d-1d registration[C]//Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2021: 13274-13283.
[10] Chen X, Liu Y, Dong Y, et al. MobRecon: Mobile-Friendly Hand Mesh Reconstruction from Monocular Image[C]//Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2022: 20544-20554.
[11] Zimmermann C, Ceylan D, Yang J, et al. Freihand: A dataset for markerless capture of hand pose and shape from single rgb images[C]//Proceedings of the IEEE/CVF International Conference on Computer Vision. 2019: 813-822.
[12] Romero J, Tzionas D, Black M J. Embodied hands: Modeling and capturing hands and bodies together[J]. arXiv preprint arXiv:2201.02610, 2022.
[13] Tang X, Wang T, Fu C W. Towards accurate alignment in real-time 3d hand-mesh reconstruction[C]//Proceedings of the IEEE/CVF International Conference on Computer Vision. 2021: 11698-11707.
[14] Moon G, Lee K M. I2l-meshnet: Image-to-lixel prediction network for accurate 3d human pose and mesh estimation from a single rgb image[C]//European Conference on Computer Vision. Springer, Cham, 2020: 752-768.
[15] https://en.wikipedia.org/wiki/Perspective-n-Point
[16] Loper M, Mahmood N, Romero J, et al. SMPL: A skinned multi-person linear model[J]. ACM transactions on graphics (TOG), 2015, 34(6): 1-16.
[17] Lin K, Wang L, Liu Z. Mesh graphormer[C]//Proceedings of the IEEE/CVF International Conference on Computer Vision. 2021: 12939-12948.
[18] Lin K, Wang L, Liu Z. End-to-end human pose and mesh reconstruction with transformers[C]//Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2021: 1954-1963.
[19] https://en.wikipedia.org/wiki/Procrustes_analysis
团队介绍
大淘宝技术Meta团队,目前负责面向消费场景的3D/XR基础技术建设和创新应用探索,创造以手机及XR 新设备为载体的消费购物新体验。团队在端智能、端云协同、商品三维重建、3D引擎、XR引擎等方面有着深厚的技术积累,先后发布深度学习引擎MNN、端侧实时视觉算法库PixelAI、商品三维重建工具Object Drawer、端云协同系统Walle等。团队在OSDI、MLSys、CVPR、ICCV、NeurIPS、TPAMI等顶级学术会议和期刊上发表多篇论文。欢迎视觉算法、3D/XR引擎、深度学习引擎研发、终端研发等领域的优秀人才加入,共同走进3D数字新时代。感兴趣的同学可以发送邮件至zhiwen.czw@alibaba-inc.com进行交流。