《SegFace: Face Segmentation of Long-Tail Classes》论文分享(侵删)

server/2025/3/1 22:33:21/

author={Kartik Narayan and Vibashan VS and Vishal M. Patel}

原文链接:[2412.08647] SegFace: Face Segmentation of Long-Tail Classes

摘要

        人脸解析是指将人脸语义分割为眼睛、鼻子、头发等关键面部区域。它是各种高级应用程序的先决条件,包括人脸编辑、人脸交换和面部化妆,这些应用程序通常需要对眼镜、帽子、耳环和项链等类别进行分割遮罩。这些不常出现的类称为长尾类,而长尾类被称为头类的频繁出现的类所掩盖。现有的方法,主要是基于CNN的,在训练过程中倾向于由头部类支配,导致长尾类的次优表示。以往的研究大多忽略了长尾类分割性能差的问题。为了解决这个问题,我们提出了一种简单有效的SegFace方法,它使用了一个轻量级的基于转换器的模型,该模型利用了可学习的类特定令牌。Transformer解码器利用类特定的令牌,允许每个令牌集中于其对应的类,从而实现每个类的独立建模。所提出的方法改善了长尾类的性能,从而提高了整体性能。据我们所知,SegFace是第一个使用Transformer模型进行人脸解析的工作。此外,我们的方法可适用于低计算边缘设备,达到95.96 FPS。我们进行了大量的实验,证明SegFace的性能显著优于之前的最先进模型,在CelebAMask-HQ数据集和LaPa数据集上分别获得了88.96(+2.82)和93.03(+0.65)的平均F1分数。

一、介绍

        人脸解析是一项语义分割任务,涉及为人脸图像分配像素级标签以区分关键的面部区域,例如眼睛,鼻子,头发和耳朵。不同面部区域的识别对于各种应用至关重要,包括面部交换(Xu等人,2022),面部编辑(Lee等人,2020 a),面部生成(Zhang,Rao和Agrawala 2023),面部完成(Li等人,2017)和面部化妆(Wan等人,2022)。长尾类是那些在数据集中不经常出现的类。现有的人脸解析数据集(Lee et al. 2020 a)由这些长尾类组成,这些长尾类大多是眼镜、项链、帽子和耳环等配饰,因为并非所有的人脸都具有这些物品。我们不能期望在当前甚至未来的面部解析数据集中,所有类别都有相同的表示,因为某些面部属性,如头发,鼻子和眼睛,自然比耳环和项链等配饰更常见。此外,很难收集不太频繁出现的类的样本。此外,用于人脸分割的详细注释,特别是对于不太常见或较小的人脸特征,是劳动密集型和昂贵的。

        自从语义分割中的深度学习出现以来(Long、Shelhamer和Darrell 2015),许多研究都集中在解决人脸分割问题上。几项工作(Guo et al. 2018; Zhou,Hu,and Zhang 2015; Lin et al. 2021)利用深度卷积神经网络的学习潜力来实现有前途的人脸分割性能。AGRNet(Te et al. 2021)介绍了一种自适应图表示方法,该方法通过将每个组件表示为顶点并将每个顶点关联起来,同时还将图像边缘作为优化解析结果的前提,来学习和推理面部组件。类似地,EAGRNet(Te et al. 2020)通过对非局部区域进行推理来扩展这种方法,以捕获不同面部组件之间的全局依赖性。最近,FaRL(Zheng et al. 2022 b)探索了在大型图像-文本人脸数据集上进行预训练,以提高下游任务的性能,证明其预训练的权重优于基于ImageNet的权重(Deng et al. 2009)。DML-CSR(Zheng et al. 2022 a)利用多任务模型进行人脸解析、边缘检测和类别边缘检测,并结合动态双图卷积网络来解决空间不一致性和噪声标签的循环自我调节。最近的FP-LIIF(Sarkar et al. 2023)利用了人脸的结构一致性,使用了一个轻量级的局部隐式函数网络,具有简单的卷积编码器-像素解码器架构,以其小参数大小和高FPS而闻名,使其成为低计算设备的理想选择。尽管取得了这些进步,但大多数先前的工作都集中在特定的挑战上,例如改善面部组件之间的相关性,增强头发分割,处理噪声标签以及优化推理速度。然而,他们经常忽略长尾类性能的关键问题,导致长尾类的结果不理想(参见图1)。

