作者和机构

德国马普所,SMPL的论文也出自该单位,三作Gerard也是SMPL论文的作者

解决的问题

通过服装的正面和背面图实时生成3D模型

动机

  • 该研究有助于3D人体渲染,生成数据以供网络学习,虚拟穿戴,进行艺术设计等
  • 目前大部分相关工作关注点在图像层面的人体re-posing和虚拟试穿,在图像层面的研究优点是能在大规模数据集上进行训练,缺点是不能合成比较难的姿势,以及专注于产生时域上一致的结果

研究现状

  • 目前有很多2D图像合成的方法,这些方法难以保证在不同的姿势和视角下输出一致的结果
  • 目前也有很多生成带服装的3D人体模型,但是这些方法只关注服装的几何形状,而不关注它们的外观
  • 也有人提出自动渲染纹理的方法,但其大小需要先与输入图像对齐,而这种对齐是模糊和容易出错的

方法

参数化服装模型

作者将3D服装模型参数化为关于SMPL模型的位移。对于每个服装类型,先计算出其对应的人体网格,比如上衣对应的是其覆盖的上身网格,然后通过蒙皮算法得到3D模型,待表面附上纹理之后,再利用位移计算出服装网格。模型公式如下。
TG(β,θ,D)=IT(β,θ)+DG(β,θ,D)=W(TG(β,θ,D),J(β),θ,W)T^G(\pmb{\beta},\pmb\theta,\pmb D) = \pmb I T(\pmb\beta,\pmb\theta) + \pmb D\\ G(\pmb\beta,\pmb\theta,\pmb D)=W(T^G(\pmb{\beta},\pmb\theta,\pmb D),J(\pmb\beta),\pmb\theta,\pmb W) TG(β​β​​β,θθθ,DDD)=IIIT(β​β​​β,θθθ)+DDDG(β​β​​β,θθθ,DDD)=W(TG(β​β​​β,θθθ,DDD),J(β​β​​β),θθθ,WWW)

  • T∈Rn×3T\in\R^{n\times 3}T∈Rn×3:SMPL人体模型模板
  • TG∈Rm×3T^G\in\R^{m\times 3}TG∈Rm×3:TTT的子网格,对应服装的部分
  • I∈Zm×n\pmb I \in \Z ^{m\times n}III∈Zm×n:指示矩阵,如果服装网格的顶点i∈{1…m}i\in\{1\dots m\}i∈{1…m}与完整人体网格的顶点j∈{1…n}j\in\{1\dots n\}j∈{1…n}有关联,则Iij=1\pmb I_{ij}=1IIIij​=1
  • D∈Rm×3\pmb D\in\R^{m\times 3}DDD∈Rm×3:服装网格相对于人体网格的位移矩阵
  • β,θ\pmb\beta,\pmb\thetaβ​β​​β,θθθ:SMPL模型参数,请参考SMPL论文
  • J(β)J(\pmb\beta)J(β​β​​β):人体关键点位置,请参考SMPL论文
  • W(⋅)W(·)W(⋅):线性蒙皮算法
  • W\pmb WWWW:权重,请参考SMPL论文
非刚性变形拟合电商图片

作者先对图像进行分割,然后用前面提到的服装模型去拟合服装图像。

作者使用自动GrabCut进行分割。由于商品服装图像的背景一般是纯色背景,因此可以先通过设置阈值获得初始的前景掩膜,然后使用闭运算消除图像中的空洞,再对前景进行腐蚀得到“绝对前景”,而腐蚀前后的前景之差作为“可能前景”。用类似的方法通过膨胀运算可以得到“绝对背景”和“可能背景”。将这样得到的掩膜用来初始化GrabCut,既可以不借助人工标注得到准确的前景轮廓。

