女神换脸二次元女神"/>
真人女神换脸二次元女神
最近做一个测试,用到了人脸landmark检测。用到了谷歌开源的mediapipe, 使用系统是windows10,又不能虚拟机。在windows下研究编译了很久,才搞定。其中有个人脸稠密点检测facelandmark, 测试速度很快而且精度也说的过去。目前的开源人脸swap方案都是基于深度学习的,需要大量训练时间,比如deepfake。于是我想采用以前的三角仿射方案做个换脸。虽然我这周映射方案一眼就能看出融合,但作为娱乐问题不大。毕竟不需要训练。
以前用的是dlib的68个点的方案,只是做眉眼以下部分。这次用谷歌这个方案,脸部大部分区域都覆盖到了。对换脸来说体验度也会大大提升。简单地说就是设置原始图和要替换的脸。这两个人脸型越接近,最终效果越好。
采用谷歌的方法首先生成特征点,看一看结果。然后把特征点保存下来。进行三角剖分。三角仿射首先要确定三角形结构。标准做法就是三角剖分,依据维诺图做成delauny三角。这位博主讲的很好,大家参考就行了,地址
生成三角剖分,opencv有实现的方案。这位博主写的很完善,请大家参考。地址
我是一个很懒的人觉得opencv代码太多了,还要写保存代码,太麻烦了,就用matlab做了。
points = load("pts");
x = points(:,1);
y = points(:,2);
tr=delaunay(x ,y);
tr=int32(tetr);
t = [tr(:,[1,2]); tr(:,[2,3]); tr(:,[1,3])];
[t,j,j] = unique(sort(t,2),'rows');
可以直接生成delauny三角,而且可以排序剔除掉重复的。反正只用生成一次。生成的是三角的索引,结果保存下来就可以了。
然后进行仿射变换,把要进行仿射的三角变化过去就行了。请参考opencv写的,地址
都仿射变化之后可以生成结果。速度基本也能令人满意。
大家还可以看
真人女神实时换脸二次元女神
以后我把详细的实现方法和大家分享。
另外,我看了一下face++的收费人脸稠密点检测,准确度很高。我建议把特征点检测换成face++的,对各种侧脸卡通形象都能准确检测,效果应该会更好。
更多推荐
真人女神换脸二次元女神
发布评论