图1:建议的SegFace利用了一个轻量级的Transformer解码器,具有可学习的类特定令牌。每个类与令牌的关联使得每个类能够独立建模,这提高了长尾类的分割性能,而长尾类在现有方法中通常表现不佳。蓝线表示从CelebAMask-HQ训练集中随机选择的图像中存在类的概率。SegFace显著提升了长尾类的分割性能(+7.9,+21.2),从而在人脸解析性能方面建立了新的最先进水平。

        为了克服这个问题,我们提出了SegFace,这是一种系统的方法,可以提高长尾类的分割性能。这些类别在数据集中通常代表性不足,通常包括耳环和项链等配饰,而头部类别更常见,包括面部和头发等区域。在面部图像中,像眼睛、嘴巴和配饰(长尾类)这样的区域自然小于整体面部和头发区域(头部类)。仅使用模型的最终单尺度特征进行面部分割可能会导致细节丢失,因为面部特征出现在不同的尺度上。我们的方法利用Swin Transformer主干来提取多个尺度的特征,有助于减轻不同人脸区域之间的尺度差异。多尺度特征提取可以有效地捕捉细节和更大的结构,帮助模型捕捉面部的全局背景。我们使用MLP融合多尺度特征以获得融合特征,然后将其输入到SegFace解码器。轻量级的Transformer解码器利用可学习的类特定标记,每个标记与特定的类相关联。我们采用融合的功能和可学习的令牌之间的交叉注意,使每个令牌提取类特定的信息融合的功能。这种设计允许令牌专门关注其相应的类,促进所有类的独立建模,并缓解训练期间主导头部类掩盖长尾类的问题。

我们的工作的主要贡献如下:

·我们引入了一个轻量级的Transformer解码器,具有可学习的类特定令牌,确保每个令牌专用于特定的类,从而实现类的独立建模。该设计有效地解决了现有方法中普遍存在的长尾类分割性能差的挑战。

·我们的多尺度特征提取和MLP融合策略,结合利用可学习的类特定令牌的Transformer解码器,减轻了训练期间头类的主导地位,并增强了长尾类的特征表示。

·SegFace在LaPa数据集(平均F1得分为93.03)和CelebAMask-HQ数据集(平均F1得分为88.96)上建立了最先进的性能。此外,我们的模型可以通过简单地交换与MobileNetV 3骨干的骨干快速推理。移动的版本在CelebAMask-HQ数据集上的平均F1得分为87.91,FPS为95.96。

二、相关工作

2.1面部解析

        早期的人脸解析方法采用了诸如范例(Smith et al. 2013),概率索引图(Scheffler and Odobez 2011),Gabor滤波器(Hernanal-Matamoros et al. 2015)和低秩分解(Guo and Qi 2015)等技术。自从深度学习兴起以来,已经提出了许多基于深度卷积网络的方法用于人脸分割(Warrell和Prince 2009; Khan,Mauro和Leonardi 2015; Liang et al. 2015; Lin et al. 2019; Liu et al. 2017)。最近,AGRNet(Te et al. 2021)和EAGRNet(Te et al. 2020)提出了基于图形表示的方法,这些方法将不同的面部组件关联起来,并利用边缘信息进行解析。DML-CSR(Zheng et al. 2022 a)探索了多任务学习,并引入了动态双图卷积网络来解决空间不一致性和循环自我调节问题,以解决噪声标签的存在。基于局部的方法与我们的工作最相似,旨在通过为不同的面部区域训练单独的模型来单独预测每个面部部分。(Luo,Wang和Tang 2012)利用分层方法分别解析每个组件,而(Zhou,Hu和Zhang 2015)建议使用多个CNN,这些CNN以不同的尺度获取输入,通过有效整合本地和上下文信息的互连层融合它们。然而,现有的基于本地的方法未能受益于共享骨干网和联合优化,导致次优性能。SegFace通过使用可学习的类特定令牌独立地建模所有类来解决这个问题,同时仍然受益于从共享骨干中提取的多尺度融合特征。

2.2Transformers

        基于变换器的模型,如ViT(Dosovitskiy et al. 2020)和DETR(Carion et al. 2020),通过利用注意力机制来捕获图像中的长期依赖性和全局上下文,已经证明了它们在分割任务中的有效性。Segformer(Xie et al. 2021)和SETR(Zheng et al. 2021)是值得注意的工作,它们表明transformer在一般分割任务中的表现优于传统的CNN。然而,变压器在人脸分割中的应用仍然相对欠探索,尽管他们的潜在优势。面部分割提出了独特的挑战,例如需要精确的边界检测和对面部特征细微变化的敏感性,而传统CNN已经有效地解决了这些问题。然而,最近基于transformer的分割网络,如Mask2Former(Cheng,Schwing和Kirillov 2022)和SAM(Kirillov et al. 2023),在捕获全局和细粒度上下文方面显示出有希望的结果,从而实现更准确的分割。这些模型利用了自注意和交叉注意机制,这些机制可以被视为计算所有输入的加权平均值的非局部均值运算。因此,每个类别的输入都是独立计算和平均的,允许模型选择性地关注相关特征,而不受空间限制。这导致了一个更丰富的,上下文化的表示,这可以显着有利于长尾视觉关系的理解。

