使用Python编写的换脸软件

使用Python编写的换脸软件 这是一个使用Python编写的换脸软件,所提供的换脸功能包含以下两个场景: 将图像B上的人脸换成图像A上的人脸

本文包含相关资料包-----> 点击直达获取<-------

使用Python编写的换脸软件

这是一个使用Python编写的换脸软件,所提供的换脸功能包含以下两个场景:

  • 将图像B上的人脸换成图像A上的人脸,生成换脸图片。
  • 将视频B上的人脸换成图像A上的人脸,生成换脸视频。

整体上,程序由两个过程组成:人脸检测和提取、人脸转换,分别实现于文件 detect.py convert.py ,两个阶段分别提供可选选项:包括图像变换的方法(2D变换和3D变换)和是否进行色彩调和。

在图形界面上(实现文件: gui.py ),提供生成的图片、视频预览功能,生成的图像视频会自动保存到 out 文件夹。

使用指南

准备

  1. 安装 Ananconda 或 Pycharm 以编译运行文件。

推荐 Python版本:3.8.3

  1. 检查是否安装如下库,以及版本是否满足要求:
推荐版本
numpy >= 1.20.3
scipy >= 1.6.2
opencv-python >= 4.5.1.48
dlib >= 19.22.0

你可以通过 pip 或者 conda 进行安装或更新,例如在 Anaconda Prompt 界面下输入:

pip install numpy==1.20.3 pip install scipy==1.6.2 pip install opencv-python==4.5.1.48 pip install dlib==19.22.0

运行

  • 在 Anaconda Prompt 进入对应文件夹后,输入

python main.py

即可开启界面,也可以直接在 Pycharm 中右键运行,开启后界面如下:

gui

运行效果

相对而言,3D Warp面部变化的效果由于2D Warp, 2D在边缘区域处理得不是很好;使用肤色调和(Color Correction)的效果也往往优于不使用肤色调和。

  1. 不同选项的换脸效果 - I (3D Warp + Color Correction)
Result Image
3 3-1
  1. 不同选项的换脸效果 - I (3D Warp + Without Color Correction)

2

2D Warp + Without Color Correct 2D Warp + Color Correct
test1-3 test1-4
3D Warp + Without Color Correct 3D Warp + Color Correct
test1-1 test1-2
  1. 不同选项的换脸效果 - II (2D Warp + Color Correction)

2

下面可以明显看出2D Warp和3D Warp的不同效果:

2D Warp 2D Warp + Color Correction 3D Warp 3D Warp + Color Correction
2-1 2-2 2-3 2-4
  1. 视频换脸效果:视频换脸是按帧一一处理的,比较耗时。

5

关键算法

  • 人脸检测与提取
  • keypoints_detection - 通过人脸五官68个关键点识别人脸集合,基于 dlib.shape_predictor 函数和数据集 shape_predictor_68_face_landmarks.dat
  • face_selection - 选取指定人脸
  • 人脸变换
  • face_swap - 人脸变换核心函数,步骤为:
    • 仿射变换 (2D/3D)
    • 生成掩膜
    • 颜色校正 (选)
    • 无缝接合
  • image_warping_2d - 2D仿射变换 ,通过调用cv2的 warpAffine 函数计算脸部映射后的人脸图像
    • points_transformation - 生成两份人脸关键点集的三角仿射变换矩阵M,作为2D Warping的关键参数。
  • image_warping_3d - 3D仿射变换 ,通过将图像变换为三角性构成的集合(借助 spatial.Delaunay ),对每个三角形区域进行运算和插值最后得到脸部映射后的人脸图像
    • grid_coordination - 获取点集对应的背景网格
    • bilinear_interpolation - 对人脸关键点坐标进行 双线性插值 处理,通过这个函数可以实现在改变图像大小的同时尽可能保证清晰度,用于人脸部分的缩放。
    • triangular_affine_matrices - 生成源点集到目标点集的 三角仿射矩阵
  • mask_generation - 生成掩膜 :借助 cv2.fillConvexPoly 填充凸多边形遮挡
  • color_correction - 通过 高斯滤波 进行人脸肤色调和

实现参考

该软件主要参考开源代码:https://github.com/wuhuikai/FaceSwap ,并复现其核心算法部分。

