白墨青月 - deepfakes
type: channel
link: https://mail.5moon.org/tag/deepfakes/
items: FakeApp 简明使用教程
items: [译注]在 Google Cloud 上使用 FakeApp

FakeApp 简明使用教程
type: item
date: 2018-02-16T14:57:00+00:00
description: 本来想逐字翻译 DeepFake Clud 的这篇教程，但是在翻译了其 Google Cloud FakeApp Tutorial（在 Google Cloud 上使用 FakeApp）之后有点累。那就简要地说明一下好了，哈哈。网上也有其他详细文字及视频教程可供参考。如果你还不知道"DeepFakes""FakeApp"到底是什么，自己搜索一下。简言之就是利用深度学习来给视频中的人物换脸。深度学习依赖 GPU 的计算能力，所以要么得有相应的设备（钱），要么得有获得相应计算能力（云等）的途径。云的话可以考虑一下 Google Cloud.准备好硬件之后，可以开始玩耍。注： FakeApp 仅支持 Windows，但很多基于 DeepFakes 的应用支持在 Python 下使用，可在 Github 上看看。1.软件安装CUDA Toolkit 8.0Toolkit 可以帮你安装显卡的驱动及相关运算平台。一般深度学习框架都基于CUDA 7.5 或 8.0版本，所以装了最新的9.1版可能会无法使用哦。此处下载，一个主体一个补丁，依次安装。一般装完就可以了，如果有问题再按此文检查环境变量。FakeAppFakeApp 最新版本为2.1，提供更为便利的操作，可以自动从视频中提取截图、自动拼合换脸后的图片，推荐小白安装此版本。我之前安装的是1.1版的，需要手动对训练数据进行提取。可以在此下载1.1版或在此下载2.1版。下载完后解压，我使用的是 Google Cloud 的 Windows 实例，只有一个分区，就解压到了C盘根目录下。然后，在C盘根目录下创建 fakes 文件夹，在其下创建两个新文件夹：data_A 和 data_B. 然后把刚才解压的 FakeApp 目录下的 model 文件夹复制到这个文件夹下，最后的文件夹结构是这样的。图：DFCVisual C++ Redistributable for Visual Studio 2015并不需要安装 Visual Studio，有这个运行库就行了。未安装可能会报错。ffmpeg如果你选择的是2.1版本的 FakeApp，那么你可以用其自带功能进行截图和整合。如果是其他版本，可以利用第三方软件来操作。小白推荐使用PotPlayer 等软件在图形界面下进行操作（参考这个图解）。可以的话，在命令行界面下用 ffmpeg 可以进行更随心所欲的操作。如果截取 png，图片清晰，但体积较大；如果截取 jpg，默认设置压缩比较严重，画面不清，要自行设置图片质量参数 -qscale:v 2~31，数字越小质量越高。我使用的命令是（作为参考）：1ffmpeg -i VideoName.mp4 -qscale:v 2 -vf fps=10 "ImageName%04d.jpg"训练时可以斟酌每秒截几帧，但要替换的视频的请每帧截取（不然合成视频之后会很奇怪）。2.准备训练数据集从上面的文件夹结构就可以看出，至少得准备两个数据集。简单说来，A是想被替换原始视频的数据（身子），B是想用来替换脸的理想视频的数据（脸）。但一般放在A里用来训练的数据并不限于要被替换的视频（[被替换]是[训练]的子集），有些人甚至一开始用不同人的脸来训练模型，此处不做展开。理论上，换与被换的两人最好本身就长得比较像，两个视频的拍摄环境也最好相似（光线、角度）。素材的选取很大程度上决定了模型的质量以及最后换脸的效果。一般来说每个数据集要有几百上千张图片才能构建一个比较理想的模型。在我的测试中，A用了750张图片，B用了1600张图片，但是两人的角度都不是正面，且比较单一，对合成效果有所影响。2.1版本的 FakeApp 可以直接在软件用视频进行截取，我所使用的1.1版本需要手动将视频转化为截图之后再进行脸部提取。用 ffmpeg 将两个视频片段进行截图后，将截图文件分别放入 data_A 和 data_B 文件夹。3. 提取脸部数据进入 FakeApp 目录下，点击 fakeapp.bat 运行程序。在第一个选项卡 Extract 中，设置数据集的路径、图片格式（ jpg 或 png 等）、是否含有多张脸。记得处理器要选 GPU 噢，CPU 也可以跑但是速度，呵呵。分别对数据集 A 和 B 进行操作。这一操作会将每张数据集图片中的脸部提取（并对齐）为 256256 的小图放置在 aligned* 子目录下。4. 模型训练将 A 和 B 两个数据集都进行脸部提取之后就可以进行训练了。在第二个选项卡 Train 中，可以调整模型参数。一般来说默认的设置在跑够时间、损失函数达到一个较小的值之后可以获得一个还不错的效果。所以当程序提示内存不足的时候，要么缩小数据集原图的尺寸，要么将 Batch Size 缩小至32或16（最小为16）。还…