用服装模型表面拟合服装前景分两步。第一步需要最小化以下公式
E1(β,θ,t)=wsEs+wβEβ+wθEθE_1(\pmb\beta,\pmb\theta,\pmb t)=w_sE_s+w_{\beta}E_{\beta}+w_\theta E_\theta E1​(β​β​​β,θθθ,ttt)=ws​Es​+wβ​Eβ​+wθ​Eθ​
其中t∈R3\pmb t\in\R^3ttt∈R3是相机平移量。而三个loss会在下文一一介绍。

  • 轮廓误差项EsE_sEs​
    Es(β,θ,t)=Φ(wiΨ(Ir(G(θ,β),t))+woΨ^(1−Ir(G(θ,β),t)))E_s(\pmb\beta,\pmb\theta,\pmb t)=\Phi(w_i\Psi(I_r(G(\pmb\theta,\pmb\beta),\pmb t))+w_o\hat\Psi(1-I_r(G(\pmb\theta,\pmb\beta),\pmb t))) Es​(β​β​​β,θθθ,ttt)=Φ(wi​Ψ(Ir​(G(θθθ,β​β​​β),ttt))+wo​Ψ^(1−Ir​(G(θθθ,β​β​​β),ttt)))

    • Ψ,Ψ^\Psi,\hat\PsiΨ,Ψ^:距离变换函数和距离反变换函数
    • Φ\PhiΦ:高斯金字塔函数
    • IrI_rIr​:由可微分渲染器渲染得到的服装轮廓二值图像

    该项最大化2D图片轮廓与3D模型的渲染得到的二值图像重叠部分,并对露在2D轮廓外的部分添加惩罚。

  • 体形正则项EβE_\betaEβ​
    Eβ(β)=βTΣβ−1βE_\beta(\pmb\beta)=\pmb\beta^T\Sigma^{-1}_\beta\pmb\beta Eβ​(β​β​​β)=β​β​​βTΣβ−1​β​β​​β

    • Σβ−1\Sigma^{-1}_\betaΣβ−1​:来自SMPL数据集的对角协方差矩阵

    使用马氏距离,约束体形参数符合SMPL数据集的分布

  • 姿势先验项EθE_\thetaEθ​
    Eθ(θ)=∥θ−θA∥2E_\theta(\pmb\theta)=\lVert\pmb\theta-\pmb\theta_A\rVert^2 Eθ​(θθθ)=∥θθθ−θθθA​∥2
    惩罚姿势参数与A-pose下的差距,因为电商服装图片一般是在A-pose下的形状。

对于衬衫,作者先固定姿势参数θ\pmb\thetaθθθ,优化体形参数β\pmb\betaβ​β​​β和平移量t\pmb tttt,然后再一起优化所有参数。对于裤子,其优化顺序则相反。

