0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Hairstyle Transfer 你值得拥有!

电子设计 来源:电子设计 作者:电子设计 2020-12-08 23:28 次阅读
点赞再看,养成习惯,微信公众号搜索【JackCui-AI】关注这个爱发技术干货程序员。本文 GitHub https://github.com/Jack-Cherish/PythonPark 已收录,有一线大厂面试完整考点、资料以及我的系列文章。

1 隐秘的角落

用了一个周末,一口气刷完了《隐秘的角落》这部电视剧。

不得不说,这部网剧看得过瘾,回想起来,也总觉得意犹未尽。

剧情开篇,景区的山顶,一个戴眼镜的男人,借着拍照片,把一对老人推了下去。

这一幕,被在景区游玩的三个孩子意外拍摄下来,故事从此展开。

这部剧,让一个叫「张东升」男人的名字大火,也就是把那对老人推下山的凶手。

而跟他本人同样出名的场景,是他突然摘下假发后露出的发际线。

「张东升」秃头造型,火爆网络,他的经典语录有:

  • 一起去爬山吗?
  • 您看我还有机会吗?

作为脑力劳动的程序员,脱发可能都是曾担忧过的一个问题。

在「程序员界」,流传着这么一个段子:

「我变秃了,也变强了。」

想不想,看看变强后的自己

今天,继续手把手教学

算法原理、环境搭建、模型训练、效果测试,一条龙服务,尽在下文!

2 算法原理

我在曾经的文章里讲解过类似的算法原理,例如之讲解的 ALAE 算法,人脸属性编辑。

这个算法是发表在国外 Medium 网站上的一篇文章。

Medium 原文地址(需要翻墙):

https://medium.com/swlh/hairs...

这是一个名为 Azmarie Wang 的作品,作者是一位小姐姐。

而她也在自己的 Github 上开源了相应的代码。

项目地址:

https://github.com/Azmarie/Ha...

但,这个篇文章传到国内,源码被别人做成了视频在「 B站 」分享出去,就「莫名其妙」的变成了"自制"。

很多公众号发文,都冠以「 B 站 Up 主自制」的标签

自制个锤子哦!

人家文章、源码早就有了好吗?

槽吐完了,咱接着说算法原理。

这个算法的名字叫「 Hairstyle Transfer 」。

该算法也是站在巨人的肩膀上实现的,由 StyleGAN Encoder、Progressive GAN、InterFace GAN、SVM 多种算法组成。

算法流程:

换一个通俗一点的语言解释就是,先使用原图生成一个「人脸模型 」,这个「人脸模型 」是可以编辑的,然后找到控制头发的「控制器」,调整参数,改变发型。

专业一点的说法就是,先使用原图,用 StyleGAN Encoder 反算潜码( latent code ),获得多维的特征向量(头发、眼睛、嘴巴、肤色等)。

然后训练 SVM 分类器,用于找到控制头发的那个特征向量。

最后使用 Interface GAN 编辑特征,就可以完成头发属性编辑了。

想更深入的学习原理,需要先学习一下 StyleGAN Encoder 和 Interface GAN ,篇幅有限,本文就「点到为止」了。

3 环境搭建

你需要有在有 GPU 的机器上运行,如果能翻墙工具,强烈建议使用 Google Colab。

Google Colab 是一个 Google 提供的免费 GPU 服务器。

「 Hairstyle Transfer 」需要下载很多存放到 Google Drive 的权重文件。

使用 Google Colab 跑这个项目很方便,因为这个项目都是 ipynb 文件。

如果不能翻墙,也可以自己在本地,使用 Anaconda 新建虚拟环境。

「 Hairstyle Transfer 」算法,使用 Tensorflow 框架,并且必须是 1.x 的版本,不兼容 2.x。

首先,创建一个名为 tf 的 conda 虚拟环境。

conda create -n tf python=3 jupyter notebook

然后使用 conda 和 pip 按照如下顺序,安装如下第三方库即可:

conda install scipy tensorflow-gpu==1.15

都安装好后,环境就算搭建完成了。

4训练 & 效果测试

我们以「张东升」的图片为例进行训练以及效果测试。

图片下载地址:

https://cuijiahua.com/wp-cont.../_1.png

将项目下载到本地:

git clone https://github.com/Azmarie/Hairstyle-Transfer

然后你会得到三个 jupyter 的 ipynb 文件。

依照上述顺序跑通代码。

StyleGAN/_Encoder 会生成 output/_vectors.npy 文件。

Get/_attribute/_score/_pairs 会 stylegan-dlatents.npy 和 9/_score.npy 文件。

然后,Train/_Boundaries 使用 stylegan-dlatents.npy 和 9/_score.npy 训练 Boundaries。

这里用到了 SVM 分类器,将控制头发的特征向量分出来,得到 boundary.npy,用于后续发型的控制。

最后,再使用 output/_vectors.npy 和 boundary.npy,即可控制头发的多少。

ipynb 详细说明了代码需要如何运行,依照它的教程,按照次序运行程序即可。

里面详细说明了,怎么裁剪图片,怎么训练等。

代码中用到了很多 Google Drive 保存的权重文件,我将这些权重文件,都上传到了我的百度网盘。

下载链接(提取码:2afm):

https://pan.baidu.com/s/1sPqg...

需要注意的是,下载好这些权重文件,在跑代码的时候需要将代码中所有的加载权重方式修改一下,都改为本地加载。

例如修改 pkl 的读取方式等。

很简单,这里就不一一说明了。

