CDGNet: Class Distribution Guided Network for Human Parsing 阅读笔记

CDGNet:人体解析的类分布引导网络

CVPR2022
论文链接
代码链接

摘要: 人体解析的目的是将图像中的人体划分为多个组成部分,该任务给人体图像的每个像素标记类别。由于人体的分层结构,因此图像的每个身体部位具有唯一的位置分布特征。 比如人的头不太可能在脚下面,人的手臂可能更靠近躯干。受此启发,我们通过将原始的人体解析标签accumulate 为水平和垂直方向来生成 instance class distributions 作为监督信号。使用水平和垂直类分布标签,引导网络利用每个类的固有位置分布 我们 combine 这两个导向特征来形成一张空间引导图,然后通过 multiplication 和 concatenation 将其叠加到 baseline 上,以精确区分人体部位。我们在三个应用广泛的数据集(LIP、ATR、CIHP)上进行了实验,以证明我们方法的有效性和优越性。


1. Introduction

人体解析包括将人体分割成组成部分,如头部、身体部位和衣服,它属于场景解析领域:对给定图像进行逐像素分类。服装的复杂风格纹理、可变形的人体姿态以及不同语义部位的尺度多样性使得人体解析极具挑战。
自全卷积网络(FCN)出现以来,各种研究已从不同的角度开发提高该密集预测任务性能的方案。先前使用空间和语义上下文的一些方法已在场景解析中取得了不错的成果,但具有独特特点的人体解析比传统的像素分割任务更具挑战性,具体而言,人体由对称结构化的部位组成:左臂和右臂,左脚和右脚的鞋子,这些部位外观以及垂直位置相似,但必须分为不同类别。 在这种情况下,我们自然可以利用人体左右部位间的水平位置差异
本文试图基于 分治策略 解决人体解析问题,将2D空间中复杂的人体结构信息简化为具有相应类别的水平和垂直1D位置信息。 基于此,我们提出了一种新的类分布引导网络(CDGNet),它由水平和垂直方向表示的人体类别位置知识来教授。

如图1 top所示,先通过 accumulate 原始标签中每个类的 horizontal-wise 和 vertical-wise binarized map ,将水平和垂直类分布构建为新的监督信号。如图1 bottom所示,在水平和垂直方向 squeeze baseline 特征,然后使用相应的类分布标签对其进行教学。例如,人脸候选区域由图1右下角的人脸类别分布成功表示。注意,由于我们简化了复杂的人体解析问题,因此我们可以使用所有的类,而无需选择几个特定的类来学习模型。最后,为了实现精确的人体配对结果,我们合并这些引导特征,然后将它们叠加到 backbone 特征上。

在这里插入图片描述

图1. 类分布指南。top:从原始标签构建新的水平和垂直类分布标签,即在水平和垂直方向上使用1D位置标签来简化2D空间人体解析问题。(Bottom-left)用水平和垂直类分布标签作为人体部位的 positional guidance signal 直接教导 backbone。(Bottom-right)例如,如可视化热图示例中,面部的水平和垂直面位置被正确估计。

2. Related Works

3. Class Distribution Approach

我们的方法由基于注意力的方法如SENet、CBAM、HANet催化,SENet和CBAM捕获整个图像的全局上下文,而 HANet只考虑 height-driven attention map ,因为它专注于城市场景图像。
本文不使用注意力方法,而是将原始人体解析标签扩展到与类和一个方向位置相关的另一个监督信号,这些生成的信号在引导网络有效定位人体部位方面起着关键作用。 注意,注意力机制没有使用监督信号来增强特征表示,因为人体具有分层结构,这意味着它具有非常严格的空间分布特征,人体不同部位在垂直和水平维度上具有不同的分布 本文提出了一种类分布引导网络,它在类分布loss的监督下,在垂直和水平维度上预测类分布,然后充分利用人体图像的预测分布特征来增强人体建模的特征表示。整个pipeline如图2所示。

在这里插入图片描述

图2: network overview . FF: feature fusing. PSP: pyramid spatial pooling. CC: concatenation and convolution of feature map. CDG: our class distribution guidance module.

3.1. Horizontal and Vertical Class Distribution