[译注]在 Google Cloud 上使用 FakeApp
type: item
date: 2018-02-16T14:35:00+00:00
description: 本文由 5moon 译注自 DeepFakes Club 的 How to Create DeepFakes with Google Cloud GPU Services，原文地址为 https://www.deepfakes.club/google-cloud-fakeapp-tutorial/ 5moon 注：基本按照原文译，有点长了，给个 30s Takeaway:Google Cloud 提供 GPU 服务，可选 Tesla K80 或 P100，跑 FakeApp 是够的；GPU 需要在控制台手动申请配额；Google Cloud 的新用户300美元赠金可用于 GPU 服务，但是要通过 GPU 配额的审批有可能得支付 35 美金作为预付款。译文：如果你想在 Windows 上使用 FakeApp 软件但是自己的电脑配置太差跑不起来，那你可以试试 Google Cloud 提供的 GPU 服务。这个教程会向你展示如何在 Google Cloud 里使用 FakeApp 制造“假象”。重要提醒Google Cloud 会按照使用其服务的时间来收取费用。如果你不能在使用结束后正确地终止一个虚拟机实例，月末的时候你可能会收到一张巨额账单。所以你最好清楚自己在做些什么。你应该使用 Google Cloud 的 GPU 服务么？云计算的价格Google 的 GPU 服务并不便宜。一个还算可以的配置24小时不停跑满一个月要耗费200到300美元。有几个办法来减少费用。你可以在不使用实例的时候停止它。你还是得付一小笔钱来保留你的设置和数据，但假设你一个月只用一半时间，你就能减少一两百块的花费。Google 目前给新用户提供了 300 美刀的免费额度。尽管你得升级为付费用户才能使用其 GPU 服务，但是这300美刀是可以使用的。这就足够你折腾 Google 云服务一个月并尝试做视频了。请不要滥用 Google 的慷慨善意。Google 的云服务不仅有商业用户，也有很多依赖它进行重要研究（如生物医学研究）的研究者和学生，谨记这点。如果经常使用请自觉付费（5moon 注：意思是不要故意注册好几个账号来获取免费额度）。5moon 注：微软的 Azure 本来也提供200刀体验金。可是在创建实例时其带 GPU 的资源总是不可用，我刷了半天后来发现提示写的是并不向中国区域销售此服务。哼，还是用 Google 好了。用云服务还是买一台新电脑你应该看看你的钱包（和女朋友的脸色）来考虑是剁手一台新电脑还是升级现有电脑。如果你想全新配置一台机器来跑 FakeApp，你可能至少得花1000美刀来买一台中端。电费也是要考虑的呢（如果一直跑的话）。如果你打算连着几个月都折腾 Deepfakes 视频的话，你最好就买一台新电脑。如果你只是想尝尝鲜，或者偶尔跑一跑，那么Google Cloud 就是你的贴心好朋友。准备一个 Google Cloud 账号注册并免费试用你要做的第一件事就是注册。点这里注册并获取其赠送的300美金。注册并填写资料。你必须有一个 Google 账户（或新建一个）。完成之后，你会被带到一个欢迎界面。点击“创建一个新项目”。（5moon 注：Google Cloud 有中文版的，这里懒，用了原文的截图）升级到付费服务来获取 GPU你现在应该会拥有300美刀可以用于使用 Google Cloud. 但是，这个免费试用并不包含 GPU 服务。创建完项目后，为了获取 GPU，你必须升级你的账户。“升级”的按钮可能在顶部的横幅里，没看到的话，点击左上“菜单”-“账单”，你应该会在右上角看到这个选项。点击“升级”，填写账单信息并确认。（5moon 注：需要绑定银行卡，我以前绑定过澳洲 Master 储蓄卡）申请 GPU 配额注意：有些用户反映 Google 现在要求支付一笔35美刀的费用来获取配额。这个要求是否是根据地域或是其他账户属性而异目前尚不清楚。5moon 注：我在申请之后就收到了邮件要求我支付一笔35美刀的费用或者出示曾经使用过的等额费用的账单。作为参考，我绑定的银行卡和账单信息都是澳洲的。即使你升级了账户，你仍然需要手动申请增加 GPU 配额，因为默认在全域都没有配额。配额是根据主机所在地区来划分的，所以先决定好区域再来申请。只有部分区域提供 GPU 服务。点此看看哪个区离你最近。不同区域 GPU 价格有些许不同，但为了减少访问实例时的延迟，选一个地理上离你最近的吧。（5moon 注：对中国用户来说，海外线路一直很迷。比如以前很多人选择日本机房，造成拥堵之后，实际访问体验甚至还不如延迟高的美国东部。）你可以选择 Tesla K80 或 P100 显卡。P100 性能确实强劲，但价格是 K80 的三倍。作为首次尝试，你可以选择更便宜的K8…