deepfakes/faceswap
GitHub: deepfakes/faceswap
一个开源的深度学习换脸工具,旨在让任何人都能学习、实验和实践 AI 技术。
Stars: 55982 | Forks: 13412
# deepfakes_faceswap
# 宣言
## FaceSwap 具有合乎伦理的用途。
当换脸技术最初被开发和发布时,这项技术是开创性的,是 AI 发展的巨大一步。但在学术界之外,它却完全被忽视了,因为代码晦涩难懂且支离破碎。它需要对复杂的 AI 技术有透彻的理解,并需要花费大量精力才能弄明白。直到有个人将其整合为一个单一、连贯的代码库。它能运行,也能起作用,而且正如互联网上涌现的新技术常见的那样,它立刻被用于创建不当内容。尽管该软件最初被用于不当目的,但它是任何人都可以下载、运行并通过实验来学习的第一个 AI 代码,而无需拥有数学、计算机理论、心理学等领域的博士学位。在“deepfakes”出现之前,这些技术就像黑魔法一样,只有那些能够理解在深奥且极其复杂的书籍和论文中所描述的内部原理的人才会使用。
“Deepfakes”改变了这一切,任何人都可以参与到 AI 的开发中来。对于我们开发者来说,这段代码的发布开启了一个绝佳的学习机会。它让我们能够在他人开发的想法基础上进行构建,与各种技术娴熟的程序员合作,在进行实验的同时学习新技能,并最终为一项随着发展只会得到更广泛应用的新兴技术做出贡献。
是否有人在利用类似的软件做可怕的事情?是的。正因如此,开发者们一直遵循严格的道德标准。我们中许多人甚至不使用它来创建视频,我们只是修改代码,看看它能做什么。可悲的是,媒体只集中在该软件的不道德用途上。不幸的是,这就是它最初向公众曝光的方式,但这并不代表它被创建的初衷、我们现在的使用方式,或者我们对其未来的期望。像任何技术一样,它可以被用于善举,也可以被滥用。我们的意图是以一种尽量减少滥用可能性的方式来开发 FaceSwap,同时最大化其作为学习、实验工具的潜力,当然,也包括进行合法的换脸。
我们并不是要诋毁名人或贬低任何人。我们是程序员,我们是工程师,我们是好莱坞 VFX 艺术家,我们是活动家,我们是业余爱好者,我们是人类。为此,我们认为,就我们开发者而言,现在是时候发表一份标准声明,说明此软件是什么以及不是什么了。
- FaceSwap 不用于创建不当内容。
- FaceSwap 不用于未经同意或在意图隐瞒其使用的情况下更换面容。
- FaceSwap 不用于任何非法、不道德或目的可疑的用途。
- FaceSwap 的存在是为了实验和探索 AI 技术,用于社会或政治评论,用于电影,以及任何数量的符合道德和合理的用途。
我们对 FaceSwap 可能被用于不道德和名誉扫地的事情感到非常不安。然而,我们支持开发能够合乎道德地使用的工具和技术,并为任何想要亲身实践学习的人提供 AI 方面的教育和经验。我们将对任何出于不道德目的使用此软件的人采取零容忍态度,并将积极劝阻任何此类用途。
# 如何设置和运行项目
FaceSwap 是一个 Python 程序,可以在包括 Windows、Linux 和 MacOS 在内的多种操作系统上运行。
有关完整的安装说明,请参阅 [INSTALL.md](INSTALL.md)。为了获得最佳性能,您将需要一个支持 CUDA 的现代 GPU。许多 AMD GPU 可以通过 ROCm (Linux) 提供支持。
# 概述
该项目有多个入口点。您将需要:
- 收集照片和/或视频
- 从您的原始照片中**提取**人脸
- 使用从照片/视频中提取的人脸**训练**模型
- 使用模型**转换**您的源文件
查看 [USAGE.md](USAGE.md) 获取更详细的说明。
## 提取
从您的设置文件夹中,运行 `python faceswap.py extract`。这将从 `src` 文件夹中获取照片,并将提取的人脸提取到 `extract` 文件夹中。
## 训练
从您的设置文件夹中,运行 `python faceswap.py train`。这将从包含两个人脸图片的两个文件夹中获取照片,并训练一个模型,该模型将保存在 `models` 文件夹中。
## 转换
从您的设置文件夹中,运行 `python faceswap.py convert`。这将从 `original` 文件夹中获取照片,并将应用新面容后的照片存入 `modified` 文件夹。
## GUI
或者,您可以通过运行 `python faceswap.py gui` 来启动 GUI。
# 一般说明:
- 提到的所有脚本都有 `-h`/`--help` 选项以及它们可以接受的参数。您很聪明,能弄清楚它是如何工作的,对吧?!
注意:有一个用于视频的转换工具。可以通过运行 `python tools.py effmpeg -h` 来访问它。或者,您可以使用 [ffmpeg](https://www.ffmpeg.org) 将视频转换为照片,处理图像,然后再将图像转换回视频。
**一些提示:**
重用现有的模型将比从零开始训练快得多。
如果没有足够的训练数据,可以从长相相似的人开始,然后再切换数据。
# 救命,我需要支持!
## Discord 服务器
您最好的选择是加入 [FaceSwap Discord 服务器](https://discord.gg/FC54sYg),那里有很多愿意提供帮助的用户。请注意,就像这个 repo 一样,这是一个 SFW 服务器!
## FaceSwap 论坛
或者,您可以在 [FaceSwap 论坛](https://faceswap.dev/forum) 中发布问题。请不要在此 repo 中发布常规的支持问题,因为它们可能会被直接删除而不予回复。
# 关于机器学习
## 计算机是如何知道如何识别/塑造人脸的?机器学习是如何工作的?什么是神经网络?
这很复杂。这里有一个很好的视频,能让这个过程变得易于理解:
[](https://www.youtube.com/watch?v=R9OHn5ZF4Uo)
这里有一个稍微深入的视频,试图解释神经网络的基本运作方式:
[](https://www.youtube.com/watch?v=aircAruvnKk)
太长不看:训练数据 + 不断试错
标签:Deepfake, Vectored Exception Handling, 人工智能, 图像处理, 换脸, 深度学习, 用户模式Hook绕过, 计算机视觉, 逆向工具