参考文献

  • 基于J2EE的远程网络教育系统研究与实现(电子科技大学·陈南荪)
  • 基于J2EE/SSH在线代码评测系统的设计与实现(电子科技大学·陈元静)
  • 基于SSH架构的个人空间交友网站的设计与实现(北京邮电大学·隋昕航)
  • 印刷公司内容管理平台的设计与实现(吉林大学·郎彩虹)
  • 印刷公司内容管理平台的设计与实现(吉林大学·郎彩虹)
  • 成语电子词典系统的设计与实现(电子科技大学·刘健)
  • 基于J2EE平台的工作流管理系统的运行引擎和客户端及管理工具的设计与实现(西北大学·门浩)
  • 基于J2EE/SSH在线代码评测系统的设计与实现(电子科技大学·陈元静)
  • 基于视频分享社交系统后台的设计与研发(中国地质大学(北京)·刘昌瑞)
  • Facial Expression Recognition Based on Deep Learning(湖南大学·PHAENGKHAMME NA Mr.)
  • 基于web的人脸识别登陆和管理系统设计与实现(郑州大学·王哲)
  • 交互式熊猫拍照系统设计与实现(电子科技大学·程小虎)
  • 基于CNN的交互式巨幅人物合照展示系统设计与实现(华中师范大学·刘燕)
  • 网络流量统计分析系统(吉林大学·石景龙)
  • 印刷公司内容管理平台的设计与实现(吉林大学·郎彩虹)

本文内容包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主题。发布者:源码码头 ,原文地址:https://bishedaima.com/yuanma/36174.html

相关推荐

  • 基于SpringBoot框架的服装生产管理

    这是一个采用Java语言开发的🔥🔥SpringBoot核心框架的服装生产管理系统源代码🔥🔥,该项目运用了SpringBoot和Vue的技术栈,开发工具为Idea或Eclipse
    2024年05月23日
    7 1 1
  • 基于JSP+sqlserver的电子书在线网站源码

    随着互联网技术的不断发展,电子书行业也逐渐兴起,基于JSP+SQL Server的电子书在线网站源码的研究和开发变得日益重要,该系统采用JSP,Servlet和SQL Server等技术实现了一个功能完善的电子书下载网站系统
    2024年05月07日
    21 1 6
  • 基于Springboot+Jean推理机+Jsoup实现的个人健康监控管理系统

    基于Springboot+Jean推理机+Jsoup实现的个人健康监控管理系统 一,项目简介 1,1 背景分析 健康管理的思路和实践最初出现在美国
    2024年05月14日
    3 1 1
  • 基于SpringBoot框架的网上服装商城

    这是一套采用🔥🔥SpringBoot为核心的电商服装平台源代码,主要编程语言为Java,并结合了Vue,js技术,开发工具选择的是Idea或Eclipse,此项目可被用作毕业设计或课程实践任务
    2024年05月23日
    45 1 8
  • CNN 模型之Python

    CNN 模型 一,CNN 模型原理 1,1 什么是 CNN 在数字图像处理中有一个称为“边缘检测”的技术,它用到了信号的卷积操作,使用 Sobel 算子和原图像做卷积
    2024年05月14日
    2 1 1
  • 基于JSP的美食网站食谱网站、javaweb源码

    本文将探讨基于JSP的美食网站食谱网站,javaweb源码的设计与实现,当前,随着网络技术的不断发展,人们对于获取美食信息的需求日益增长,然而,在现有的美食网站中,用户可能会遇到信息不够详尽
    2024年05月07日
    7 1 1
  • 基于SSM的中医管理系统源码

    这是一个🔥🔥基于SSM的中医管理系统🔥🔥的项目源码,开发语言Java,开发环境Idea/Eclipse,这个 中医管理系统开发技术栈为SSM项目,可以作为毕业设计课程设计作业使用SSM框架实现一个中医管理系统
    2024年05月23日
    16 1 5
  • SpringDataJPA

    (一)J2EE 项目系列(三)--Spring Data JPA+Spring+SpringMVC+Maven 快速开发(1)项目架构 (二)J2EE 项目系列(三)--Spring Data JPA+Spring+SpringMVC+Maven 快速开发(2)多个第三方服务端接入之云旺 IM (三)Java-解决实现 JPA 的 hibernate 自动建表的编码问题 (四)WEB 后台--基于 Token 的 Web 后台登录认证机制(并讲解其他认证机制以及 cookie 和 session 机制) (一)J2EE 项目系列(三)--Spring Data JPA+Spring+SpringMVC+Maven 快速开发(1)项目架构 文章结构:(1)项目环境搭建;(2)简单业务逻辑测试框架;(3)项目配置注意点;(4)快速开发上手技巧; 一
    2024年05月14日
    3 1 1
  • 基于tensorflow和flask的本地图片库web图片搜索引擎

    基于tensorflow和flask的本地图片库web图片搜索引擎 1 Project Overview 1,1 Project Description Based on tensorflow and Flask
    2024年05月14日
    2 1 1
  • 使用Python编写的换脸软件

    使用Python编写的换脸软件 这是一个使用Python编写的换脸软件,所提供的换脸功能包含以下两个场景: 将图像B上的人脸换成图像A上的人脸
    2024年05月14日
    1 1 1

发表回复

登录后才能评论