三、 Proposed Work

图二:所提出的架构,SegFace,通过基于transformer的方法增强长尾类的性能,解决了人脸分割问题。具体而言,多尺度特征首先从图像编码器中提取,然后使用MLP融合模块进行融合以形成人脸令牌。这些标记,沿着类特定标记,经历自我注意、脸对标记和标记对脸交叉注意操作,精炼类和脸标记以增强类特定特征。最后,将放大的面部标记和学习的类标记相结合,以产生每个面部区域的分割图。

        人脸由不同的区域组成,包括鼻子、眼睛、嘴巴以及耳环和项链等配饰。在人脸分割中,这些区域被视为不同的类别,其在规模和出现频率上有所不同。诸如头发和鼻子之类的类自然地更频繁地出现在面部图像中,并且被称为头部类。相比之下,可能不存在于每个人脸图像中的附件被称为长尾类,并且在人脸分割数据集中代表性不足。我们计算数据集中每个类的频率,并确定类出现在CelebAMask-HQ数据集的人脸图像中的概率。如图1所示,头类出现在图像中的概率约为1.0,而长尾类的概率为0.26和0.05。在分析当前的人脸分割方法时,我们观察到它们在长尾类上的表现往往很差。我们的目标是提高长尾类的分割性能,从而提高整体人脸分割性能。

        给定一批人脸图像I ∈ RB×H×W×3,由N个类别组成,其中B是批量大小,而H和W分别表示图像的高度和宽度。SegFace提取多尺度特征G = {Gi| 1 ≤ i ≤ 4}从图像编码器Eθ的中间层。然后,使用MLP融合模块f * 融合这些特征以获得面部标记F。脸部标记连同它们对应的位置编码沿着和可学习的类特定标记T = {Ti| 1 ≤ i ≤ N},由轻量级SegFace解码器g通过自注意和交叉注意操作进行处理,从而产生学习的类标记F T和更新的面部标记F′。更新的面部标记然后使用放大模块hα被放大,并且在标记已经通过MLP之后与学习的类标记WST逐元素相乘,以获得最终分割图S = {Si| 1 ≤ i ≤ N},其中Si ∈ RB×1×H×W,表示每个类别的分割图。整个过程如下:

这里,Si是第i类的输出分割图。我们利用这些分割图来计算损失。我们使用交叉熵损失沿着和骰子损失来训练完整的流水线,如图2所示。最终损失函数可以给出为:

3.1多尺度特征提取

        我们进行多尺度特征提取,以解决不同的人脸区域之间的规模差异的问题。这种方法有效地捕捉了精细的细节和较大的结构,有助于获得面部的全面全局背景,并更好地处理面部组件的不同大小和形状。从图像编码器Eθ中提取多尺度特征。设输入图像的批次为I ∈ RB×H×W×3,其中B是批次大小,H和W是图像的高度和宽度。编码器从多个层中提取特征:

        这里,Gi表示从编码器的第i层提取的特征图,Ci是第i个特征图中的通道的数量,Hi和Wi分别表示第i个特征图的高度和宽度。从编码器中提取的分层特征有助于捕获粗粒度到细粒度的表示,使其适用于分割较小的类,这些类通常是长尾类。

3.2 MLP融合

我们使用MLP融合模块fθ执行多尺度特征聚合,以获得将被传递到SegFace解码器的面部令牌。在该模块中,多尺度特征G = {Gi| 1 ≤ i ≤ 4}由单独的MLP处理,每个MLP对应于不同的尺度,以使通道尺寸对于融合一致。每个MLP将其对应的Gi变换为具有均匀通道数C′的特征映射G′ i,如下:G′ i = MLPi(Gi),其中G′ i ∈ RB×C′×Hi×Wi。然后使用双线性插值对所得到的特征图G′ i进行上采样以匹配第一特征图G′ 1的空间分辨率,表示为G′ i = Interp(G′ i),其中G′ i ∈ RB×C′×H1×W1,H1 ∈ {1,2,3,4}。这些上采样的多尺度特征G "i沿通道维度沿着连接以形成统一的特征图。最后,这个连接的特征映射通过单个卷积层,将信道维度降低到C′。

