热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

想提前目睹人到中年的发型?试试这款自制秃头生成器

要说最近哪部剧最红,我说是《隐秘的角落》没人有意见吧?看了这部片子,全国观众除了被男主张东升提醒爬山有风险之外,片中的另一个

要说最近哪部剧最红,我说是《隐秘的角落》没人有意见吧?

 

看了这部片子,全国观众除了被男主张东升提醒爬山有风险之外,片中的另一个场景也颇让人印象深刻,容易让人产生共鸣,那就是张东升看到自己二十年后的样子。

这华丽丽的地中海造型,感觉秦昊老师帅气的脸吼起来也有点吃力了......作为一名脑力劳动者,张东升年纪轻轻就秃了头。生活中,普通人在残酷的现实中,由于压力、焦虑问题,秃头也绝对可以在困扰现当代中青年人的难题中名列前茅,尤其是对于熬夜是家常便饭的程序员小哥哥、小姐姐们。

 

这个难题是如此容易引发共鸣,以至于 B 站 著名 Up 主 MarsLUL 也注意到了这点,并自制了一个秃头生成器,想要一睹二十年后,或许用不了二十年后自己的发型稍有变化的样子,大可以动手试试。

 

首先,来看一下 MarsLUL 制作的秃头生成器效果:

惊!除了发型变了,怎么还有点面目可憎的感觉呢?

 

效果还是挺神奇的。话不多说,还是那句话,我们更关心效果实现背后的技术原理。

 

