Face Alignment in Full Pose Range: A 3D( 三 )


2:我们还能发现,使用300W-LP数据集训练该模型,NME有了明显的减少,表明该模型有了很大的提高 ; 从而验证了作者利用人脸合成方法形成的数据集对于训练模型有很大的帮助 ;
七:论文额外的部分代码
dlib人脸检测器的说明:
1:= dlib.(.dat文件)
功能: 是标记人脸特征点;
目的:获得人脸特征点检测器 ;
2:=(img , ).parts()
功能:是获得人脸特征点的位置 ;
参数:img是3维度的numpy,是矩形 ;

Face Alignment in Full Pose Range: A 3D

文章插图
目的:获得68个人脸特征点的位置,即返回一个列表,里面包含68个元组(x , y),表示每个特征点的坐标位置 ;
3: = dlib.ector()
目的:获得dlib人脸检测器;
4:rect = (img , 1)
目的:获得矩形;返回的值是个列表,用来存储矩形,有几个人脸就有几个矩形;若没有人脸,则返回的是个空列表;
接下来可以用 :
bbox = [rect.left(), (), rect.right(), rect.()],然后利用矩形从而获得人脸盒子bbox ;
3DDFA和的不同之处:
1::3DDFA采用dlib人脸特征点检测器;
3DDFA获得的参数的方法为:获得矩形,再将矩形转化为box人脸盒子,然后利用人脸盒子从而获得参数 ; 第二种方法就是:利用人脸特征点检测器获得68个人脸特征点的坐标位置,然后利用68个人脸特征点从而获得参数;
2::采用人脸检测器 ; 获得人脸盒子box后,利用人脸盒子从而获得参数 ;
表达重建三维人脸模型的方法:
1:用稀疏特征点代表该重建的三维人脸模型;返回的维度是[3,68];共有68个特征点,这些数据表明了68个特征点的三维坐标,第一行是x轴,第二行是y轴坐标,第三行是z轴坐标;因为我们是在这个二维平面上画出该三维人脸模型,所以,我们取的特征点坐标是x轴和y轴的 ;
2用稠密特征点代表该重建的三维人脸模型;返回的维度是[3,53215];共53215个特征点,表明了这些特征点的三维坐标,同上
3:使用网格代表该重建的三维人脸模型 ;
五:
使用画出三维点和二维点
1:二维点的显示:
plt.( = ) ;
plt.(img) #形成一个热图,但不显示该图片,方便在该热图上添加东西,需要调用show才显示该热图 ;
plt.plot(list x , list y )是单纯画出线条的;其中加上属性’o’(plt.plot(x , y , ‘o’))才是生成点!!!!其加上属性plt.plot(x , y ,=‘o’)是即画圆又连直线; 可以累加多次调用plot生成坐标点 ;
plt.axis(list[] , list [])#这个是配置坐标系的 ;
二:三维点的生成以及绘画
fig = plt.() #先配置图片大小 ;
ax = fig.(1 ,2 ,1, =‘3d’) ;先创建一个子窗口,并向该子窗口中第一个窗口添加内容 ; 并确定是三维的子窗口
ax.(list x , list y ,list z) ;形成一个散点 ;但这些散点之间不链接;
ax.(list x , list y ,list z )#是按照固定的顺序链接这些散点 ;
ax.(‘x’) ; ax.(‘y’) ;ax.(‘z’)#用这些信息来配置坐标系 ;
ax.([]) ; x轴坐标系的坐标标记为空 ;
三:关于plt.plot()的说明
1:plt.plot(list x , list y)是画出点所连接的直线 ;
2:plt.plot(list x , list y,‘o’)是只画出这些点
3:plt.plot(list x ,list y , =‘o’)是即画出点,又画出点所连接的直线
关于矩阵的说明:
矩阵中包含着pitch(俯仰) , yaw(偏航) , roll(旋转);其具体的角度操作来表示人脸旋转,详情可以见论文,主要就是分好轴,然后转动坐标系,就相当于转动这个人脸获得旋转;
其中用欧拉角来表示人脸的姿势可能会出现万向锁,即不同的欧拉角表达[pitch , yaw ,roll ]可能出现相同的旋转人脸 ;