该融合特征图F表示最终的多尺度面部标记,其作为SegFace解码器的输入给出。

3.3 SegFace解码器

        SegFace解码器旨在独立地对每个类进行建模,同时使用可学习的类特定令牌实现它们之间的交互。设T = Ti ∈ R1×D| 1 ≤ i ≤ N表示这些标记,其中N是类的数量,D是嵌入维数(这里,D = 256)。这些标记附加有位置编码,并对应于各种面部组件,例如背景,面部,眼睛,鼻子和其他特征。解码器包括三个主要组件:1)类-标记自注意,2)类-标记到面部-标记交叉注意,以及3)面部-标记到类-标记交叉注意。通过Transformer解码器中的自注意和交叉注意操作,引导令牌关注特定于类的特征,并促进不同面部区域之间的交互。

类令牌自我注意力:该组件通过允许每个类别令牌Ti关注所有其他类别令牌来促进面部的不同区域之间的交互。对于每个类令牌Ti,操作被定义为:

其中SelfAttention表示多头自注意操作,Q、K和V分别表示查询、键和值。每个类令牌对应于一个特定的类,SelfAttention操作使模型能够学习不同面部区域的结构和位置之间的相关性。

类令牌到面部令牌的交叉自注意:在该组件中,每个类令牌T′ i关注融合的面部令牌F,便于提取类特定信息并实现类的独立建模。更新后的类令牌RNTTi计算如下:

其中CrossAttention表示交叉注意操作。这种机制确保了长尾类在训练过程中不会被掩盖,因为每个类都与一个令牌相关联,该令牌提取专门用于分割长尾类的相关特征。

面令牌到类令牌交叉注意:在这个组件中,融合的面部标记会返回到学习的类标记,用类特定信息来细化面部表示。精细化的面部标记F '计算如下:

该组件通过调整特征提取和融合模块的训练来指导它们,以确保提取的特征富含特定于类的信息。

3.4 Output Head

输出头的作用是从学习的类特定标记和更新的面部标记生成最终的分割图。使用包括转置卷积操作的小网络hα来放大面部令牌F′。放大增加了面部标记的分辨率以匹配原始图像大小。形式上,这可以定义为U = hα(F′),其中U ∈ RB×C′×H×W是放大后的人脸标记嵌入,C′是放大后的降低的嵌入维数。最后,学习到的类特定令牌是|1 ≤ i ≤ N}通过MLP,然后与放大的面部标记逐元素相乘,以产生最终的分割图:

其中,⊙表示逐元素相乘,Si ∈ RB×1×H×W表示第i个类的分割图。最后的输出是一组分割图S = {Si| 1 ≤ i ≤ N},其中每个Si对应于特定的面部分量,有效地将输入面部图像分割成其相应的区域。

四、实验

我们通过改变主干(Swin,Swin V2,ResNet 101,MobileNetV 3,EfficientNet)和输入分辨率(64,96,128,192,224,256,448,512)来训练SegFace。这些模型使用AdamW优化器优化了300个epoch,初始学习率为1 e −4,权重衰减为1 e −5。我们采用了gamma值为0.1的步长LR调度器,这将学习速率在epoch 80和200处降低了0.1倍。在LaPa和CelebAMask-HQ数据集上使用32个批次大小进行训练,在Helen数据集上使用16个批次大小。我们没有对CelebAMask-HQ和Helen数据集进行任何增强。对于LaPa数据集,我们应用了随机旋转[-30,30],随机缩放[0.5,3]和随机平移[-20px,20 px],沿着RoI tanh扭曲(Lin et al. 2019),以确保网络专注于面部区域。对于骰子损失和交叉熵损失,λ1和λ2值分别设定为0.5。我们的方法使用类的F1得分,平均F1得分和平均IoU与其他基线进行了评估,所有指标都排除了背景类。

图3:定性比较突出了我们的方法SegFace与DML-CSR相比的上级性能。在(a)中,SegFace有效地分割了耳环和项链等长尾类以及头发和脖子等头部类。在(B)中,它在涉及多个面部、类似人类的特征、光线不足和遮挡的具有挑战性的场景中也表现出色,其中DML-CSR很难做到。