在人体解析中,每像素人体部位标签的图像被作训练数据集。根据标签,分别计算每个图像每个类在水平和垂直方向上的位置分布,即水平和垂直类分布类别分布引导网络学习每个类别的分布上下文,这迫使网络在分布 loss 的约束下考虑不同类别的空间分布。 给一张图片 I 及其标签 G,将每个类的 integer label encode 为 one-hot encoding,生成一个 H × W × N 大小的矩阵:M,H和W是输入图像的高和宽,N是类别数。如图1 top 所示,在每个通道中,沿水平和垂直方向计数“1”的数量,生成垂直和水平类分布,因此,大小为 W×N 的 G D h G_{D_h} GDh和大小为 H×N 的 G D v G_{D_v} GDv 这两个分布可以通过以下方程获得:
在这里插入图片描述


3.2. Class Distribution Guided Network

CDGNet生成每个类分布,揭示类实例存在的位置和程度,并正确地引导人体解析的特征表示。图3所示为 CDGNet 的结构,输入一个大小为 W ×H×C 的特征 X i X_i Xi分别在水平和垂直方向 squeeze 输入特征,以提取方向位置特征, 因此,在正交方向上使用平均池化:水平特征 Z h Z_h Zh 的垂直平均池化和垂直特征 Z v Z_v Zv 的水平平均池化,平均池化后,利用一个1D卷积(kernel size 为3)+ BN层将通道数降至 C/2。 由于类的数量通常小于通道大小,因此有必要将通道大小减少一半作为缓冲区。

在这里插入图片描述

图3: CDGNet的结构。Xi:输入特征;Zh,Zv:水平和垂直特征;Ah,Av:水平和垂直引导特征;Ad:空间引导图;Xo:CDG特征;poolv:用于获取水平分布的垂直平均池;poolh:用于获取垂直分布的水平平均池;conv3×3:kernel为3×3的2D卷积;conv3×,conv7×:kernel 为 3 和 7 的1D卷积;I'up,I‘’up:上采样水平和垂直引导特征;N:人体部位的类别数;H,W,C:输入特征图的高宽和通道;α和β:aggregate 水平和垂直引导特征时的系数。O+: 逐元素求和,O×:矩阵的逐元素乘法,OC: feature concatenation。

使用channel-N,kernel=3的1D卷积生成水平和垂直类分布特征,并使用水平和垂直类分布的新标签通过相应的 loss 来引导这些特征。同时,应用另一个kernel=7且channel=输入特征C的1D卷积来分别生成水平和垂直方向上的每个通道的分布特征。因为在Zh和Zv的每行中存在多个类,因此这两个卷积由sigmoid函数而非softmax函数激活,以生成显著的分布图。生成每个通道的水平或垂直引导特征的这些操作表示为:
在这里插入图片描述
在这里插入图片描述
其中,σ是sigmoid函数,δ是ReLU函数。引导特征Ah包含水平方向通道中每个类别的位置相关特征,而引导特征Av包括通道中的垂直位置类别特征。采用双线性插值: I ′ u p 、 I ′ ′ u p I′_{up}、I′′_{up} IupIup 将引导特征升维至与输入特征Xi维度相同。升维后的引导特征 A h ′ , A v ′ A'_h,A'_v AhAv由系数α和β加权并通过逐元素求和合并。依次采用逐元素乘法和 级联concatenation 将空间引导图Ad映射到输入特征。使用该方案,可以将输入特征Xi转换为CDG特征Xo。最后,采用kernel size=3×3 的卷积将输出特征的大小拟合为与输入特征一致。公式如下:
在这里插入图片描述

3.3. Class Distribution Guided Loss