第一步只是对服装的轮廓进行了粗匹配,第二步将对初始化为G(θ,β)G(\pmb\theta,\pmb\beta)G(θθθ,β​β​​β)的网格顶点集G∈Rm×3\pmb G\in\R^{m\times 3}GGG∈Rm×3优化更复杂的loss。
E2(G,θ,β)=ws′Es′+wc′Ec′+wl′El′+we′Ee′+wb′Eb′E_2(\pmb G,\pmb \theta, \pmb \beta)=w'_sE'_s+w'_cE'_c+w'_lE'_l+w'_eE'_e+w'_bE'_b E2​(GGG,θθθ,β​β​​β)=ws′​Es′​+wc′​Ec′​+wl′​El′​+we′​Ee′​+wb′​Eb′​

  • 轮廓误差项Es′E_s'Es′​:公式跟EsE_sEs​一样,不过EsE_sEs​优化的是参数,而Es′E_s'Es′​优化的是G\pmb GGGG

  • 耦合项Ec′E_c'Ec′​
    Ec′(G,β,θ)=∥G−G(θ,β)∥2E_c'(\pmb G,\pmb \beta, \pmb\theta)=\lVert\pmb G-G(\pmb\theta,\pmb\beta) \rVert^2 Ec′​(GGG,β​β​​β,θθθ)=∥GGG−G(θθθ,β​β​​β)∥2
    惩罚与G(θ,β)G(\pmb\theta,\pmb\beta)G(θθθ,β​β​​β)的偏差

  • 边缘约束项Ee′E_e'Ee′​
    Ee(G)=∑Gi∈R∥π(Gi)y−ymax∥2E_e(\pmb G)=\sum_{\pmb G_i\in\mathcal{R}}\lVert\pi(\pmb G_i)_y-y_{max} \rVert^2 Ee​(GGG)=GGGi​∈R∑​∥π(GGGi​)y​−ymax​∥2

    • Gi∈R\pmb G_i\in\mathcal{R}GGGi​∈R:网格中腰线上的顶点集
    • π(⋅)\pi(·)π(⋅):网格向2D平面的投影函数
    • (⋅)y(·)_y(⋅)y​:纵(y)轴坐标
    • ymaxy_{max}ymax​:图像中腰线的纵坐标

    作者发现商品图片中裤子的腰带或腰线是很好的水平线,因此设置loss拟合3D网格的腰线和图像上的腰线。

  • 拉普拉斯项El′E_l'El′​
    El(G)=∥LG∥F2L=I−K−1AE_l(\pmb G)=\lVert \pmb L \pmb G \rVert_F^2\\ \pmb L=\pmb I-\pmb K^{-1}\pmb A El​(GGG)=∥LLLGGG∥F2​LLL=III−KKK−1AAA

    • A∈Rm×m\pmb A\in\R^{m\times m}AAA∈Rm×m:网格顶点邻接矩阵
    • K∈Rm×m\pmb K\in\R^{m\times m}KKK∈Rm×m:度对角矩阵,Kii\pmb K_{ii}KKKii​为第iii个顶点的度
    • L∈Rm×m\pmb L\in\R^{m\times m}LLL∈Rm×m:图拉普拉斯矩阵

    增加服装的平滑程度,减少失真

  • 边界平滑项Eb′E_b'Eb′​:对边界的二阶导惩罚,保证边界平滑

最终输出拟合的3D服装模型G={G,F}\mathcal{G}=\{\pmb G,\pmb F\}G={GGG,FFF},G\pmb GGGG是网格顶点集,F\pmb FFFF是面集

自动转换纹理

