今年提出的 U^2-Net 显著性检测算法,刷爆了 reddit 和 twitter,号称是 2020 年「地表最强」的静态背景分割算法,可以看下效果:
U^2-Net 这两天又出新活,在 U^2-Net 网络架构基础上,实现了人物肖像画的生成,细节「完美」复刻。
算法原理、环境搭建、效果实现,一条龙服务,尽在下文!
受 U-Net 网络的启发,U^2-Net 也是一种类似编码-解码(Encoder-Decoder)的网络结构。
研究者在此基础上,提出了新型残差 U-block(ReSidual U-block, RSU),融合不同尺寸接受野的特征,以捕获更多不同尺度的上下文信息。
最右边的结构,就是 RSU-L,L 表示编码器中的层数,C_in、C_out 分别表示输入和输出通道,M 表示 RSU 内层通道数。
具体而言,RSU 主要有三个组成部件,分别是一个输入卷积层、一个高度为 L 的类 U-Net 对称编码器 - 解码器结构以及一个通过求和来融合局部和多尺度特征的残差连接。
为了更好地理解设计理念,研究者在下图中对 RSU 与原始残差块进行了比较。
结果显示,RSU 与原始残差块的最大区别在于 RSU 通过一个类 U-Net 的结构替换普通单流卷积,并且通过一个由权重层转换的局部特征替换原始特征。
更值得注意的是,得益于 U 形结构,RSU 的计算开销相对较少,因为大多数运算在下采样特征图中应用。下图展示了 RSU 与其他特征提取模块的计算成本曲线图:
-
-
-
与解码器阶段和最后编码器阶段相连接的显著图融合模块。
说完网络结构,再看下损失函数,研究者使用了类似于整体嵌套边缘检测(HED)的深度监督算法:
其中,M=6, 为 U^2-Net 的 Sup1, Sup2, ..., Sup6 stage。
为 Sup1, Sup2, ..., Sup6 输出的显著图,
的损失函数;
为最终融合输出的显著图,
的损失函数;
为每个损失函数的权重。
其中,(r, c) 为像素坐标;(H, W) 为图像尺寸,height 和 width。
分别表示 GT 像素值和预测的显著概率图。
总的来说,U^2-Net 的设计构建了具有丰富多尺度特征以及较低计算和内存成本的深度架构。
https://arxiv.org/pdf/2005.09007.pdf
https://github.com/NathanUA/U-2-Net
很简单,没啥特殊的库,安装好 Pytorch、Numpy、Skimage 等基础第三方库即可。
我将程序和权重文件都进行了打包,嫌麻烦,可以下载直接使用。
python u2net_portrait_test.py
br
在 u2net_portrait_test.py 可以查看输入图片路径和输出图片路径:
更多精彩推荐
☞什么?性能强大的 M1 芯片不支持 Docker ?
☞首次公开!阿里巴巴云原生实时数仓核心技术揭秘
☞起底 Windows 35 年发展史
☞赠书 | 新手指南——如何通过HuggingFace Transformer整合表格数据
☞想在边缘运行计算机视觉程序?先来迎接挑战!
☞《中国区块链发展报告(2020)》导读:全球区块链政策及监管重点趋势