Towards Fast, Accurate and Stable 3D Dense Face Alignment(ECCV20)
从源代码理解3DDFA_V2的推理过程
默认crop_policy = 'box'
,bbox
宽和高的平均值记为old_size
,找到bbox
的中心(center_x, center_x)
,从中心向四周扩展尺寸为int(old_size * 1.58)
,从而截取出一个正方形
resize截取的正方形,使得尺寸为120x120
,输入网络,输出为一个62维向量,做denorm
解析62维向量,前12维还原为3x4
变换矩阵(Row-major表示,前3列为R
,最后1列为offset
),然后40维shape系数,最后10维exp系数
pts3d = R @ (self.bfm.u + self.bfm.w_shp @ alpha_shp + self.bfm.w_exp @ alpha_exp). \reshape(3, -1, order='F') + offset # (3, 38365), np.float32型
pts3d = similar_transform(pts3d, roi_box, size)
【重点理解similar_transform】
- 可视化平均脸
self.bfm.u
,包含38365个顶点(下巴和左眼一侧涂粉色,便于观察)
c=0, [-78194.804688, 76469.000000], span=154663.812500
c=1, [-90549.601562, 88859.593750], span=179409.187500
c=2, [12451.929688, 132685.437500], span=120233.507812
2. Rotation + translation
R =
[[ 0.00041103, -0.00001579, -0.00027028],[-0.00003433, 0.00048299, -0.00007941],[ 0.00026137, 0.00007537, 0.00040724]]
R不是一个正交矩阵,包含了scale成分
Q:如何从R中分解出xyz3个维度的scale成分,并检查它们是否相等?
或者说R除以scale,能够变成一个正交矩阵?
3D vertices被缩小了,并且向右进行了旋转(yaw为负值)
c=0, [-46.478928, 26.152172], span=72.631104
c=1, [-48.969337, 35.275150], span=84.244492
c=2, [-12.467479, 54.472210], span=66.939690
offset =
[[ 73.81529 ],[ 74.7374 ],[-66.671585]]
Q:在正交投影下,offset的z轴有什么意义?(按照论文的说法,这个值应该是0才对)
或者说只需要11维来表示3x4矩阵就足够了啊
c=0, [27.336365, 99.967468], span=72.631104
c=1, [25.768059, 110.012543], span=84.244484
c=2, [-79.139061, -12.199375], span=66.939682
此时3D vertices xy坐标的范围落在[0, 120]内,z坐标未知
3. 进入similar_transform
函数
x、z坐标减1(理由 for Python compatibility,暂时无法理解),y坐标做flip
放大至与bbox图像吻合(bbox一定是正方形,scale_x
等于scale_y
),然后加上bbox左上角,最终与图像吻合
对于z轴,放大同样的倍数,然后将最小值移动到0,z轴取值越大,离相机越近
c=0, [306.172302, 843.037231], span=536.864929
c=1, [433.077942, 1055.785156], span=622.707214
c=2, [0.000000, 494.795898], span=494.795898
渲染的时候,x轴向右,y轴向下,光源放在(0, 0, 5)处,与归一化到standard cube(-1到1区间)的3D vertices进行shading
只有z轴的相对差异影响渲染效果,平移无所谓
Towards Fast, Accurate and Stable 3D Dense Face Alignment(ECCV20)相关推荐
- [ECCV2020](3DDFA-V2)Towards Fast, Accurate and Stable 3D Dense Face Alignment
标题:Towards Fast, Accurate and Stable 3D Dense Face Alignment 链接:https://arxiv.org/pdf/2009.09960 亮点: ...
- Towards Fast, Accurate and Stable 3D Dense Face Alignment(3DDFA_V2)论文与项目学习
论文部分: 一:创新点: 背景:大部分论文在进行人脸对齐重建的时候,大多数关注模型的精确性(模型的好坏,用NME来衡量),很大程度上忽略了模型的运行速度 : 所以该论文针对这一问题,在提高模型精确性的 ...
- 从零实现一个3D目标检测算法(3):PointPillars主干网实现(持续更新中)
在上一篇文章<从零实现一个3D目标检测算法(2):点云数据预处理>我们完成了对点云数据的预处理. 从本篇文章,我们开始正式实现PointPillars网络,我们将按照本系列第一篇文章介绍的 ...
- AI绘图设计师Stable Diffusion成为生产力工具(四):制作食品安全PPT所用的相关图片png、图标icon
S:你安装stable diffusion就是为了看小姐姐么? I :当然不是,当然是为了公司的发展谋出路~~ 预先学习: 安装webui<Windows安装Stable Diffusion W ...
- 用函数式编程,从0开发3D引擎和编辑器(三):初步需求分析
大家好,本文介绍了Wonder的高层需求和本系列对应的具体功能点. 确定Wonder高层需求 业务目标 Wonder是web端3D开发的解决方案,包括引擎.编辑器,致力于打造开放.分享.互助的生态. ...
- 从零实现一个3D目标检测算法(2):点云数据预处理
在上一篇文章<从零实现一个3D目标检测算法(1):3D目标检测概述>对3D目标检测研究现状和PointPillars模型进行了介绍,在本文中我们开始写代码一步步实现PointPillars ...
- Unity 3D 动画系统(Mecanim)|| Unity 3D 人形角色动画(Avatar)
Unity 3D 动画系统(Mecanim) Mecanim 动画系统是 Unity 公司推出的全新动画系统,具有重定向.可融合等诸多新特性,可以帮助程序设计人员通过和美工人员的配合快速设计出角色动画 ...
- Mutual Supervision for Dense Object Detection(ICCV2021)阅读笔记
同上一篇一样,这边摸鱼笔记也是关于分类和回归分支的权重设计. 论文来源于2021ICCV,论文链接:https://openaccess.thecvf.com/content/ICCV2021/pap ...
- Python Matplotlib 3D绘图详解(汇总)
Python Matplotlib 3D绘图详解(汇总) 最初开发的 Matplotlib,仅支持绘制 2d 图形,后来随着版本的不断更新, Matplotlib 在二维绘图的基础上,构建了一部分较为 ...
最新文章
- mysql 5.7 xbackup_CentOS 7 下 MySQL 5.7 配置 Percona Xtrabackup
- windows查看Python安装目录
- 有趣|“手工耿”史诗级大作:可以横着走的概念车!罗永浩点赞,网友喊话雷军投资...
- FPGA之道(55)状态机的HDL模板
- Android布局之weight属性解析
- iextensionunit类_Java ICompilationUnit.reconcile方法代码示例
- java读取excel数据_Java读取Excel内容(转)
- html一边自动宽度,有2列,希望右侧固定宽度,左侧自动宽度。_html/css_WEB-ITnose...
- 2015暑假多校联合---Friends(dfs枚举)
- Ubuntu中vim编辑器的常用操作
- 统信操作系统UOS上手操作与初体验、功能测试
- HSQL调优的一些个人见解
- 软考软件设计师下午真题-面向对象的程序设计与实现-组合设计模式(2021年上半年试题六))Java代码讲解
- 欧美古风格html网站模板
- Openstack1 云计算与虚拟化概念
- LightOJ1197 Help Hanzo(欧拉筛+区间素数)
- Android如何自定义服务器DynamicMockServer的使用
- 王者荣耀账号转服务器,王者荣耀安卓IOS怎么转换-帐号转区方法介绍
- IE6/7常用的hack
- ESP8266 NodeMcu机智云SOC方案开发经验分享