英雄联盟马匹查询器啥意思 英雄联盟怎么玩的( 六 )




图2.5显示了正在发生的事情的大致情况 。 生成器的最终目标是欺骗鉴别器, 使其混淆真假图像 。 鉴别器的最终目标是找出它何时被欺骗, 但它也有助于告知生成器生成的图像中可识别的错误 。 一开始, 生成器会产生一个混乱的三眼怪兽, 看起来一点也不像伦勃朗的肖像 。 鉴别器很容易就能分辨出混乱的画面和真实的绘画 。 随着训练的进行, 信息从鉴别器返回, 生成器使用它来改进 。 在训练结束时, 生成器能够产生令人信服的假货, 鉴别器不再能够分辨出哪个是哪个 。




图 2.5 GAN game的概念


请注意, “鉴别器胜利”或“生成器胜利”不应该被视为字面意义的胜利, 因为这两者之间没有明确的比赛 。 这两个网络都是基于另一个网络的结果进行训练的, 从而驱动每个网络参数的优化 。


这项技术已经证明, 它能够使用生成器从只有噪声和调节信号(比如属性(例如, 面部:年轻、女性、戴眼镜)或其他图像)的内容中生成真实的图像 。 换言之, 一个训练有素的生成器学习了一个看似合理的模型, 用于生成即使在人类检查时也看起来真实的图像 。




这个概念的一个有趣的演变是CycleGAN 。 CycleGAN可以将一个领域的图像转换为另一领域的图像(反之亦然), 而无需我们在训练集中显式提供匹配对 。


在图2.6中, 我们有一个CycleGAN工作流, 用于将马的照片变成斑马, 反之亦然 。 请注意, 有两个独立的生成器网络, 以及两个不同的鉴别器 。




图 2.6 训练到可以欺骗两个鉴别器网络的CycleGAN




有趣的是, 在这一点上, 我们不需要匹配的马/斑马对作为基本事实 。 从一组无关的马和斑马照片开始, 生成器就可以了解他们的任务, 而不仅仅是一个纯粹的监督设置 。 该模型的意义远不止于此:生成器学习如何在不监督学习内容的情况下有选择地更改场景中对象的外观 。 没有信号表明鬃毛是鬃毛, 腿是腿, 但是它们被翻译成与另一只动物的形状结构相吻合的东西 。




我们现在可以玩这个模型了 。 CycleGAN网络是在从ImageNet数据集中提取的(不相关的)马图像和斑马图像数据集上训练的 。 该网络学习一个或多个马匹的图像, 并将它们全部变成斑马, 剩下的图像尽可能保持不变 。 虽然人类在过去几千年里没有专注的去寻找一种能把马变成斑马的工具, 但这项任务展示了这些架构在远程监控下模拟复杂现实世界的能力 。 虽然它们有其局限性, 但有迹象表明, 在不久的将来, 我们将无法在实时视频源中区分真假, 这就像打开了一盒蠕虫罐头, 我们要及时将它关闭 。




netG模型已创建, 但它包含随机权重 。 我们之前提到过, 我们将运行一个在horse2zebra数据集上预训练过的生成器模型, 该数据集的训练集包含两组分别为1068张马的图像和1335张斑马的图像 。 数据集位于http://mng.bz/8pKP 。 模型的权重已保存在一个.pth文件中, 该文件只是模型张量参数的pickle文件 。 我们可以使用模型的load_state_dict方法将它们加载到ResNetGenerator中:




此时, netG已经获得了它在训练期间获得的所有知识 。 请注意, 这与我们在第2.1.3节中从torchvision加载resnet101时发生的情况完全相同;但是torchvision.resnet101函数对我们隐藏了加载 。


让我们将网络置于eval模式, 就像我们对resnet101所做的那样:




像我们之前做的那样打印出模型, 考虑到它的功能, 我们可以理解它实际上相当简洁 。 它获取一幅图像, 通过观察像素来识别图像中的一匹或多匹马, 然后分别修改这些像素的值, 使生成的图像看起来像一只真正的斑马 。 我们不会在打印输出(或者源代码)中识别出任何类似斑马的东西:那是因为里面没有类似斑马的东西 。 网络是一个脚手架, 有价值的东西在权重中体现 。


特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。