计算机系统应用教程网站

网站首页 > 技术文章 正文

一个神奇的深度学习算法,实现图像抠图照片换背景人像素描漫画化

btikc 2024-09-05 12:20:08 技术文章 13 ℃ 0 评论

最近接到了一个图片抠图需求,系统研究了一下目前SOTA的抠图算法,其中一个U2NET的深度网络架构着实惊艳到我了,简单的结构能够实现多个图像处理功能

一、抠图

二、图像换背景

三、照片素描

四、漫画效果

五、U2NET算法架构

背景

解决的问题:

显著目标检测(Salient Object Detection, SOD)的目的是分割出图像中最具吸引力的目标

已有解决方案的不足:

大多数的SOD网络有一个共性,就是注重利用现有的主干提取深层特征,比如Alexnet, VGG, ResNet, ResNeXt, DenseNet等。这些主干最终都是为图像分类任务而设计的,他们提取的特征代表语义,而不是局部细节和全局对比信息,但这对显著性检测至关重要。

他们需要在ImageNet数据集上进行预训练,如果目标数据与ImageNet具有不同的分布,则会比较低效。

第一,该网络是一个两层嵌套的U型结构,没有使用图像分类的预训练主干模型,可以从头训练;

第二,新的体系结构允许网络更深入、获得高分辨率,而不会显著增加内存和计算成本。在底层,设计了一个新的RSU,能够在不降低特征映射分辨率的情况下提取级内多尺度特征;在顶层,有一个类似于U-Net的结构,每一stage由一个RSU块填充。


传统的Unet结构

下采样卷积操作(可用已有的backbone)+上采样层

跳跃连接 skip-connection

U2Net模型原理

RSU


a-c3*3的滤波器感受野小,无法获取全局信息,通过skip-connection整合不同层次的特征,图(d)中显示了一个inception like block用空洞卷积增大感受野

RSU结构

上图中(e)显示了RSU-L(Cin, M, Cout)结构, 其中L是编码器层数,Cin,Cout表示输入和输出通道,M表示RSU内部层中的通道数。因此,我们的RSU主要由三个部分组成:

输入卷积层:它将输入特征图x (HxWxCin)转成一个具有Cout通道数的中间图F1(x),这是提取局部特征的普通卷积层。

Unet编码解码结构:以中间特征图F1(x)为输入,学习提取和编码多尺度上下文信息 U ( F 1 ( x ) ) 。U表示如图2(e)所示的U-Net。L越大,RSU越深,池化操作越多,更大的感受野以及更丰富的局部和全局特征。配置此参数可以从具有任意空间分辨率的输入特征图中提取多尺度特征。从梯度降采样特征图中提取多尺度特征,并通过逐步上采样、合并和卷积等方法将其编码到高分辨率特征图中。这一过程减少了大尺度直接上采样造成的细节损失。

残差连接层:F 1 ( x ) + U ( F 1 ( x ) )融合局部特征和多尺度特征。

U2net结构

提出一种不同的U型结构叠加模型。我们的指数表示法是指嵌套的U型结构,而不是级联叠加。理论上,可以将指数n设为任意正整数,实现单级或多级嵌套U型结构。但是,嵌套层太多的体系结构过于复杂,无法在实际中实现和应用。


将n设为2来构建U2-Net,是一个两层嵌套的U型结构,如图所示。它的顶层是一个由11 stages(图中的立方体)组成的大U型结构,每一stage由一个配置良好的RSU填充。因此,嵌套的U结构可以更有效的提取stage内的多尺度特征和聚集阶段的多层次特征。


U2-Net网络由三部分构成:

六级编码器

五级解码器

与解码器和最后一级编码器相连的显著图融合模型

(Ⅰ)编码器En_1, En_2En_3En_4阶段中,分别使用RSU-7RSU-6RSU-5RSU-4RSU结构。前面的数字如7, 6, 5, 4RSU的高度LL通常根据输入特征图的空间分辨率进行配置。在En_5En_6中,特征图的分辨率相对较低,进一步对这些特征图进行下采样会导致有用上下文的丢失。因此,RSU-5RSU-6阶段,使用RSU-4F,其中F表示RSU是一个扩展的版本,其中我们用空洞卷积来代替合并和上采样操作。这意味着RSU-4F的所有中间特征图都与其输入的特征图具有相同的分辨率。


(Ⅱ)解码阶段具有与En_6中对称编码阶段相似的结构。在De_5中,还使用了空洞卷积的RSU-4F,这与在编码阶段En_5En_6中使用的类似。每个解码器阶段将来自前一级的上采样特征映射和来自其对称编码器阶段的特征映射的级联作为输入

(Ⅲ)最后一部分是显著图融合模块,用于生成显著概率图S6,S5,S4,S3,S2,S1。U2-Net网络首先通过3x3卷积和Sigmoid函数从En_6De_5De_4De_3De_2De_1生成6个输出显著概率图 。然后,将输出的显著图的逻辑图(卷积输出,Sigmoid函数之前)向上采样至与输入图像大小一致,并通过级联操作相融合,然后通过1x1卷积层和一个Sigmoid函数,以生成最终的显著性概率映射图 S

损失函数

U2Net 训练的损失函数定义为:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表