「完美复刻」的人物肖像画生成算法 U^2-Net

2020年11月24日09:03:45 4 1,565 °C
摘要

U^2-Net 的显著性检测和人物肖像画生成算法。

「完美复刻」的人物肖像画生成算法 U^2-Net

一、前言

大家好,我是 Jack 。

今年提出的 U^2-Net 显著性检测算法,刷爆了 reddit 和 twitter,号称是 2020 年「地表最强」的静态背景分割算法,可以看下效果:

「完美复刻」的人物肖像画生成算法 U^2-Net

你以为今天要讲分割?错!

U^2-Net 这两天又出新活,在 U^2-Net 网络架构基础上,实现了人物肖像画的生成,细节「完美」复刻。

「完美复刻」的人物肖像画生成算法 U^2-Net

我用自己的「歪脖子照」测试了下效果。

「完美复刻」的人物肖像画生成算法 U^2-Net

万年不变老规矩,继续手把手教学。

算法原理、环境搭建、效果实现,一条龙服务,尽在下文!

二、U^2-Net

受 U-Net 网络的启发,U^2-Net 也是一种类似编码-解码(Encoder-Decoder)的网络结构。

研究者在此基础上,提出了新型残差 U-block(ReSidual U-block, RSU),融合不同尺寸接受野的特征,以捕获更多不同尺度的上下文信息。

RSU 网络与现有卷积块的结构对比如下:

「完美复刻」的人物肖像画生成算法 U^2-Net

最右边的结构,就是 RSU-L,L 表示编码器中的层数,C_in、C_out 分别表示输入和输出通道,M 表示 RSU 内层通道数。

具体而言,RSU 主要有三个组成部件,分别是一个输入卷积层、一个高度为 L 的类 U-Net 对称编码器 - 解码器结构以及一个通过求和来融合局部和多尺度特征的残差连接。

为了更好地理解设计理念,研究者在下图中对 RSU 与原始残差块进行了比较。

「完美复刻」的人物肖像画生成算法 U^2-Net

结果显示,RSU 与原始残差块的最大区别在于 RSU 通过一个类 U-Net 的结构替换普通单流卷积,并且通过一个由权重层转换的局部特征替换原始特征。

更值得注意的是,得益于 U 形结构,RSU 的计算开销相对较少,因为大多数运算在下采样特征图中应用。下图展示了 RSU 与其他特征提取模块的计算成本曲线图:

「完美复刻」的人物肖像画生成算法 U^2-Net

U^2-Net 的整体网络架构如下:

「完美复刻」的人物肖像画生成算法 U^2-Net

U^2-Net 主要由三部分组成:

  • 6 阶段编码器;
  • 5 阶段解码器;
  • 与解码器阶段和最后编码器阶段相连接的显著图融合模块。

说完网络结构,再看下损失函数,研究者使用了类似于整体嵌套边缘检测(HED)的深度监督算法:

「完美复刻」的人物肖像画生成算法 U^2-Net

其中,M=6, 为 U^2-Net 的 Sup1, Sup2, ..., Sup6 stage。

「完美复刻」的人物肖像画生成算法 U^2-Net

为 Sup1, Sup2, ..., Sup6 输出的显著图

「完美复刻」的人物肖像画生成算法 U^2-Net

的损失函数。

「完美复刻」的人物肖像画生成算法 U^2-Net

为最终融合输出的显著图

「完美复刻」的人物肖像画生成算法 U^2-Net

的损失函数。

「完美复刻」的人物肖像画生成算法 U^2-Net

为每个损失函数的权重。

对于每个 l ,采用标准的二值交叉熵损失函数:

「完美复刻」的人物肖像画生成算法 U^2-Net

其中,(r, c) 为像素坐标;(H, W) 为图像尺寸,height 和 width。

「完美复刻」的人物肖像画生成算法 U^2-Net

分别表示 GT 像素值和预测的显著概率图。

总的来说,U^2-Net 的设计构建了具有丰富多尺度特征以及较低计算和内存成本的深度架构。

更详细的内容,可以直接看 paper:

https://arxiv.org/pdf/2005.09007.pdf

三、效果测试

Github 项目地址:https://github.com/NathanUA/U-2-Net

第一步:搭建测试环境。

很简单,没啥特殊的库,安装好 Pytorch、Numpy、Skimage 等基础第三方库即可。

第二步:下载训练好的模型权重文件。

我将程序和权重文件都进行了打包,嫌麻烦,可以下载直接使用。

下载地址(提取码:jack):

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

第三步:在工程目录,运行程序。

在 u2net_portrait_test.py 可以查看输入图片路径和输出图片路径:

「完美复刻」的人物肖像画生成算法 U^2-Net

最后再看下运行效果:

「完美复刻」的人物肖像画生成算法 U^2-Net

四、絮叨

这个月送了两波福利,一次发「521」元红包,一次送 5 本书。

上周末,挨个联系,红包和书都已经送出,这是其中留言榜红包群的拼手气结果。

「完美复刻」的人物肖像画生成算法 U^2-Net

事实证明,拼手气红包,最后抢蛮有优势。

图书也都联系了相应的获奖者,填写了邮寄信息,现已发货。

「完美复刻」的人物肖像画生成算法 U^2-Net

简单说下我的感受,网络上存在一群薅羊毛党,留言点赞这种形式很容易被钻空子,花几毛钱,就可以刷上榜。

这次送「521」元红包活动,旨在感谢读者一直以来的支持,结果还是被这些人看到了,过来刷赞。

这都还好,也都可以理解。

可笑的是,被我发现刷赞,还有个恼羞成怒的,加好友过来开骂,这我是万万没想到的。

以后,这类福利还会有,特别是赠书,争取每个月搞一次。

这次没中奖,没关系,以后还有很多机会,中不中奖都是次要,能学到知识才是最重要的。

我是 Jack ,我们下期见。

文章持续更新,可以微信公众号搜索【JackCui-AI】第一时间阅读,本文 GitHub https://github.com/Jack-Cherish/PythonPark 已经收录,有大厂面试完整考点,欢迎Star。

weinxin
微信公众号
分享技术,乐享生活:微信公众号搜索「JackCui-AI」关注一个在互联网摸爬滚打的潜行者。
Jack Cui

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:4   其中:访客  3   博主  1

    • avatar 风吹过 来自天朝的朋友 谷歌浏览器 Windows 10 安徽省合肥市 中国科学技术大学 1

      刚入门深度学习,看到博主的趣味AI算法,感觉很有趣,就尝试下载源码运行了一下,结果电脑GPU太差跑不了,搞了半天,白嫖百度AI studio不行,又去白嫖阿里天池的,总算成功了
      随便找了个图片试了一下,结果给我整笑了,生成的图一只眼没了,另一只眼扭曲了
      真的把我给惊了。。。

        • avatar Jack Cui Admin 来自天朝的朋友 谷歌浏览器 Mac OS X 10_14_4 中国 移动

          @风吹过 哈哈,别弄出心理阴影,可以试试其他算法,这个算法鲁棒性差一些,并且需要完整人脸头像那种。

          • avatar 23 来自天朝的朋友 谷歌浏览器 Windows 10 广东省深圳市 电信 0

            @风吹过 我用CPU也很快呀

              • avatar 风吹过 来自天朝的朋友 谷歌浏览器  Android 10 MI 8 Lite Build/QKQ1.190910.002 河南省信阳市 联通 1

                @23 我当时一开始就想用GPU试试,自己的不行,就试着去找GPU的平台了,没有直接试CPU😂