非刚性的人体在剧烈运动期时,一些部位可能会被遮挡,这干扰了仅使用2D人体标签的人体解析模型的准确性。 若先知道特征图中最有可能确定的不同类别人体部位的位置,问题就可以缓解,因此,我们引入了CDG损失,用于教网络分布式建模每个类别,其中垂直和水平分布图中每一行的像素指示两个方向上的相关类别分布
如图3所示,预测类分布图为:W×N的 Ph 和 H×N的Pv。假设预测的水平类分布图中的每个位置为 { p { i , j } ∈ P h , i ∈ [ 1 , W ] , j ∈ [ 1 , N ] } ,垂直类分布图中为 { p ′ { i , j } ∈ P v , i ∈ [ 1 , N ] , j ∈ [ 1 , H ] } \{p_\{i,j\}∈P_h, i∈ [1,W], j∈ [1, N]\},垂直类分布图中为\{p′_\{i,j\}∈P_v, i∈ [1, N], j∈ [1, H]\} { p{ i,j}Ph,i[1W],j[1,N]},垂直类分布图中为{ p{ i,j}Pv,i[1,N],j[1,H]}。假设水平类分布标签的对应位置为 { g { i , j } ∈ G { D h } , i ∈ [ 1 , W ] , j ∈ [ 1 , N ] } ,垂直类分布标签为: { g ′ { i , j } ∈ G { D v } , i ∈ [ 1 , N ] , j ∈ [ 1 , H ] } \{g_\{i,j\}∈G_\{D_h\}, i∈ [1, W], j∈ [1, N]\},垂直类分布标签为:\{g′_\{i,j\}∈ G_\{D_v\}, i∈ [1, N], j∈ [1, H]\} { g{ i,j}G{ Dh},i[1,W],j[1,N]},垂直类分布标签为:{ g{ i,j}G{ Dv},i[1,N],j[1,H]}。预测和标签间的L2损失可以表示为:

在这里插入图片描述

3.4. Training Objectives

本文使用CE2P作为baseline。CE2P输出包括两个解析结果和一个边缘预测,因此,CE2P的总损失可表示为:
在这里插入图片描述
其中Ledge是使用边缘模块生成的预测边缘图和GT边缘图间的加权交叉熵损失,Lparsing是高分辨率模块的解析图和人体解析label的交叉熵损失,Ledge-parsing 是在结合边缘感知模块的特征图之后,解析标签与最终解析结果间的交叉熵损失。如图2所示,我们的方法附在 pyramid pooling 模块之后,因此,最终损失函数可以使用公式(7)和(8)如下表示:
在这里插入图片描述

3.5. Discussion

最近,基于注意力的语义分割方法取得了不错的改进,但它们需要太多的计算复杂性。这些方法利用矩阵乘法来捕获所有像素和类之间的相关性,假设特征大小为H×W,这些方法的注意力权重矩阵的大小应为(H·W)×(H·W)。随着输入图像的分辨率增加,分割的性能更好,但CDGNet统计计算了每个类在水平和垂直方向上的分布,为了具体考虑每个类的分布特性,所需的分布特征大小仅为H×C+C×W,因此我们的方法的特征大小为:(H+W)×C,远小于注意力矩阵,内存需求就显著减少。如图3所示,当基于分布图 scale 特征时,只需要矩阵元素的乘法和加法,这也比基于注意力方法中使用的矩阵乘法计算效率高。因此,与基于注意力的方法相比,CDGNet更轻量。
本方法大多数计算复杂度发生在1D卷积中,因此它量级轻,通用性高。我们的算法利用了人体每个部位的水平和垂直类分布图,不仅提供了每个部位的统计位置,还提供了分布范围。non-local 模块基于自注意方法捕获每个像素的 long-range contextual appearance information ,我们的网络可以采用 non-local 模块,实现更高的性能。我们推测我们的类空间分布特征和 non-local 特征互补的,能提高人体解析性能。

4. Experiments

5. Conclusion

本文提出一种有效的人体解析方法:CDGNet,利用每个类别的像素标记来生成水平和垂直类别分布,以反映每个人体部位的分布规律。在生成的水平和垂直方向上每个类的类分布的引导下,网络有更多的机会学习与人体结构先验一致的分布。它显著地提高了单人和多人图像中每个像素的标记效果。
局限性:当假设类的数量约20个(例如,LIP、A TR、CIHP)时,CDGNet准确性最佳,但使用较少类(例如,一个或两个类)时,CDGNet可能不会表现出最佳性能。
潜在的负面社会影响:CDGNet是一种通用技术,在人类图像方面有许多潜在应用。我们不知道所有潜在的工作,但可以想象,根据用户的意图,每个应用程序都有其自身的优点和社会影响。

猜你喜欢

转载自blog.csdn.net/unauna9739/article/details/127553027