MarsLUL 提到,该生成器的思路和代码大部分来源于一篇 Medium 教程《Hairstyle Transfer — Semantic Editing GAN Latent Code》(https://medium.com/swlh/hairstyle-transfer-semantic-editing-gan-latent-code-b3a6ccf91e82)。

 

那我们就先来看看,这篇文里提到的 Hairstyle Transfer 是怎么实现的。简单来说,这篇文章里,作者探索了使用隐式空间(latent space),改变输入图像发型的方法。

      

当然,这个项目也是基于 GAN。大家都知道,GAN 的基本原理是通过对抗训练学习从潜在分布到真实数据的非线性映射。

 

但问题是,通常隐式空间和语义属性之间的关系是未知的。例如,隐式代码如何确定生成的发型,比如说刘海、颜色等。另外,很难判断这些属性之间彼此是否有关联。

 

在这篇文章中,作者提出的关键方法是探索如何在经过训练的 GAN 模型(例如 PG GAN 和StyleGAN)的隐式空间中编码单个或多个发型的语义。

 

他们借用了 InterFaceGAN 论文中提出的概念:对于任何二进制语义,在潜在空间中都存在一个超平面作为分隔边界。基于这个想法,他们设法通过线性变换来解码属性表示。

 

文中,作者对每个属性使用线性超平面,将其法线向量作为输出面相对于目标属性连续变化的方向。在 StyleGAN 空间中,他们找到了莱昂纳多 · 迪卡普里奥年轻时的图像隐代码,绘制了与刘海超平面正交的方向,将隐代码的位置沿该方向移动,创建男神不同刘海状态图片。

 

              

停!Stop!我不看!只要我暂停按得快,男神就永远是我心中的男神......

 

类似地,MarsLUL 在视频里中也简单介绍了秃头生成器的制作方法。

 

他说到,市面上大部分生成器都是由GAN 的神经网络来实现的,简单来说,拿图片生成来做例子,你可以理解成它有两个互相对抗的部分,一部分生成图片,一部分分辨图片的真假,不断训练,一直训练到辨别不出生成的图片是真是假,目标也就实现了。

 

StyleGAN 就是一个用来生成图片的 GAN 的实现,输入一个隐式向量,它可以凭空生成一张人物照片。

 

具体怎么实现的呢?

 

第一步,就是想办法找到可以生成输入照片的隐式向量,这可以通过训练一个残差网络来实现。直接使用 StyleGAN-Encoder 将照片转化成一个隐式向量,从而生成一个 StyleGAN 版本。这样生成的图像与源图像会有细微的差别,但是八九不离十。

 

第二步,招待控制秃顶这个变量的方法,这里用到的是训练一个 SVM 二分器,以喂给  StyleGAN 的隐式向量为输入,以这个隐式向量生成的图片是否秃顶为输出,训练模型。找到这个二分器之后,只需要根据对应方向现行微调隐式向量,就可以控制生成图片的秃顶程度了。使用名人图片数据集 CelebA 作为训练数据,它已经很友好地将秃顶名人做好分类。经过 5 小时左右的训练,模型终于训练好了!

 

最后一步,拍一张帅帅的照片,生成对应的隐式向量,按对应方向移动就可以生成图像了。

 

向生发的方向移动,生成的视频中头发开始旺盛生长:

 

             

 

话说生发后的秦昊老师,貌似真有那么一丢丢像张杰?!

 

向脱发的方向移动,生成视频中头发开始逐渐稀疏......

             

 

秃了头后的秦昊老师长这样......

 

其实这也提醒了大家熬夜的危害,为了自己的头发,没事别熬夜玩手机......

 

最后,指路 B 站视频,看 UP 主亲自示范:

https://www.bilibili.com/video/BV1ot4y197MG?from=search&seid=2383888781525915306

推荐阅读

  • 阿里巴巴副总裁司罗:达摩院如何搭建NLP技术体系?

  • 重磅!CSDN 发布「AI开源贡献奖Top5」「AI新锐公司奖Top10」「AI优秀案例奖Top30」三大榜单

  • 用机器学习还原《隐秘的角落》那些被修改的台词

  • Python轻松搞定Excel中的20个常用操作

  • 厉害!国内大学生计算机编程第一人,一人挑战一个队,百度最年轻 T10,现创业自动驾驶

  • Balancer因通缩代币STA遭遇闪电贷攻击,价值50万美元资产被黑

你点的每个“在看”,我都认真当成了AI


推荐阅读
  •   作为一种编程语言,Python比C#,Java,C和C++更具吸引力。它被称为“胶水语言”,它也被喜欢它的程序员誉为“美丽”的编程语言。从云计算,客户端到物联网终端,Pytho ... [详细]
  • 2019年斯坦福大学CS224n课程笔记:深度学习在自然语言处理中的应用——Word2Vec与GloVe模型解析
    本文详细解析了2019年斯坦福大学CS224n课程中关于深度学习在自然语言处理(NLP)领域的应用,重点探讨了Word2Vec和GloVe两种词嵌入模型的原理与实现方法。通过具体案例分析,深入阐述了这两种模型在提升NLP任务性能方面的优势与应用场景。 ... [详细]
  • 提升 Kubernetes 集群管理效率的七大专业工具
    Kubernetes 在云原生环境中的应用日益广泛,然而集群管理的复杂性也随之增加。为了提高管理效率,本文推荐了七款专业工具,这些工具不仅能够简化日常操作,还能提升系统的稳定性和安全性。从自动化部署到监控和故障排查,这些工具覆盖了集群管理的各个方面,帮助管理员更好地应对挑战。 ... [详细]
  • V8不仅是一款著名的八缸发动机,广泛应用于道奇Charger、宾利Continental GT和BossHoss摩托车中。自2008年以来,作为Chromium项目的一部分,V8 JavaScript引擎在性能优化和技术创新方面取得了显著进展。该引擎通过先进的编译技术和高效的垃圾回收机制,显著提升了JavaScript的执行效率,为现代Web应用提供了强大的支持。持续的优化和创新使得V8在处理复杂计算和大规模数据时表现更加出色,成为众多开发者和企业的首选。 ... [详细]
  • Python与R语言在功能和应用场景上各有优势。尽管R语言在统计分析和数据可视化方面具有更强的专业性,但Python作为一种通用编程语言,适用于更广泛的领域,包括Web开发、自动化脚本和机器学习等。对于初学者而言,Python的学习曲线更为平缓,上手更加容易。此外,Python拥有庞大的社区支持和丰富的第三方库,使其在实际应用中更具灵活性和扩展性。 ... [详细]
  • TensorFlow基础知识深化讲解
    批标准化批标准化(batchnormalization,BN)是为了克服神经网络层数加深导致难以训练而诞生的。深度神经网络随着深度加深,收 ... [详细]
  • 结城浩(1963年7月出生),日本资深程序员和技术作家,居住在东京武藏野市。他开发了著名的YukiWiki软件,并在杂志上发表了大量程序入门文章和技术翻译作品。结城浩著有30多本关于编程和数学的书籍,其中许多被翻译成英文和韩文。 ... [详细]
  • MySQL 5.7 学习指南:SQLyog 中的主键、列属性和数据类型
    本文介绍了 MySQL 5.7 中主键(Primary Key)和自增(Auto-Increment)的概念,以及如何在 SQLyog 中设置这些属性。同时,还探讨了数据类型的分类和选择,以及列属性的设置方法。 ... [详细]
  • 从0到1搭建大数据平台
    从0到1搭建大数据平台 ... [详细]
  • 原文网址:https:www.cnblogs.comysoceanp7476379.html目录1、AOP什么?2、需求3、解决办法1:使用静态代理4 ... [详细]
  • 秒建一个后台管理系统?用这5个开源免费的Java项目就够了
    秒建一个后台管理系统?用这5个开源免费的Java项目就够了 ... [详细]
  • R语言中向量(Vector)数据类型的元素索引与访问:利用中括号[]和赋值操作符在向量末尾追加数据以扩展其长度
    在R语言中,向量(Vector)数据类型的元素可以通过中括号 `[]` 进行索引和访问。此外,利用中括号和赋值操作符,可以在向量的末尾追加新数据,从而动态地扩展向量的长度。这种方法不仅简洁高效,还能灵活地管理向量中的数据。 ... [详细]
  • 独家解析:深度学习泛化理论的破解之道与应用前景
    本文深入探讨了深度学习泛化理论的关键问题,通过分析现有研究和实践经验,揭示了泛化性能背后的核心机制。文章详细解析了泛化能力的影响因素,并提出了改进模型泛化性能的有效策略。此外,还展望了这些理论在实际应用中的广阔前景,为未来的研究和开发提供了宝贵的参考。 ... [详细]
  • 中文分词_中文分词技术小结几大分词引擎的介绍与比较
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了中文分词技术小结几大分词引擎的介绍与比较相关的知识,希望对你有一定的参考价值。笔者想说:觉得英文与中文分词有很大的区别, ... [详细]
  • 高清图解:神经网络、机器学习、数据科学一网打尽
    |导|读BY:AI-Beetle完全图解人工智能、NLP、机器学习、深度学习、大数据!这份备忘单涵盖了上述领域几乎全部的知识点,并使用信息图、脑图等多种可视化方式呈现,设计精美,实 ... [详细]
author-avatar
帅宁
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有