本周推荐 | 电商3D购物新体验:AR量脚和AR试戴背后的算法技术

简介: 推荐语:本文结合了工业实际应用,介绍了工程上精心设计量脚交互流程,算法上融合2d检测、3d重建来实现较为精准的量脚流程,并在一系列算法流程计算上,充分考虑到了算法效率,保证了用户体验,具有很实用的价值。——大淘宝技术算法工程师 尘漠


引言

随着智能手机算力的提升,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量脚手淘入口
  • image.png

 手部3D重建算法


手部3D重建算法是从单张手部图像恢复手部3D几何信息的深度学习算法。也就是说,输入是一张手部照片或者视频,输出是手部的3D几何信息(输出手部纹理信息的方法不在本文讨论范围内)。


几何信息通常以3D Mesh(网格)顶点坐标的形式表示,以学术界使用最多的手部3D模型MANO[12]为例,输入一组模型的系数,就可以得到768个3D顶点的坐标。基于3D顶点和固定的三角面顶点索引,就能重建整个3D手模型;同样地,基于3D顶点和固定的蒙皮权重,就能得到手部21个关节点的3D坐标。

image.png

  • 技术选型


考虑到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顶点准确地投影到图像坐标系。
结合上述的调研分析,我们根据已有方案,从下面三个方面来设计网络:

  1. 设计轻量型Backbone+3D Head,采用成熟的残差网络结构,以便能在移动设备上达到实时
  2. 借鉴MobRecon网络,增加2D手部关节点坐标预测分支,用于在预训练阶段提高网络对手部特征的提取能力
  3. 借鉴SMPL[8]中的弱透视相机学习思路,新增相机参数预测分支,用于将3D手部Mesh顶点投影回2D图像上


基于这些改进思路,我们的算法框架如下:

image.png

实验结果


这里是我们的方案与一些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指节坐标来进行试戴的新方案,具体来说:

  1. 戒指与手指关节的绑定在重建好的3D手部模型基础上,我们选择需要试戴的指节的顶点编号,并设置好与戒指正反面的对应关系。
  2. 根据手指关节构建forward和up向量forward和up向量是构建一个局部坐标系的两个参数。我们采用指节的轴向方向为foward,指节的径向方向为forward,构建局部坐标系。
  3. 根据局部坐标系旋转戒指利用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进行交流。

相关文章
|
1月前
|
机器学习/深度学习 人工智能 算法
【眼疾病识别】图像识别+深度学习技术+人工智能+卷积神经网络算法+计算机课设+Python+TensorFlow
眼疾识别系统,使用Python作为主要编程语言进行开发,基于深度学习等技术使用TensorFlow搭建ResNet50卷积神经网络算法,通过对眼疾图片4种数据集进行训练('白内障', '糖尿病性视网膜病变', '青光眼', '正常'),最终得到一个识别精确度较高的模型。然后使用Django框架开发Web网页端可视化操作界面,实现用户上传一张眼疾图片识别其名称。
62 9
【眼疾病识别】图像识别+深度学习技术+人工智能+卷积神经网络算法+计算机课设+Python+TensorFlow
|
21天前
|
vr&ar C# 图形学
如何开发增强现实(AR)应用:技术指南与实践
【8月更文挑战第24天】开发增强现实应用是一个充满挑战和机遇的过程。通过选择合适的技术栈、遵循科学的开发步骤,并充分考虑用户体验、设备兼容性、内容与创意以及数据安全等因素,您可以成功打造一款高质量的AR应用。随着技术的不断进步和应用场景的不断拓展,AR应用的未来充满了无限可能。
|
23天前
|
存储 人工智能 算法
AI算法的道德与社会影响:探索技术双刃剑的边界
【8月更文挑战第22天】AI算法作为一把双刃剑,在推动社会进步的同时,也带来了诸多道德与社会挑战。面对这些挑战,我们需要以开放的心态、严谨的态度和创新的思维,不断探索技术发展与伦理规范之间的平衡之道,共同构建一个更加美好、更加公正的AI未来。
|
26天前
|
机器学习/深度学习 自然语言处理 负载均衡
揭秘混合专家(MoE)模型的神秘面纱:算法、系统和应用三大视角全面解析,带你领略深度学习领域的前沿技术!
【8月更文挑战第19天】在深度学习领域,混合专家(Mixture of Experts, MoE)模型通过整合多个小型专家网络的输出以实现高性能。从算法视角,MoE利用门控网络分配输入至专家网络,并通过组合机制集成输出。系统视角下,MoE需考虑并行化、通信开销及负载均衡等优化策略。在应用层面,MoE已成功应用于Google的BERT模型、Facebook的推荐系统及Microsoft的语音识别系统等多个场景。这是一种强有力的工具,能够解决复杂问题并提升效率。
40 2
|
1月前
|
机器学习/深度学习 监控 算法
目标检测算法技术
8月更文挑战第11天
|
30天前
|
机器学习/深度学习 算法 Java
算法设计(动态规划应用实验报告)实现基于贪婪技术思想的Prim算法、Dijkstra算法
这篇文章介绍了基于贪婪技术思想的Prim算法和Dijkstra算法,包括它们的伪代码描述、Java源代码实现、时间效率分析,并展示了算法的测试用例结果,使读者对贪婪技术及其应用有了更深入的理解。
算法设计(动态规划应用实验报告)实现基于贪婪技术思想的Prim算法、Dijkstra算法
|
1月前
|
机器学习/深度学习 数据采集 人工智能
理解并应用机器学习算法:从技术基础到实践应用
【8月更文挑战第10天】机器学习算法的应用已经深入到我们生活的方方面面,理解和掌握机器学习算法对于数据科学家、工程师乃至普通从业者来说都至关重要。通过本文的介绍,希望大家能够对机器学习有一个基本的认识,并学会如何将其应用于实际问题中。当然,机器学习是一个不断发展和演变的领域,只有不断学习和实践,才能跟上时代的步伐。
|
14天前
|
vr&ar C# 图形学
WPF与AR/VR的激情碰撞:解锁Windows Presentation Foundation应用新维度,探索增强现实与虚拟现实技术在现代UI设计中的无限可能与实战应用详解
【8月更文挑战第31天】增强现实(AR)与虚拟现实(VR)技术正迅速改变生活和工作方式,在游戏、教育及工业等领域展现出广泛应用前景。本文探讨如何在Windows Presentation Foundation(WPF)环境中实现AR/VR功能,通过具体示例代码展示整合过程。尽管WPF本身不直接支持AR/VR,但借助第三方库如Unity、Vuforia或OpenVR,可实现沉浸式体验。例如,通过Unity和Vuforia在WPF中创建AR应用,或利用OpenVR在WPF中集成VR功能,从而提升用户体验并拓展应用功能边界。
28 0
|
27天前
|
安全 算法 前端开发
外滩大会安全 AR 沙盘首秀--背后的前端技术
外滩大会安全 AR 沙盘首秀--背后的前端技术
|
9天前
|
算法 BI Serverless
基于鱼群算法的散热片形状优化matlab仿真
本研究利用浴盆曲线模拟空隙外形,并通过鱼群算法(FSA)优化浴盆曲线参数,以获得最佳孔隙度值及对应的R值。FSA通过模拟鱼群的聚群、避障和觅食行为,实现高效全局搜索。具体步骤包括初始化鱼群、计算适应度值、更新位置及判断终止条件。最终确定散热片的最佳形状参数。仿真结果显示该方法能显著提高优化效率。相关代码使用MATLAB 2022a实现。