定性结果:我们在图3中说明了我们提出的方法与其他基线的定性比较。从图3(a)[列1,2,3]中,我们验证了SegFace能够分割长尾类,如耳环和项链,与现有的最先进的方法DML-CSR相比要好得多。这证明了所提出的Transformer解码器与可学习的特定于任务的查询的有效性。它通过将每个标记与特定的类相关联,实现了对所有类的独立建模。在这种设计中,令牌可以专门关注该类,并学习利用融合的特征进行分割。此外,从图3(a)[第4,5列]中,我们观察到所提出的方法在头发和颈部等头部类别上也表现得更好。如图3(B)[列1,2]所示,LaPa数据集上的结果表明,在附近存在多个人脸或类似人类的特征的情况下,DML-CSR难以进行人脸分割。我们通过结合RoI Tanh Warping(Lin et al. 2019)来缓解这个问题,以确保模型在执行分割时专注于面部区域。从图3(B)[第3、4列]可以看出,DML-CSR在具有挑战性的光照条件下表现不佳,而在图3(B)[第5列]中,它与遮挡作斗争。SegFace的性能优于DML-CSR,即使在这些复杂的场景中也能够准确地分割面部区域。

图4:(a)特定于类的标记分割了它们对应的类,展示了每个类的独立建模。(b)噪声地面实况与SegFace预测的比较


http://www.ppmy.cn/server/171649.html

相关文章

Java集合框架设计模式面试题

Java集合框架设计模式面试题 迭代器模式 Q1: Java集合框架中的迭代器模式是如何实现的&#xff1f; public class IteratorPatternDemo {// 1. 基本迭代器实现public class BasicIteratorExample {public void demonstrateIterator() {List<String> list new ArrayLi…

【MySQL】CAST()在MySQL中的用法以及其他常用的数据类型转换函数

1. cast() CAST() 在 MySQL 中用于将一个表达式的类型转换为另一个类型。这在处理不同类型的数据时非常有用&#xff0c;比如将字符串转换为数字&#xff0c;或者将浮点数转换为整数等。 1.1 CAST() 函数的基本语法 CAST() 函数的基本语法如下&#xff1a; CAST(expression…

vue3.2 + vxe-table4.x 实现多层级结构的 合并、 展开、收起 功能

<template><div style"padding: 20px"><vxe-table border :data"list" :height"800" :span-method"rowspanMethod"><vxe-column title"一级类目" field"category1"><template #defaul…

2.部署kafka:9092

官方文档&#xff1a;http://kafka.apache.org/documentation.html (虽然kafka中集成了zookeeper,但还是建议使用独立的zk集群) Kafka3台集群搭建环境&#xff1a; 操作系统: centos7 防火墙&#xff1a;全关 3台zookeeper集群内的机器&#xff0c;1台logstash 软件版本: …

Android 8.0 (API 26) 对广播机制做了哪些变化

大部分隐式广播无法通过静态注册接收&#xff0c;除了以下白名单广播&#xff1a; ACTION_BOOT_COMPLETED ACTION_TIMEZONE_CHANGED ACTION_LOCALE_CHANGED ACTION_MY_PACKAGE_REPLACED ACTION_PACKAGE_ADDED ACTION_PACKAGE_REMOVED 需要以动态注册方案替换&#xff1a; cl…

【SpringBoot3】Spring Boot 3.0 集成 Mybatis Plus

文章目录 一、什么是 Mybatis Plus 特性 二、Spring Boot 3.0 集成 Mybatis Plus三、Mybatis Plus 查询示例 1、普通查询2、分页查询 参考 一、什么是 Mybatis Plus MyBatis-Plus&#xff08;简称 MP&#xff09;是一个 MyBatis 的增强工具&#xff0c;在 MyBatis 的基础上只…

docker通用技术介绍

docker通用技术介绍 1.docker介绍 1.1 基本概念 docker是一个开源的容器化平台&#xff0c;用于快速构建、打包、部署和运行应用程序。它通过容器化技术将应用及其依赖环境&#xff08;如代码、库、系统工具等&#xff09;打包成一个标准化、轻量级的独立单元&#xff0c;实…

使用vscode导出Markdown的PDF无法显示数学公式的问题

我的硬件环境是M2的MacBook air&#xff0c;在vscode中使用了Markdown PDF来导出md文件对应的PDF。但不管导出html还是PDF文件&#xff0c;数学公式都是显示的源代码。 我看了许多教程&#xff0c;给的是这个方法&#xff1a;在md文件对应的html文件中加上以下代码&#xff1a…