前面的拟合准确但慢,仅用来生成训练和测试用例。下面利用前面的方法生成的数据训练一个高效的模型Pix2Surf。作者设计了一个由2D UV图到3D模型的映射u:B⊂R2↦G⊂R3u:\mathcal{B}\sub R^2\mapsto \mathcal{G} \sub \R^3u:B⊂R2↦G⊂R3。这样的话,只需要做好从服装图像到UV图的映射即可。以下是模型的输入和输出。

  • 输入:

    • X∈X⊂RK×L×2\pmb X\in\mathcal{X}\sub\R^{K\times L\times 2}XXX∈X⊂RK×L×2:2D图像的前景坐标掩膜,满足
      Xij={(i,j),(i,j)∈F(0,0),(i,j)∉F\pmb X_{ij}= \begin{cases} (i,j),(i,j)\in\mathcal{F}\\ (0,0),(i,j)\not\in\mathcal{F}\\ \end{cases} XXXij​={(i,j),(i,j)∈F(0,0),(i,j)​∈F​
      其中F\mathcal{F}F是前景掩膜,在预测时通过训练好的分割网络计算得到。即只显示前景的坐标。
  • 输出:

    • Y∈RK×L×3\pmb Y\in\R^{K\times L\times 3}YYY∈RK×L×3:RGB纹理图,利用纹理投影方法生成
    • C∈C⊂RK×L×2\pmb C\in\mathcal{C}\sub\R^{K\times L\times 2}CCC∈C⊂RK×L×2:UV对应关系映射图,Ck,l=(i,j)\pmb C_{k,l}=(i,j)CCCk,l​=(i,j),将UV图的像素点映射到2D图像上的像素

如果直接从源图像III预测Y\pmb YYYY,很容易过拟合。而作者学习了一个映射关系f(X;w):X↦Cf(\pmb X;w):\mathcal{X}\mapsto\mathcal{C}f(XXX;w):X↦C。作者认为,平滑的映射应取决于轮廓的形状,而不是纹理。训练时需要最小化的损失如下。
Ltotal=λregLreg+λprecLprec+λreconLreconL_{total}=\lambda_{reg}L_{reg}+\lambda_{prec}L_{prec}+\lambda_{recon}L_{recon} Ltotal​=λreg​Lreg​+λprec​Lprec​+λrecon​Lrecon​

  • 协调回归损失LregL_{reg}Lreg​(L2损失)
    Lreg=∑i=1N∥f(Xi;w)−Ci∥22L_{reg}=\sum_{i=1}^N\lVert f(\pmb X^i;w)-\pmb C^i\rVert_2^2 Lreg​=i=1∑N​∥f(XXXi;w)−CCCi∥22​

  • 重建损失LreconL_{recon}Lrecon​
    Lrecon=∑iN∑k,lKL∥I[fk,l1(Xi;w),fk,l2(Xi;w)]−Yk,li∥1L_{recon}=\sum_i^N\sum_{k,l}^{KL}\lVert\pmb I[f^1_{k,l}(\pmb X^i;w),f^2_{k,l}(X^i;w)]-\pmb Y_{k,l}^i\rVert_1 Lrecon​=i∑N​k,l∑KL​∥III[fk,l1​(XXXi;w),fk,l2​(Xi;w)]−YYYk,li​∥1​
    对源图像I\pmb IIII和得到纹理图Y\pmb YYYY对应像素之间的RGB偏差值做约束

  • 感知损失LpercL_{perc}Lperc​:I[f(X;w)]\pmb I[f(\pmb X;w)]III[f(XXX;w)]与Y\pmb YYYY的感知损失

实验

由于研究的问题没有真实数据,因此只对方法做定性的评估。

数据集

训练数据为从网上商城爬取到的服装图片,通过作者构造的网络生成的。由于网上商城大多仅提供服装的正面图,没有背面图,因此生成的数据集也多为正面图。但实际上利用正面图和背面图学习到的背面映射几乎一样。

作者构造了2267张短袖正面图,2277张短裤正面图,3410张长裤正面图。与背部相关的网络仍使用正面图或正背面图进行训练。

实验结果比较

作者将该方法与形状上下文匹配和图像到图像像素级转换进行对比。结果如下,从左到右依次为像素集转换,形状上下文匹配和本文的方法。可以看出形状上下文匹配在服装边缘处均表现不好,而像素级转换生成的纹理较模糊。

作者还进行了用户使用评价试验。试验选取30个受试者,对20个视频中的服装进行评价。每个视频中含有参考服装图片,以及两个生成的穿着服装的人体模型,一个是由基线方法(前两种方法)生成,一个是由本文的方法生成。全部的人均认为本文的方法生成的效果比基线方法好。

虚拟试穿

由于本文预测的是像素位置的映射,因此可以很方便地实现虚拟试穿功能。作者将该方法与VITON和CP-VTON虚拟试穿方法比较,结果如下图。可以看出,在比较夸张的姿势下,VITON和CP-VTON表现不好,而Pix2Surf能大致还原。说明基于图像的虚拟试穿方法存在局限性。

总结

  • 提出了一个从2D服装图像到3D服装模型的实时转换方法

  • 完成服装纹理的转换

  • 该方法需要服装的正面图和背面图,且需要在A-pose下的图像

CVPR 2020 | 《Learning to Transfer Texture from Clothing Images to 3D Humans》 论文解读相关推荐

  1. CVPR 2020 | Open Images冠军方案:商汤TSD目标检测算法解读

    该论文名为 Revisiting the Sibling Head in Object Detector,其提出基于任务间空间自适应解耦(task-aware spatial disentanglem ...

  2. CVPR 2020 《Context-Aware Group Captioning via Self-Attention and Contrastive Features》论文笔记(数据集)

    目录 简介 动机 贡献 方法 实验 简介 本文提出了一个新任务--Group Captioning,就是在一堆图片中,对特定的几个图片生成caption,生成的caption要具备选定的图片的特性,且 ...

  3. 【CVPR 2020】图神经网络在计算机视觉上的应用:精选论文两篇

    今天介绍两篇在计算机视觉领域应用图神经网络的论文,这两篇论文选自CVPR2020,都可以在arxiv上找到对应的原文. 第一篇论文题目为Object Relational Graph with Tea ...

  4. CVPR 2020 论文大盘点-超分辨率篇

    本文盘点CVPR 2020 所有超分辨率(Super-Resolution,SR)技术相关论文,总计21篇,超分辨率是CV领域传统方向,下面这张图让你一眼明白它要做什么. 图片来自CVPR2019 M ...

  5. CVPR 2020 开幕!最佳论文奖等揭晓!

      新智元报道   来源:CVPR 2020 编辑:新智元编辑部 [新智元导读]美国西雅图时间6月16日上午8:30(北京时间晚11:30),大家期待已久的计算机视觉和模式识别领域的「奥斯卡」CVPR ...

  6. CVPR 2020 | 旷视研究院提出数据不确定性算法 DUL,优化人脸识别性能

    IEEE国际计算机视觉与模式识别会议 CVPR 2020 (IEEE Conference on Computer Vision and Pattern Recognition) 大会官方论文结果公布 ...

  7. CVPR 2020 | 旷视研究院探究优化场景文字识别的「词汇依赖」问题

    IEEE国际计算机视觉与模式识别会议 CVPR 2020 (IEEE Conference on Computer Vision and Pattern Recognition) 大会官方论文结果公布 ...

  8. 论文解读:《Learning Linear Transformations for Fast Image and Video Style Transfer》,CVPR 2019

    论文解读:<Learning Linear Transformations for Fast Image and Video Style Transfer>,CVPR 2019 0. 论文 ...

  9. CVPR 2020 Workshop on Continual learning in Computer Vision 征稿

    点击我爱计算机视觉标星,更快获取CVML新技术 为了进一步推广Lifelong Robotic Vision项目,吸引更多的学术工业界的研究开发人员,英特尔中国研究院作为主办方之一 在IEEE Con ...

最新文章

  1. linux centos/debian下hadoop2.6.5单机伪分布式安装
  2. SAP Spartacus 里 对 isPlatformBrowser API 的使用
  3. python模型的属性是什么_Python的自定义属性访问跟描述器以及ORM模型的简单介绍...
  4. 前端学习(3222):函数式组件使用props
  5. mysql linux 安装_mysql-5.7.28 在Linux下的安装教程图解
  6. 关于asp.net利用mono部署到Linux上的一些说明
  7. oracle 多个with as
  8. 事务屏幕创建tcode_数据库并发事务存在的问题(脏读、不可重复读、幻读等)...
  9. C# 获取所有网卡信息
  10. 代码整洁之道—技术分享
  11. Caffe安装 (OPENCV4 Cuda10.2 Xavier)
  12. Docker|安装docker toolbox ,拉取镜像并在浏览器中打开 2021-05-29
  13. 【图书推荐】中国首部敏捷开发案例集《敏捷开发一千零一夜》
  14. phpstorm如何找回删除的文件
  15. 基于 OpenCV + Python 的人脸识别上课签到系统
  16. 小米更新显示非官方rom_小米红米手机ROOT后支付宝提示“支持环境风险”+TWRP_recovery刷机出现ZIP刷机包前面校验失败...
  17. LDPC码动态调度算法
  18. hsql统计两天数据差异的算法及lag()/led()分析函数的使用
  19. linux驱动框架和驱动代码
  20. js实现页面的上滑下拉功能

热门文章

  1. Kafka主题(Topic)的管理
  2. php 一年多少天,【后端开发】php获取一年有多少天
  3. 解析Kafka中的 Topic 和 Partition
  4. Lua 打印table、ngx.say table
  5. idea :不支持发行版本11问题
  6. MySQL启动提示The server quit without updating PID file (/[失败]sqld/mysqld.pid).
  7. 《全民攻城》开心周末,好礼相赠
  8. 周报(水管工问题,和图的遍历)
  9. ZJFC 2008 暑假集训总结(自己写的PPT)
  10. 深度对话字节火山引擎:进军云服务的初心、决心与信心