一、前言
大家好,我是 Jack 。
今年提出的 U^2-Net 显著性检测算法,刷爆了 reddit 和 twitter,号称是 2020 年「地表最强」的静态背景分割算法,可以看下效果:
你以为今天要讲分割?错!
U^2-Net 这两天又出新活,在 U^2-Net 网络架构基础上,实现了人物肖像画的生成,细节「完美」复刻。
我用自己的「歪脖子照」测试了下效果。
万年不变老规矩,继续手把手教学。
算法原理、环境搭建、效果实现,一条龙服务,尽在下文!
二、U^2-Net
受 U-Net 网络的启发,U^2-Net 也是一种类似编码-解码(Encoder-Decoder)的网络结构。
研究者在此基础上,提出了新型残差 U-block(ReSidual U-block, RSU),融合不同尺寸接受野的特征,以捕获更多不同尺度的上下文信息。
RSU 网络与现有卷积块的结构对比如下:
最右边的结构,就是 RSU-L,L 表示编码器中的层数,C_in、C_out 分别表示输入和输出通道,M 表示 RSU 内层通道数。
具体而言,RSU 主要有三个组成部件,分别是一个输入卷积层、一个高度为 L 的类 U-Net 对称编码器 - 解码器结构以及一个通过求和来融合局部和多尺度特征的残差连接。
为了更好地理解设计理念,研究者在下图中对 RSU 与原始残差块进行了比较。
结果显示,RSU 与原始残差块的最大区别在于 RSU 通过一个类 U-Net 的结构替换普通单流卷积,并且通过一个由权重层转换的局部特征替换原始特征。
更值得注意的是,得益于 U 形结构,RSU 的计算开销相对较少,因为大多数运算在下采样特征图中应用。下图展示了 RSU 与其他特征提取模块的计算成本曲线图:
U^2-Net 的整体网络架构如下:
U^2-Net 主要由三部分组成:
- 6 阶段编码器;
- 5 阶段解码器;
- 与解码器阶段和最后编码器阶段相连接的显著图融合模块。
说完网络结构,再看下损失函数,研究者使用了类似于整体嵌套边缘检测(HED)的深度监督算法:
其中,M=6, 为 U^2-Net 的 Sup1, Sup2, ..., Sup6 stage。
为 Sup1, Sup2, ..., Sup6 输出的显著图
的损失函数。
为最终融合输出的显著图
的损失函数。
为每个损失函数的权重。
对于每个 l ,采用标准的二值交叉熵损失函数:
其中,(r, c) 为像素坐标;(H, W) 为图像尺寸,height 和 width。
分别表示 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
第三步:在工程目录,运行程序。
1 | python u2net_portrait_test.py |
在 u2net_portrait_test.py 可以查看输入图片路径和输出图片路径:
最后再看下运行效果:
四、絮叨
这个月送了两波福利,一次发「521」元红包,一次送 5 本书。
上周末,挨个联系,红包和书都已经送出,这是其中留言榜红包群的拼手气结果。
事实证明,拼手气红包,最后抢蛮有优势。
图书也都联系了相应的获奖者,填写了邮寄信息,现已发货。
简单说下我的感受,网络上存在一群薅羊毛党,留言点赞这种形式很容易被钻空子,花几毛钱,就可以刷上榜。
这次送「521」元红包活动,旨在感谢读者一直以来的支持,结果还是被这些人看到了,过来刷赞。
这都还好,也都可以理解。
可笑的是,被我发现刷赞,还有个恼羞成怒的,加好友过来开骂,这我是万万没想到的。
以后,这类福利还会有,特别是赠书,争取每个月搞一次。
这次没中奖,没关系,以后还有很多机会,中不中奖都是次要,能学到知识才是最重要的。
我是 Jack ,我们下期见。
文章持续更新,可以微信公众号搜索【JackCui-AI】第一时间阅读,本文 GitHub https://github.com/Jack-Cherish/PythonPark 已经收录,有大厂面试完整考点,欢迎Star。
2021年4月30日 下午8:31 沙发
刚入门深度学习,看到博主的趣味AI算法,感觉很有趣,就尝试下载源码运行了一下,结果电脑GPU太差跑不了,搞了半天,白嫖百度AI studio不行,又去白嫖阿里天池的,总算成功了
随便找了个图片试了一下,结果给我整笑了,生成的图一只眼没了,另一只眼扭曲了
真的把我给惊了。。。
2021年5月3日 下午7:04 1层
@风吹过 哈哈,别弄出心理阴影,可以试试其他算法,这个算法鲁棒性差一些,并且需要完整人脸头像那种。
2021年8月13日 下午1:40 1层
@风吹过 我用CPU也很快呀
2021年8月13日 下午9:03 2层
@23 我当时一开始就想用GPU试试,自己的不行,就试着去找GPU的平台了,没有直接试CPU😂