根据 ipynb 的说明,我们就可以顺利跑通所有代码。

完成模型训练和效果测试。

最后,一起看一下「张东升」的 「 Hairstyle Transfer 」效果吧!

就很“秃然”,有木有!

用自己照片试试看?一秒变超人。

5 最后

「 Hairstyle Transfer 」 算法也有一些小问题,比如控制头发变少,图片的色调也会变暗。

作者:Jack Cui
原文:https://mp.weixin.qq.com/s/3r...
关注作者公众号,获取更多有趣AI应用~

系列篇

更多AIoT领域有趣的算法应用及产品请关注有趣的AIoT应用专栏。

审核编辑:符乾江
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 人工智能
    +关注

    关注

    1791

    文章

    46761

    浏览量

    237352
  • 代码
    +关注

    关注

    30

    文章

    4736

    浏览量

    68303
收藏 人收藏

    评论

    相关推荐

    4只值得买入的半导体芯片美股

    4只值得买入的半导体芯片美股
    的头像 发表于 07-15 10:51 653次阅读

    【米尔-瑞米派兼容树莓派扩展模块-试用体验】值得拥有的米尔-瑞米派兼容树莓派生态板

    输入输出接口以及兼容树莓派的40PIN接口。 收到的板子实拍图: 说明书及配件: 其它实拍图片: 线路连接和上电: 板子整体设计精美,规划整齐,黑色的板卡也很漂亮,功能强大,用来学习和应用的公司各种场景项目中也非常表现非常优秀。在米尔活动期间购买也很划算,非常值得
    发表于 05-13 11:28

    值得信赖的工业主板制造商

    朗锐智科是一家值得信赖的工业主板制造商,为工业领域提供可靠的主板解决方案。我们的工业主板经过严格的行业标准测试和验证,以确保其在恶劣环境下的稳定性和耐用性。我们的产品具有广泛的兼容性和可扩展性,适合
    的头像 发表于 04-24 11:21 434次阅读
    <b class='flag-5'>值得</b>信赖的工业主板制造商

    CentOS环境下SFTP双机高可用部署实录

    SFTP(SSH File Transfer Protocol),安全文件传送协议。有时也被称作 Secure File Transfer Protocol 或 SFTP。
    的头像 发表于 03-29 11:22 2232次阅读

    ICMAN液位检测值得拥有#电路知识 #单片机

    电路单片机
    ICman
    发布于 :2024年03月22日 17:25:31

    SDL中的Cy_SCB_SPI_Transfer能否不需要触发spi中断来完成传输?

    SDL中的Cy_SCB_SPI_Transfer是通过触发中断来完成传输的,这样在读取大量寄存器时会产生大量的中断影响性能,能否不需要触发spi中断来完成传输?比如直接写base->unTX_FIFO_WR.u32Register后,循环等待传输标志位清空?
    发表于 02-02 08:18

    Cy_SCB_SPI_ClearTxFifo()和Cy_SCB_SPI_Transfer()清除SPI TX FIFO中的数据,后面存入的数据跟发送出去的不对应,全为7ffff的原因?

    我使用的是mcu型号是cyt2b75,关于Cy_SCB_SPI_ClearTxFifo()和Cy_SCB_SPI_Transfer()有问题。 1、Cy_SCB_SPI_ClearTxFifo
    发表于 02-02 06:25

    值得多看的FPGA 学习路线

    网上看到一篇文章,对于初学者很有用,学习的过程和注意点都很详细,值得给大家分享分享 出处: https://zhuanlan.zhihu.com/p/345303288 以下是部分摘要 入行10年后
    发表于 01-02 23:03

    正式发布!重塑的电脑体验!

    Microsoft Store,在 Windows 电脑里与正式见面。 微软电脑管家正式版全新登场!让电脑成为更简单、更智能的生活伙伴。 点击视频,了解微软电脑管家在电脑加速、内存清理、安全保护、高效办公方面有哪些值得期待
    的头像 发表于 12-15 16:25 336次阅读

    管材激光切割机值得拥有#管材激光切割机#激光切割机#

    激光切割机
    苏州镭拓激光
    发布于 :2023年12月04日 14:36:41

    3D时代值得关注的趋势

    3D时代值得关注的趋势
    的头像 发表于 11-24 16:37 422次阅读
    3D时代<b class='flag-5'>值得</b>关注的趋势

    点亮户外世界的高品质连接器  Amass LC系列值得拥有

    户外电池连接器用于户外智能设备内部电池的连接器产品,具有小巧、高电流传输、防水、防脱、防火等特性。在消费级无人机、平衡轮、储能设备等户外场景中得到广泛应用。防护等级决定了连接器在恶劣环境下的稳定性,而防火阻燃性则保证了锂电池的安全。
    的头像 发表于 11-24 09:40 623次阅读
    点亮户外世界的高品质连接器  Amass LC系列<b class='flag-5'>你</b><b class='flag-5'>值得</b><b class='flag-5'>拥有</b>

    全自动激光切管机值得拥有#全自动激光切管机#圆管激光切割机

    激光切割
    苏州镭拓激光
    发布于 :2023年11月22日 11:27:22

    伺服电机编码器报Encoder 1 DRIVE-CLIQ :Cyclic data transfer error的原因?

    伺服电机编码器报:Encoder 1 DRIVE-CLIQ :Cyclic data transfer error (component rumber 22 fault cause 33一般是由什么原因引起的?电机型号是1FK 7100-5AF71-1PG0 谢谢!
    发表于 11-21 06:17