volica 发布的文章

项目地址

https://github.com/HRNet/Higher-HRNet-Human-Pose-Estimation

总结

用高分辨率网络完成Bottom-Up姿态识别。聚合关节点使用Hourglass中的聚合方法,扩大特征图使用反卷积,热图损失使用MSE,都没有做创新。

简介

本文关注到为了使用热图,对图像尺度进行缩放的过程中,产生了误差导致网络能力下降。因此使用高分辨率网络保持较高尺度的热图输出(原图的1/4尺度),并用反卷积+一些结构输出1/2尺度热图,对于本文名称的Higher,er就在于这个结构,通过concate、追加resblock、双热图均值做输出,将网络AP提升了3.1。网络结构如下图,左侧为Hrnet,右侧为er结构。
HigherHrnet.jpg

结果

HigherHrnet2.jpg

项目地址

https://ilovepose.github.io/coco/

总结

因整数导致回归目标有偏,对网络效果有较大影响。

简介

对于单人姿态估计的监督方法有两种,回归关节点坐标、回归关节点热图。而回归热图因为能更利于网络归回,有效防止过拟合,是目前的主流。因此在这个过程中有两个问题,且都会产生一定的误差:

  1. 训练时需将关节点坐标转换为关节点热图,会导致带小数坐标被转换到临近的整数位置;
  2. 应用时需将关节点热图转换回关节点坐标,这会导致得到的关节点是整数,与真实标注产生误差。同时因为计算量的关系,热图尺寸通常会比输入图片缩小n倍,因此会将误差放大。在本文提出之前,使用的方法是取最高峰位置m和第二高峰位置s(因为网络生成的热图会有多峰如下图),输出位置p=m+0.25(s-m),即将第二高峰位置作为小数补充。本文通过高斯估计,得到中心位置μ,获得了更好的效果。
    Darkpose1.jpg

本文贡献1

通过一种估计方法,从热图中获得更精确的坐标,具体步骤如下:

  1. 对热图使用高斯核平滑(参数与训练时使用的高斯核相同)
  2. 使用本文方法估计坐标位置Darkpose2.jpg

其中D表示在m位置的一阶、二阶导数,m为最高点位置,具体推导过程原文有推。

本文贡献2

相应的修改关节点坐标->热图的生成方式,使得转换方法无偏。

结果

  1. 对于关节点热图转换回关节点坐标,三种方法的结果。
    Darkpose3.jpg
  2. 对于修改训练时关节点坐标转换为关节点热图的方式,与不同的转回方式结合的结果。
    Darkpose4.jpg
  3. 最好效果
    Darkpose5.jpg

引申

在Anchor Free领域同样存在本文所提出的问题,目前主流方法都是用高斯核卷积生成热图,这也会造成一个问题,即热图区域超出目标范围;同时对于本文所提出的无偏问题,也有一篇文章做了相关研究《The Devil is in the Details: Delving into Unbiased Data Processing for Human Pose Estimation》

Abstract

在本文中,我们对人体姿势估计问题感兴趣,重点是学习可靠的高分辨率表示。大多数现有方法分辨率从高到低再从低到高恢复。相反,我们提出的网络在整个过程中都保持高分辨率表示。

我们将高分辨率子网作为网络第一部分,然后将由高到低分辨率的子网逐步添加到网络中,然后将多分辨率子网并行连接。我们进行反复的多尺度融合,以便每一个高到低分辨率的表示都反复从其他并行表示中接收信息,从而获得丰富的高分辨率表示。因此最终预测的关键点热图可能更准确,空间上更精确。我们通过在两个基准数据集(COCO关键点检测数据集和MPII Human Pose数据集)上得到更好的姿态估计结果,证明了我们网络的有效性。此外,我们在PoseTrack数据集上显示了我们的网络在姿势跟踪中的优越性。代码开源

1 Introduction

二维人体姿势估计已成为计算机视觉中的一个基本但仍具有挑战性的问题。目标是定位人体解剖学要点(例如肘部,腕部等)或部位。它具有许多应用,包括人类动作识别,人机交互,动画[6, 26, 32, 38, 46, 55, 40, 45, 17, 69]等。本文对单人姿势估计感兴趣,它是其他相关问题的基础,例如多人姿势估计,视频姿势估计和追踪[48, 70]等。

最近的研究表明,深度卷积神经网络已经实现了最先进的性能。现有的大多数方法都通过网络(通常由串联的高到低分辨率子网组成)传递输入,然后再提高分辨率。例如,沙漏[39]通过对称的从低到高的过程来恢复高分辨率。SimpleBaseline[70]采用一些转置的卷积层来生成高分辨率表示。此外,空洞卷积还用于扩张高至低分辨率网络(例如VGGNet或ResNet)后面的层[26,74]。

我们提出了一种新颖的架构,即高分辨率网络(HRNet),它能够在整个过程中保持高分辨率表示。我们从高分辨率子网开始作为第一阶段,将高到低分辨率子网逐个添加以形成更多阶段,并并行连接多分辨率子网。我们通过在整个过程中一遍又一遍地在并行多分辨率子网中交换信息来进行重复的多尺度融合。我们估算网络输出的高分辨率图像的关键点。网络最终结构如图1所示。
HRNet1.jpg

我们的网络相比目前广泛使用的网络有两大优势。(1)我们的模型并行连接由高到低分辨率的子网络而不是目前方法的序列模式。因此我们的模型能一直保持高分辨率而不用从由低到高的过程中恢复高分辨率,因此预测的热力图可能在空间上更精准。(2)大多数现有方案融合网络的底层和高层表达。相反,我们在同深度和相似级别下低分辨率表示的帮助下,进行重复的多尺度融合来提高高分辨率表示,使得高分辨率表示也富有动作信息。因此我们预测的热力图会更准确。

我们在两个基准数据集上经验性证明了我们方法有更好的关键点检测表现: the COCO keypoint detection dataset 和 the MPII Human Pose dataset。此外,我们展示了我们的模型在PoseTrack数据集上视频姿态跟踪方面的优越性。

2 Related Work

3 Approach

人体姿态估计,又称关键点检测,是指从大小为W×H×3的图像I中检测出K个关键点或身体部位(如肘部、腕部等)的位置。当前SOTA方法把问题转变成了估计K个W'xH'的热力图,每个图Hk表示第k个关键点的位置置信度。

我们遵循广泛采用的方式使用卷积网络预测人体关键点,然后接两个降低分辨率的跨步卷积组成的分支,一个输出与其输入特征图具有相同分辨率的特征图,一个估计热图的回归器,在该热图中选择并转换了关键点位置 达到完整的分辨率。 我们专注于主体的设计,并介绍我们的高分辨率网络(HRNet)。

Sequential multi-resolution subnetworks 串行多分辨率子网络

现有的姿态估计网络是通过将高分辨率的子网络串联到低分辨率的子网络而建立的,每个子网络组成一个阶段,由一系列卷积组成,并且相邻子网络之间存在一个向下采样层将分辨率减半.
Nsr 表示第s阶段的子网络,r是分辨率索引
N11 → N22 → N33 → N44

Parallel multi-resolution subnetworks 并行多分辨率子网络

我们从高分辨率子网开始作为第一步,逐步将高到低分辨率子网逐个添加,形成新的阶段,然后将多分辨率子网并行连接。结果,下一级并行子网的分辨率包括前一级的分辨率和一个较低的分辨率。如下图(2)

Repeated multi-scale fusion 反复多尺度融合

我们介绍了并行子网的交换单元(exchange units),以便每个子网络重复地从其他并行子网接收信息。这是交换方案结构的示例。我们将第三阶段分为几个(例如3个)交换块,每个块由3个并行卷积单元组成,跨并行单元的交换单元如下图(3)所示。r表示分辨率序号,b表示第b个块,s表示第s阶段,ξ是交换单元。
henet2.jpg
我们在图3中说明了交换单元,并在下面介绍了该公式。为了方便讨论,我们将下标s和上标b删除。ξ的输入是S个响应映射{X1...Xs},输出是s个响应映射{Y1...Ys},若跨尺度则输出是s+1个映射。它们的分辨率是相同的。每个Y是响应映射X的聚集,Yk = ∑a(Xi,k)。

函数a(Xi,k)由从i到k的分辨率上采样或下采样Xi组成。下采样使用3x3卷积核实现,例如使用一个步长为2的3x3卷积核进行2x下采样,使用两个连续的步长为2的3x3卷积核进行4x下采样。对于上采样,我们使用简单近邻采样,后接一个1x1卷积核对齐通道数。若分辨率相同,则为恒等连接。

Heatmap estimation

我们仅根据最后一个交换单元输出的高分辨率表示来回归热图,实验效果标明效果很好。定义为均方误差的损失函数用于比较预测的热图和真值热图。热图采用2D高斯在每个关键点的真值位置上以1个像素为中心的标准偏差来生成。

Network instantiation

我们通过遵循ResNet的设计规则实例化网络以进行关键点热图估计,以将深度分布到每个阶段,并将通道数分布到每个分辨率。

HRNet主体包含四个带有四个并行子网的阶段,其分辨率逐渐降低到一半,因此宽度(通道数)增加到两倍。 第一级包含4个残差单元,其中每个单元与ResNet-50相同,由宽度为64的瓶颈形成,然后是一个3×3卷积,将特征图的宽度减小为C。 第三,第四阶段分别包含1、4、3个交换块。 一个交换块包含4个残差单位,其中每个单位在每个分辨率中包含两个3×3卷积,并且在分辨率之间包含一个交换单位。 总之,总共有8个交换单元,即进行了8次多尺度融合。

在我们的实验中,我们研究了一个小网和一个大网:HRNet-W32和HRNet-W48,其中32和48分别代表了最后三个阶段中的高分辨率子网的通道数。其他三个并行子网的宽度为HRNet-W32的64、128、256和HRNet-W48的96、192、384。

配合OpenPose、AlphaPose等网络先提取2D骨骼点,再使用RepNet估计3D骨骼点,并进行姿态估计,目前SOTA。

Abstract

本文解决了从单张图像进行3D人体姿势估计的问题。在很长一段时间内,通过最小化重投影误差来对人体骨骼进行参数化及拟合观察,如今研究人员直接使用神经网络从观测中推断出3D姿态。但是,这些方法大多数都忽略了重投影约束需要最小化且其对过拟合敏感的事实。我们通过忽略2D到3D对应来解决过拟合问题。这有效地避免了简单地存储训练数据,并允许进行弱监督训练。所提出的重新投影网络(RepNet)的一部分使用对抗训练方法来学习从2D姿势分布到3D姿势分布的映射。网络的另一部分估计相机参数,使定义的网络层执行3D姿势向2D的重新投影的估计,从而产生重新投影损失函数。

1 Introduction

从单眼图像估计人的姿势是计算机视觉中非常活跃的研究领域,具有许多应用,例如电影、医学、监视或人机交互。最近的研究能够从单眼图像中以高质量推断3D人体姿势[27、8、21、23、28、32、24、20、19、31]。 但是,最近的大多数方法都使用经过严格训练的神经网络,从输入到输出数据都经过严格分配,例如 [27、8、21、23、28、32、24、19]。这会在相似数据上产生令人惊讶的令人印象深刻的结果,但是一般在推广到未知动作和不同摄像机位置时是有问题的。本文提出了一种使用经过弱监督的对抗学习方法训练的神经网络来克服此问题的方法。我们通过训练鉴别器网络(在生成对抗网络GAN[9]中广泛使用)以学习3D人的姿势分布,来放松训练数据中每个图像都具有特定3D姿势的假设。第二个神经网络从判别器网络学习从检测到的2D关键点的分布(由[25]获得)到有效3D人体姿势的3D关键点的分布的映射。从生成对抗网络的角度来看,这可以看作是生成器网络。为了迫使生成器网络生成与2D观测值匹配的3D姿态,我们建议添加第三个神经网络,该网络根据输入数据预测相机参数。推断的摄像机参数用于将估计的3D姿势重新投影回2D,从而使该框架的名称为:Reprojection Network(RepNet),如图2。另外,为了进一步加强运动学约束,我们建议采用一种易于计算和实现的描述符,以描述受Wandt等人的运动学链空间KCS(kinematic chain space)启发的关键点长度和角度[41]。
RepNet1.jpg

与其他工作相比,我们提出的方法在强力解决了特定数据集的过度拟合。我们的实验进一步证实了这一说法,该网络甚至可以推断出不在训练集中的人体姿势和摄像头位置。即使存在强烈的变形或异常的相机姿势,我们的网络也能取得良好的效果,如图1的攀岩图像所示。这导致我们得出的结论是,鉴别器网络并不是从训练集中记住所有姿势,而是学习到了人类能做出的姿势的有意义表达。正如我们将要展示的那样,将KCS包含在鉴别器网络中,对鉴别器的质量起着重要作用。

我们在三个数据集Human3.6M[13]、MPI-INF-3DHP[21]和Leeds Sports Pose[16]上评估我们的方法。在所有数据集上,我们的方法均达到了最好的结果,甚至优于大多数监督方法。此外,我们提出的网络可以在标准硬件上在0.1毫秒内预测人体姿势,当与最新的2D关节检测器(例如OpenPose[5])结合使用时,可以构建一个实时姿态估计系统。我们将开放源码。总结我们的贡献:

  • 3D人体姿势的对抗训练方法
  • 基于2D重新投影的估计神经网络(RepNet)
  • 没有2D-3D对应镜头数据集和未知摄像机下的弱监督训练
  • 同时进行3D骨骼关键点估计和相机姿势估计
  • 运动链表示网络层,包括有骨骼长度和关节角度信息
  • 一个姿势回归网络,可以很好地推广到未知的人类姿势和相机

2 Related Work

与我们的工作最相关的方法可以大致分为两类。第一组由基于优化的方法组成,其中将3D人体模型变形以使其满足重投影误差。第二组包含尝试直接从图像或检测到的关键点直接估算3D姿势的最新方法。

2.1 Reprojection Error Optimization

早期从单幅图像进行人体姿态估计的工作可追溯到1985年的Lee和Chen [18]。他们使用已知的骨长和二元决策树来重构人体姿态。一些作者[15、11、6]建议在大型姿态数据库中搜索3D姿态,以便最好地解释2D观察结果。为了从这些数据库压缩知识,一种广泛使用的方法是使用主成分分析(PCA)或另一种词典学习方法来学习3D人体姿势的完整字典。通常,对通过主成分分析获得的最佳线性碱基组合进行优化[7、43、49、50]。为了限制优化,提出了一些先验条件,例如关节角度限制[1],物理合理性[46]或人体测量学正则化[30、33、42]。其他作品在视频序列[40、2、41、46]中执行时间相干性,或使用其他传感器[37、39、38]。

2.2 Direct Inference using Neural Networks

最近,许多研究人员致力于使用深度神经网络从图像数据或2D检测直接回归3D姿态。几项工作试图构建一个从图像数据中提取3D姿势的端到端系统[27、8、21、23、28、32、19、17、26、29、36、45]。Moreno Noguer [24]学习了从2D到3D距离矩阵的映射。Martinez[20]在2D关节检测上训练了一个深度神经网络,以直接推断3D人体姿势。他们训练了他们的网络,以在基准数据集Human3.6M [13]上实现出色的性能。但是,与Human3.6M训练集中的姿势相比,该网络的参数要多得多,这可能表明该训练集的简单记忆。尽管我们提出的姿势估计网络具有相似数量的参数,但我们的实验表明,我们的对抗训练方法可以避免过度拟合。Hossain等[31]通过使用递归神经网络扩展了[20]的方法,但几乎没有考虑弱监督的特殊情况。Kanazawa泽等[17]提出了一种方法,也可以在没有2D到3D监督的情况下进行训练。与我们的方法相反,他们使用完整的图像信息来训练端到端模型,以重建人体的体积网格。Yang等[45]训练一个多源鉴别器网络来建立一个端到端模型。

3 Method

所提出方法背后的基本思想是,通过学习从输入分布(2D姿势)到输出分布(3D姿势)的映射,使3D姿势从2D观测值回归出来。

在标准的生成对抗网络(GAN)训练中[9],生成器网络学习从输入分布到输出分布的映射,该映射由另一个称为鉴别器网络的神经网络评估。鉴别器经过训练,可以区分数据库中的真实样本和生成器网络中创建的样本。在训练生成器创建被鉴别器预测为真的样本时,鉴别器参数是固定的。生成器和鉴别器是经过交替训练的,因此彼此竞争,直到它们都收敛到最小。

3.1 Pose and Camera Estimation

姿势和摄像机估计网络分为两个分支,一个用于姿势回归,另一个用于估计摄像机参数。接下来,X∈R{3×n}表示3D人体姿势,其中每一列都包含人体节点的xyz坐标。在神经网络中,此矩阵被写为3n维向量。相应地,如果要重建n个节点,则姿势和相机估计网络的输入为2n维矢量,包含图像中检测到节点的坐标。

姿势估计部分由两个连续的残差模块组成,其中每个块具有两个有1000个紧密连接神经元的隐藏层。对于激活功能,我们使用leaky ReLU[12],因其在我们的实验中产生了最好的结果。最后一层输出一个3n维向量,该向量包含3D姿势,并且可以reshape为X。摄像机估计分支与姿态估计分值具有相似的结构,输出是包含摄像机参数的6维向量。在这里,我们使用只需六个变量定义的弱透视相机模型。取得相机矩阵将输出矢量整形为K∈R{2×3}。

3.2 Reprojection Layer

重投影层采用3D生成器网络的输出姿态X和摄像机估计网络的摄像机K。 然后可以通过以下方式将投影重新投影到2D坐标空间中:W' = KX。W'在下文中称为2D重投影,这允许定义重投影损失函数:&- L_{rep}(X, K) = ||W-KX||_F -&,其中W是输入的2D姿态观察矩阵,其结构与W'相同。||*||F表示Frobenius范数。请注意,重投影层是仅执行重投影且没有任何可训练的参数的单层。

为了处理遮挡,可以将未检测到的节点所对应在W和X中的列设置为零。这意味着它们将不会对损失函数的值产生影响。根据critic network,姿势生成器网络将使丢失的关节产生幻觉。实际上,产生二维节点检测结果的堆叠式沙漏网络[25]不能预测脊柱关节。因此,在所有实验中,我们将W和X中的相应列设置为零。

3.3. Critic Network
图2中的完整网络与critic network交替训练。critic network最后一层的损失是Wasserstein损失函数[3]。critic network的明显选择是结构类似于姿势回归网络的全连接网络。但是,这样的网络难以检测人体姿势的属性,例如运动链、对称性和关节角度限制。因此,我们遵循Wandt等人[41]的想法,并将他们的运动链空间(KCS)添加到我们的模型中。我们开发了一个KCS层,其中包含一个连续的全连接网络,该网络与全连接路径并行添加。critic network中的这两个路径在输出层之前合并,如图3。
RepNet2.jpg

KCS矩阵表示包含关节角度和骨骼长度的人体姿势,并且只能通过两个矩阵乘法来计算。定义内容见上图。因为Ψ中的每个条目都是两个骨骼向量的内积,所以KCS矩阵在其对数上具有骨骼长度,而在其他项上具有(比例)角度表示。与欧几里得距离矩阵[24]相比,KCS矩阵很容易通过两个矩阵乘法计算,这很适合作为附加层。通过给鉴别器网络一个附加的特征矩阵,它不需要自己学习关节长度计算和角度约束。实际上,在我们的实验中,如果没有KCS矩阵,就不可能在身体的左侧和右侧之间实现可接受的对称性。第4.1节显示了添加额外的KCS层如何使3D重建受益。在我们的实验中,在KCS层之后添加卷积层或完全连接的层之间没有区别。接下来,我们将在KCS层之后使用两个完全连接的层,每个层包含100个神经元。结合并行的全连接网络,即图3中的critic结构。

3.4 Camera

由于图2中的相机估算子网络可以产生任何6维向量,因此我们需要强制网络产生描述弱透视相机的矩阵。如果3D姿势和2D姿势以其根关节为中心,则根据等式1相机矩阵K将X投影到W'。弱透视投影矩阵K具有性质 &- KK^{T} = S^{2}I_2 -& 其中s是投影的比例,I2是2×2不变矩阵。由于标度s是未知的,我们推导了一种计算有效的方法来计算s。标度s等于K的最大奇异值(或ℓ2-范数,这两个奇异值相等)。由于&- KK^{T} -&的轨迹是奇异值平方的总和,有&- s = sqrt{smash[b]{trace(KK^T)/2}} -&,损失函数可以被定义为 &- L_{cam} = ||frac{2}{trace(KK^T)}KK^T-I_2||_F -&,其中,||*||F表示Frobenius范数。注意,仅需一次矩阵乘法即可计算二次标度。

3.5 Data Preprocessing

摄像机估计网络推断弱透视摄像机的参数。这意味着相机矩阵包含旋转分量和缩放分量。为了避免相机和3D姿势旋转之间的歧义,应删除3D姿势中的所有旋转和缩放分量。这是通过将每个3D姿势与模板姿势对齐来完成的。为此,我们通过procrustes对齐计算相应肩部和髋部节点的理想旋转度和比例。生成的变换将应用于所有关节。

根据图像中人的大小,二维节点检测可以具有任意比例。为了去除比例分量,我们将每个2D姿态矢量除以其标准偏差。请注意,使用这种缩放技术,同一个人可以根据相机和3D姿势而具有不同大小的2D姿势表示。但是,所有可能的2D姿势的值都受到限制。其余的比例变化由相机比例组件补偿。与[20]不同,我们不需要知道训练集的均值和标准差,这样可以轻松地将我们的方法转移到2D姿势的不同领域。

3.6 Training

我们实施了[10]的改进的Wasserstein GAN训练程序。根据我们的经验,与使用二进制交叉熵或类似损失函数的传统Wasserstein GAN[3]和标准GAN训练[9]相比,这种方法可以实现更好更快的收敛。我们使用0.001的初始学习速率,每10个周期以指数衰减。

4 Experiments

在不针对特定训练集时,网络效果能达到当前比较好的水平;在针对特定训练集训练后,网络能达到sota。
2D节点生成器的误差是错误率的主要原因。
RepNet3.jpg

4.6 计算时间

当前的2D骨骼节点检测器在普通机器上能达到100ms/图,我们的网络对每张图额外增加0.05ms,可以说是毫无影响。

5 Conclusion

本文介绍了RepNet:一种用于3D人体姿势估计神经网络的弱监督训练方法,该方法可从单个图像中的2D关节检测推断出3D姿势。我们建议使用额外的相机估计网络和新颖的重投影层,将估计的3D姿态投影回2D。通过利用神经网络研究中的最新技术,例如改进的Wasserstein GAN [10]和运动链空间[41],我们能够开发一种不需要2D到3D对应的弱监督训练程序。这不仅优于以前的弱监督方法,而且避免了网络对有限数量的训练数据的过度拟合。即使与大多数监督方法相比,我们仍在基准数据集Human3.6M上实现了最先进的性能。使用在Human3.6M 上训练的网络从MPI-INF-3DHP数据集的未知数据预测3D姿态,显示出比所有其他方法都有改进。我们还对LSP数据集进行了主观评估,即使在姿势和视角不常见的图像上也能获得良好的重建效果。

这是来自上海交通大学的最新一篇(CVPR2019)姿态估计论文,基于AlphaPose的思路进一步提升了在拥挤状态下的人体姿态识别水平,同时提供了拥挤状态下的姿势数据集。

Abstract

多人姿势估计是许多计算机视觉任务的基础,并且近年来取得了重大进展。然而很少有先前的方法探讨拥挤场景中的姿势估计问题,尽管在许多情况下它仍然具有挑战性和不可避免。与此同时,当前的基准无法对此类情况进行适当的评估。在本文中,我们提出了一种新颖有效的方法来解决人群中的姿势估计问题,并提出了一个新的数据集来更好地评估算法。我们的模型由两个关键部分组成:候选点的单人姿势估计(SPPE)和全局最大节点关联算法。通过使用图形模型对每个联合和全局关联进行多峰预测,我们的方法对于在拥挤场景中不可避免的干扰具有鲁棒性,并且推理效率很高。所提出的方法比CrowdPose数据集的最新方法高5.2 mAP,而MSCOCO数据集的结果证明了该方法的泛化能力。源代码和数据集可在 https://github.com/Jeff-sjtu/CrowdPose 获得。

Introduction

估计图像中的多人姿势在计算机视觉领域起着重要作用。它在动作理解、人机交互识别、human parsing等方面的广泛前景已经引起研究人员极大关注和关注。也有一些工作关注三维人体姿态估计。当前,大多数二维方法可大致分为两类:i)自上而下的方法,该方法首先检测每个人,然后执行单人姿势估计;ii)自下而上的方法,先检测每个关键点,然后将其组合为一个完整的人。

为了评估多人姿势估计算法的性能,研究人员建立了一些公共基准库,例如MSCOCO,MPII和AI Challenger。在这些基准中,图像通常是从日常生活中收集的,那里拥挤的场景出现的频率较低。因此这些基准标记中的大多数图像在人类之间几乎没有相互遮挡。 例如,在MSCOCO数据集(人员子集)中,67.01%的图像没有重叠的人员。当前的方法在这些数据集上获得了令人鼓舞的成功。

但是,尽管当前方法在以前的基准上已经取得了良好的性能,但我们发现在拥挤的情况下它们的性能明显下降。 如图1所示,对于自下而上和自上而下方法的当前最先进方法[40、27、23、26],其性能会随着人群水平的提高而急剧下降(如图3)。很少有旨在解决拥挤场景中姿势估计问题的方法,并且尚未为此目的建立公共基准库。同时,在许多情况下拥挤的场景是不可避免的。
crowdpose.jpg

在本文中,我们提出了一种新颖的方法来解决人群中的姿势估计问题,使用全局视图来解决干扰问题。我们的方法遵循自顶向下框架,该框架首先检测单个人,然后执行单人姿势估计(SPPE)。我们提出了一个节点候选SPPE和一个全局最大节点关联算法。与以前仅预测输入人体区域的目标节点的方法不同,我们的联合候选SPPE输出每个节点的候选位置列表。候选列表包括目标节点和干涉节点。然后我们的关联算法利用这些候选集建立人与人之间的联系图。最后,我们使用全局最大节点关联算法解决了该图模型中的节点关联问题。此外,我们的图优化算法的计算复杂度与常规NMS算法相同。

为了更好地评估拥挤场景中的人体姿态估计算法并促进该领域的发展,我们收集了拥挤人体姿势的数据集。 我们定义了一个拥挤索引来衡量图像的密集水平。我们数据集中的图像在拥挤索引中具有[0,1]均匀分布,这意味着只有在不拥挤和拥挤的场景中都能表现出色的算法才能在我们的数据集中获得高分。

综上所述,本文的主要工作如下:i)提出了一种解决拥挤的姿态估计问题的新方法。ii)我们收集了一个新的拥挤人体姿势数据集,以更好地评估拥挤场景中的算法。我们对提出的方法进行实验。当使用相同的基于ResNet-101的网络骨干网时,我们的方法在数据集上比所有最新技术都高5.2mAP。此外,我们使用模块将SPPE和后处理步骤替换为最新方法,并在MSCOCO数据集上带来了0.8mAP的改进。也就是说,我们的方法可以在不拥挤的场景中正常使用。

Related Work

3 Our Method

我们提出的方法的流程如图2所示。人体检测器获得的人体边界框提议被送入联合候选(JC)单人姿势估计器(SPPE)。 JC SPPE在热力图上找到具有不同响应分数的联合候选者(第3.1节)。然后,我们的联合关联算法将获得这些结果,并建立人-节点连接图(第3.2节)。最后,我们解决了图匹配问题,以全局最大节点关联算法找到最佳的关节关联结果(第3.3节)。
crowdpose2.jpg

3.1 Joint-Candidates SPPE

JC SPPE接收人体建议图像并输出一组热图以指示人体联合位置。尽管人体区域应该表明只有一个人类实例,但在拥挤的场景中,我们不可避免地需要处理来自其他人体实例的大量节点。 以前的工作使用SPPE来抑制干扰节点。但是,SPPE在拥挤的场景中失败了,因为它们的接受域受到输入的人体提议的限制。为了解决这个问题,我们提出有着依据更全局视野设计新损失函数的JC SPPE。

3.1.1 Loss Design

对于第i个人体区域Ri,热力图Pi,其中有两种节点,一种叫target joints 即属于此人体的节点,另一种叫 interference joints 干扰节点,即属于其他人体的节点。
我们在损失模块中采用了热力图,该模块由于其像素级监督和完全卷积结构而在许多领域[29,28]中得到了广泛使用。我们的目标是增强target joints的响应并抑制干扰节点。但是,我们不会直接抑制它们,因为在当前区域的干扰节点可以被视为其他区域的target joints。因此,我们可以在干扰节点中以全局方式估计人体姿势和其他人体提议。因此,为了利用这两种候选节点,我们以不同的强度输出它们。

Heatmap Loss

3.1.2 Discussion

常规的SPPE取决于高质量的人为检测结果。它的任务是根据给定的人工提议来定位和识别目标节点。如果SPPE误将干扰节点用作目标节点,则将是无法恢复的错误。丢失的节点无法在诸如pose-NMS的后处理步骤中恢复。

我们提出的候选节点损失旨在解决此缺陷。此损失函数鼓励JC SPPE网络预测多峰热图,并将所有可能的节点设置为候选。在拥挤的场景中,尽管传统的SPPE很难识别目标关节,但JC SPPE仍然可以预测出候选关节列表并保证高召回率。我们将关联问题留给下一个过程,在那个过程中,我们可以从其他JC SPPE(根据其他人体建议)获得更多全局信息来解决该问题。

3.2 Person-Joint Graph

由于我们的候选节点机制和人体检测器的冗余人体提议,候选节点在数值上比实际联合号大得多。为了减少多余的节点,我们构建了一个人节点图,并应用最大人体节点匹配算法来构造最终的人体姿势。

3.2.1 Joint Node Building (合并同一节点的分身)

由于高度重叠的人体区域往往会预测出相同的实际节点(如图4所示),因此我们首先将这些可以组合的对象归为一组,它们代表与一个节点相同的实际节点。

由于高质量的关节预测,指示同一节点的候选节点始终彼此靠近。因此,我们可以使用以下规则对它们进行聚类:对于第k个节点(身体各部位节点编号为1...k),给定两个位于p1和p2的候选关节,及控制偏差δ,如果p1-p2欧氏距离 ≤ min{u1, u2}δ,我们将它们标记为同一组。其中u1和u2是热力图上两个节点的高斯响应大小,由高斯响应偏差确定。δ是控制第k个关节偏差的参数,我们直接采用MSCOCO关键点数据集中的参数[15]。使用min{u1,u2}而不是恒定阈值的原因是为了确保只有在p1和p2同时落入彼此的控制域(半径分别为u1δ,u2δ)时,我们才将它们组合在一起。一个Node表示一组按上述标准聚集在一起的节点。

现在,通过将一个节点组合为一个Node,我们有了Node集 J={vkj:k∈{1...K},j∈{1...Nk}} ,其中Nk是身体部位k的关节节点数,vkj是身体部位k的第j个节点。J中的节点总数为∑Nk。

3.2.2 Person Node Building

person nodes代表人体检测器检测到的人体区域。我们将person nodes表示为H={hi:∀i∈{1...M}},其中hi是第i个人节点,M是检测到的人体区域的数量。理想情况下,高质量人体区域会紧贴人类实例。但是,在拥挤的场景中,这种条件并不总是令人满意。人体检测器将产生许多多余的建议,包括截断和不紧凑的边界框。 在Sec 3.3中进行全局人关节匹配时,我们将消除这些低质量的人体区域。

3.2.3 Person-Joint Edge

在获得node和person nodes之后,我们将它们连接起来以构建我们的人节点图。对于每个人的节点hi,JC-SPPE将预测节点的多个候选结果。如果这些候选结果之一对node vkj有所贡献,我们将在它们之间建立一个边缘ekij。ekij的权重是该双参关节的反应评分,记为wkij。这样我们可以构造边缘集E={ekij:∀i,j,k}。
人关节图可以写成:G=((H,J), E)

3.3 Globally Optimizing Association

从现在开始,我们估计人群中人体姿势的目标已转变为求解上述人节点图并最大化总边缘权重。我们的目标函数如下图,d表示是否保留边,Eq.5和6约束每个人体区域只能匹配1-K的节点各一个。
crowdpose3.jpg

如方程式10所示,求解人节点图G中的全局分配问题在数学上等效于分别求解其子图Gk。Gk是由人体子集和第k个节点子集组成的二部图。 对于每个子图,应用更新的Kuhn-Munkres算法[1]以获得优化结果。通过分别求每个Gk,我们获得最终结果集R。

给定图匹配结果,如果dkij=1,则vkj的加权中心被分配给第i个人体提案的第k个节点。在此,加权中心表示vkj中的候选节点坐标的线性组合,权重是他们的热力图响应分数。以这种方式,可以构造每个人体区域的姿势。无法匹配任何节点的人员区域将被删除。

Computational Complexity

姿势估计的推理速度在许多应用中至关重要。我们证明了我们的全局节点算法与普通的贪婪NMS算法效率相同。

3.4 Discussion

我们的方法采用基于图的方法,以全局最佳方式将节点与人体区域相关联。人体区域相互竞争节点。通过这种方式,没有主导人体实例的不合格人体区域将不会被分配任何节点,因为由于缺少主导人体实例,它们的节点响应分数都相对较低,将许多糟糕的人体区域拒绝。与我们的方法相比,常规NMS是一种基于贪婪和基于实例的算法,效率较低。尽管[10,17,27]提出了姿势-NMS来利用姿势信息,但是他们的算法是基于实例的,无法解决节点缺失和装配错误的问题。我们的全局优化关联方法可以很好地处理此类情况。

4. CrowdPose Dataset & 5. Experiments

crowdpose4.jpg

深度人脸识别的判别特征学习方法

Center Loss

一、介绍

对于人脸识别任务,深度学习特征需要可分离性和有辨别度。因为在训练阶段无法收集到所有可能的测试样本,CNN预测的样本标签不能总是适用。深度学习特征需要有足够的具有辨别力和概括性,以便在没有预测标签的情况下区分未见过的类别。判别特征可以通过最近邻(NN)或k-最近邻(k-NN)这类不需要预测标签的算法分好类。然而softmax只鼓励特征的可分离性,对人脸识别不够合适。

构造损失函数很重要,因为SGD基于mini-batch优化CNN,所以不能很好的表示深度特征的全局分布。作为替代方法,用对比损失[10,29]和三元损失[27]分别构建图像对和三元图像的损失函数。然而与图像样本相比,二元组或三元组的数量急剧增加。它不可避免地导致收敛缓慢和不稳定。通过仔细选择二元组或三元组,可以部分地缓解该问题。但很麻烦。

我们提出了新的损失函数,叫center loss,来增强深度网络中深度学习特征的辨别力...

二、相关工作

[略]

三、提议

首先我们使用一个简单例子直观展示深度学习特征的分布,受其启发,我们提出了center loss。

3.1 简单例子

使用MNIST数据集,修改LeNets为更深更宽的网络,最后输出层降低为2,这样我们可以直接把特征画到2维平面。更多信息见Table1。
lenets_plus.png
softmax损失函数如下。
lossfunction.png
2维特征结果如下图,因为最后一个全连接层起到线性分类器的作用,不同类别的深度特征通过决策边界区分。从下图可以看出(i)在softmax的监督下,深度特征被区分开 (ii)深度特征没有足够的辨别力,因为它们仍然显示出显着的类内变化。
softmax-distribution.png

3.2 Center Loss

那么在缩小类内间距的同时保持类间距离是关键,因此提出center loss。
loss-function.png

我们还探究了 λ 对分布的影响,如下图。利用适当的 λ ,可以显着增强深度特征的辨别力。此外,特征在不同的 λ 下是有区别的。因此,联合监督有利于深度学习特征的辨别力,这对于人脸识别至关重要。
center-loss-effect.png

3.3 讨论

The necessity of joint supervision. 联合监督的必要性

Compared to contrastive loss and triplet loss.

四、实验

4.1 细节

预处理

MTCNN:进行人脸检测+关键点(两眼、鼻子、嘴角)回归,训练集中找不到人脸的图片丢弃,测试集中找不到人脸的使用标注提供的。
人脸图像:112x96 RGB
归一化方法: -127.5 除128

训练数据[略]

CNNs细节

bc=256 TitanX2块
lr=0.1,0.01,0.001 [16k,24k]
总计28k迭代,14小时。
network.png

测试细节

使用第一个FC层输出作为深度特征,抽取每张图片和其水平镜像的特征并将其连接。特征经过PCA后计算Cosine Distance分数,在识别和验证任务中使用了最近邻和阈值比较。

4.2 参数

parameter.png

五、结论

在本文中,我们提出了一种新的损失函数,称为中心损失。 通过将中心损失与softmax损失相结合以共同监督CNN的学习,可以高度增强深度学习的特征的辨别力以用于鲁棒的面部识别。 对几个大规模面部基准的广泛实验已经令人信服地证明了所提出方法的有效性。

多实例学习中的自适应池为网络视频标注

摘要

网络视频一般为弱标签,即当相关概念出现在视频中时,该视频就被打上没有何时、何地发生说明的标签。这种弱标签给众多网络视频应用带来了巨大困扰。在本文中,我们提出基于多实例学习的有着可学习池化层的新网络视频标注方法。通过将网络视频标注转化为多实例学习(MIL)问题,我们提出一个端到端的深度神经网络解决帧(instance)级别注释是通过卷积神经网络(CNN)从视频(bag of instances)级别给出的标注估计的问题。我们提出可学习的池化函数,以自适应地融合CNN的输出以在视频级别确定标签。我们进一步提出了一种新的损失函数,它包括实例级和包级损失,使惩罚项能够识别网络的内部状态而不仅仅是整体损失,从而使得池化函数学得更快更好。实验结果表明,我们提出的框架不仅能够提高Web视频注释的准确性并在大规模视频数据集FCVID上超越最先进的Web视频注释方法,而且还有助于推断最相关的网络视频中的帧。

一、介绍

现有方法可分为两类,时间感知和基于帧的方法。时间感知方法[14,20,37]利用视频帧之间的时间相关性产生运动信息来识别动作和事件。另一种基于帧的方法聚焦于各个帧中的内容,因为在不使用时间相关性的情况下查看视频的各个帧可以很好地确定许多重要概念,例如物体,场景和许多操作,如吃,坐等。因此,基于帧的方法的提出用来注释视频基于各帧(通常是关键帧)中的概念,以相对较低的计算成本获得有希望的结果[47]。在本文中,我们专注于基于帧的方法来提高标注网络视频的准确性和效率。

二、相关工作

视频标注/分类

1.时间感知方法聚焦于时空关键点(STIP)或基于轨迹的描述符
2.基于帧的方法探索图像的视觉特征
Large-scale video classification with convolutional neural networks. In CVPR, pages 1725–1732, 2014.
(1)扩展CNN到视频分类
(2)从两种分辨率上处理输入,没有降低准确度的同时提高性能
Two-Stream Convolutional Networks for Action Recognition in Videos. In NIPS, pages 568–576, 2014
(1)提出基于two-stream结构的CNN,由空间和时间两个维度的网络组成,空间部分指帧内图像信息,时间部分指帧间的光流运动信息。
(2)验证了即使在较小规模的训练数据集上,在多帧稠密光流上训练的卷积神经网络可以获得非常好的性能。
(3)展示了多任务学习(multiple learning),应用于不同的运动分类数据集,可以同时提升数据集的规模和检测性能。

多实例学习

最近多实例学习在弱监督领域非常流行,例如图像分类和目标检测。

池化功能

在深度网络中,池化有着重要的功能,平均池化、最大池化、随机池化最常见也用的最广。
Learned-norm pooling for deep feedforward and recurrent neural networks. In ECML-PKDD, pages 530–546. Springer, 2014.
提出Learned-Norm Pooling,使用广义均值(也称为Lp范数)来学习深度前馈和递归神经网络中的阶数p。
与现有的池化功能不同,我们提出的可学习池化聚焦于MIL深度网络实例级和包级之间存在本质差距。

三、提出的MIL深度网络

在本节中,我们首先介绍我们提出的MIL深度网络的概述。然后介绍了由包+实例损失函数的可学习池,并展示了它们如何实现我们的MIL深度网络的端到端训练。

3.1 网络概览

Fig. 1展示了用于网络视频标注的MIL网络的概览,它由4个部分组成。第一部分包含一个CNN网络用于独立处理每个输入帧,输出每帧所属标签的预测值。第二部分收集每个视频所有帧的输出并用可学习池化层融合,输出视频级别的预测值,并于视频的实际标签进行比较。同时第三部分使用帧级预测值计算instance-level损失。第四部分最小化bag-level和instance-level的联合损失。
Fig. 1的网络是用来训练的,在预测阶段只需要前两部分。帧级预测让我们可以定位视频中与特定标签最相关的帧的位置。
MIL network structure.png

3.2 可学习池化层

公式

我们将Web视频注释表示为MIL问题的想法基于一个假设,即从个别帧得到的标签(类别)可以标注到视频(包)上。换句话说,只要标签可从视频内的至少一个帧得到,即可将标签与视频相关联,这也是MIL的基本假设。
learnable pooling layer.png

实现

注意下标c代表不同的类别,上标t代表不同的训练阶段。一方面,如果一个类别在许多实例中被发现,r 可以较小,否则 r 应该较大;另一方面,在网络训练过程中池化策略需要调整。在训练早期,网络表达能力差输出近乎随机时, r 较小(例如为1)比较适合,来抑制随即误差。随着训练进行,网络预测值变得可靠时,需要更大的 r 给与更相关的实例更高权重。最终,如果网络完美收敛预测值=标注值时,r=∞(最大池化)。
我们想指出,之前已经有人研究了广义均值作为MIL以及其他深度网络的池化函数。但是,据我们所知,我们是第一个提出动态调整池化参数以适应视频标注的演进网络的人。

3.2 新的 Bag+Instance 损失函数

公式

loss function.png

四、实验

4.1 设置

数据集[略]

训练数据

使用每个视频的乱序子集,子集大小与视频长度有关,我们的实验中每个视频的样本数量从5帧-41帧,间隔从几秒到几分钟。我们让每个mini-batch中的视频帧数相同,同时每个mini-batch中每个视频的所有帧都在其中。因为mini-batch的大小是不超过60的固定尺寸的倍数,所以每个mini-batch中视频的正样本数量不同。对视频帧进行随机镜像和裁剪以防过拟合。数据仅在训练前乱序一次。

训练过程

实现使用Caffe。骨干网络使用VGG19,使用ImageNet的预训练参数;将最后一层全连接修改适配数据集的维度,并使用随机初始化。
lr=10-6,momentum=0.9 decay=0.0005(池化参数=0)
参数 r 初始为1

4.2 表现评估[略]

performance.png

4.3 分析

训练早期 max pooling 表现差, average pooling 表现好因为抑制了随即错误, learnable pooling 训练速度最快
参数 r 无视loss和标签随着训练单调增加,另外用 BIL 时 r 较小,BL 时 r 较大(如下图)
r-preformance.png
如果标签的相关性在视频的不同帧之间变化更大,则相应的r应该更大,以便更多地关注更相关的帧,反之亦然(如下图)。
r-ave.png

五、结论

UCF101上的结果表明,所提出的方法对高动态动作相关视频有一些局限,通常需要时间感知方法才能获得更好的注释。

使用弱监督补充局部信息的自底向上的细粒度图像分类模型

摘要

给定由图像和相应的类别标签组成的训练集,深度卷积神经网络在挖掘用于图像分类的判别部分方面表现出强大的能力。然而使用图像级标签训练的深度卷积神经网络仅倾向于关注最具辨别力的部分,忽视了可提供补充信息的其他部分。
在本文中,我们从不同的角度处理这个问题。我们以弱监督的方式构建互补局部模型,以得到被卷及网络关注的显著部分所抑制的信息。仅给定图像级标签,我们首先通过使用Mask R-CNN和基于CRF的分割执行弱监督对象检测和实例分割来提取粗略对象实例。然后我们在保持尽可能多样化的原则下估计并搜索每个对象实例的最佳局部模型。在最后阶段,我们构建了一个双向长短期记忆(LSTM)网络,融合主要特征和互补部分的信息编码为图像分类的综合特征。实验结果表明,该方法不仅比我们的基线模型有了显着的改进,而且在Stanford Dogs 120,Caltech-UCSD Birds 2011-200和Caltech 256上也大大超过了最先进的算法(分别为6.7%,2.8%,5.2%)。

一、介绍

深度神经网络已经证明了其学习图像分类的代表性特征的能力[34,25,37,41,17]。给定训练数据,图像分类[9,25]经常构建特征提取器,其接受输入图像和随后的分类器,其产生图像的预测概率。 这是许多高级视觉任务中的常见管道,例如物体检测[10,14,16],跟踪[43,43,38]和场景理解...[略]

物体检测阶段

  1. 如何在没有groundtruth标注的情况下驱动目标检测器
  2. 如何利用目标检测结果提高图像分类的性能
    先训练分类网络,从分类模型中得到类激活映射(class activation map, CAM),将CAM输入条件随机场(conditional random field, CRF)得到无监督的实例分割标注。使用标注训练Mask RCNN模型,输出结果作为像素概率图替换CRF输出的标注,再次训练Mask RCNN,如此往复几轮。

图片分类阶段

在目标检测阶段直接输出分类结果会导致网络表现差,因为除了类标签之外,目标检测算法还需要花费很多精力来确定位置。为了在目标检测器的帮助下挖掘目标的显著部分,我们利用在先前目标检测阶段生成的候选区域,并建立一个补充局部信息的模型,它覆盖尽可能多能补充目标信息的候选区域子集。最后,我们利用双向长短期记忆网络对对象部分的深度特征进行编码,以进行最终图像分类。[略]

二、相关工作

弱监督目标检测和分割

基于局部的细粒度图像分类

使用LSTM进行上下文编码

三、弱监督局部信息补充模型

[略]

原文链接
这是一篇可在图像领域通用的小trick,同时也是一种细粒度算法的设计。

摘要

使用基于人体局部图像的特征对行人图像进行描述为任务提供了细粒度的信息,并且在最近的文献中已被证实对于行人重识别是有益的。发现局部细粒度特征的先决条件是每个局部都应该被准确的定位。本文不使用额外标注(例如姿势估计)来直接定位局部位置,而是强调每个局部位置的内容一致性。具体来说,我们的目标是学习用于人物检索的区别性特征,并做出两个贡献。(i)Part-based Convolutional Baseline(PCB网络)。给定图像输入,它输出由若干局部级特征组成的卷积描述符。 通过统一的分块策略,PCB利用最先进的方法获得了有竞争力的结果,证明了自己是行人检索的强大卷积baseline。(ii)refined part poolingmethod (RPP方法) 统一分割图像会不可避免地在每个局部中产生异常值,这些异常值实际上与其他局部更相似。RPP重新分割图像,将这些异常值分配到最相似的局部,从而增强每个局部的一致性。实验证实,RPP将使PCB精度再一次提升。例如,在Market-1501数据集上,我们实现了(77.4+4.2)%mAP和(92.3+1.5)%rank-1准确度,大大超过了现有技术水平。

一、介绍

行人检索,也称为行人重识别(re-ID),旨在给定人员特征的情况下检索大型数据库中的给定人员的图像。 目前,深度学习方法在这个社区占主导地位,对竞争对手手工制作的模型具有令人信服的优势[40]。深度学习的表达提供了高度的辨别能力,尤其是在深度学习的部分特征汇总时。有关re-ID基准测试的最新技术水平是通过局部信息的抽象特征实现的。

学习细粒度局部特征的一个必要先决条件是局部应准确定位。目前最先进的方法因其分区策略可分为两组。第一组[38,27,31]利用额外信息,例如人类姿势估计的最新进展[23,32,15,25,2]。它们依赖于外部人体姿势估计数据集和复杂的姿势估计器。姿势估计和行人检索之间的基础数据集偏差仍然是对人物图像上的理想语义划分的障碍。另一组[35,37,22]放弃了语义部分的线索。它们不需要部件标签 1 arXiv:1711.09349v3 [cs.CV] 9 Jan 2018 ,但仍然在精确度上与第一组的不相上下。
[略]

二、相关工作

[略]

三、PCB

3.1 PCB的结构

骨干网络

PCB可以采用任何没有用于图像最终分类的隐藏全连接层的网络作为主干,例如Google Inception [29]和ResNet [13]。本文采用ResNet50,因为其富有竞争力的表现和相对简洁的架构。

从骨干网络到PCB

我们通过略微修改将骨干网接入到PCB,如图2所示。原全局平均池化层(GAP)之前的结构与骨干模型保持完全相同。不同之处在于删除了GAP层和后面的层。当图像通过骨干网络的所有层后,它变为激活的3D张量T。在本文中,我们将沿通道轴观察的激活矢量定义为列矢量。然后将T划分为p个水平条带,使用平均池化,将同一条带中的所有列向量平均池化为单个局部列向量g。之后,PCB采用卷积层来减小g的尺寸。 根据我们的初步实验,尺寸减小的列向量h被设置为256-dim。 最后,将每个h输入到分类器中,这是通过全连接(FC)层和后续Softmax函数实现的,用于预测输入所属的标识(ID)。
PCB.png

在训练期间,通过最小化p个预测ID的交叉熵损失之和来优化PCB。在测试过程中,将p个g或h连接起来形成最终描述符G或H,即 G=[g1,g2,...,gp] or H=[h1,h2,...,hp]。正如在我们的实验中观察到的那样,采用G实现了稍高的精度,但计算成本更高,这与[28]中的观察结果一致。

3.2 重要参数

[略]
PCB通过去除骨干网络中的最后一次空间下采样操作来增加T的大小,从而取得了成功。
• 输入图像尺寸 384 × 128,高宽比 3:1,经过骨干网络后为12 x 4(32倍缩放,但作者在3.2中去除了骨干网络最后一层的pooling,所以输出也可能是24 x 8)
• T 的空间尺寸为 24 × 8.
• T 被分为6片

3.3 潜在的替代结构

给定相同的骨干网络,存在若干可能的替代结构来学习局部特征。我们列举了两种结构与PCB进行比较。

变体1 不是基于每个hi(i=1,2,...,p)进行ID预测,而是将所有hi平均为一个h,然后将其全连接到ID预测向量。在测试期间,连接g或h以形成最终描述符。变体1的特征在于在单个loss下学习卷积描述符。
变体2 它采用与图2中的PCB完全相同的结构。但是,变体2中FC分类器的所有分支共享一组相同的参数。

两种变体都经过实验证明不如PCB。PCB对变体1的优越性表明,不仅卷积描述符本身,而且每个局部的相应监督对于学习有区别的局部特征至关重要。PCB与变体2的优越性表明,共享分类器的权重,同时降低过度拟合的风险,会损害模型局部特征的判别能力。实验细节将在5.3节中展示。

四、RRP

4.1 局部内部的不一致

在关注空间上划分的张量T时,我们对于局部内部的不一致的想法是:在T的同一个局部中的列向量f应该彼此相似并且与其他部分中的列向量不同; 否则会发生局部内部的不一致现象,这意味着局部分割不当。

在对PCB进行收敛训练之后,我们通过测量余弦距离来比较每个 f 和 gi(即每个条带的平均池化合并列向量 i=1,2,...,p)之间的相似性。如果 f 最接近 gi,则相应地推断f最接近第i个部分。这样我们找到每个f最接近的部分,如图3所示。每个列向量用一个小矩形表示,并用其最接近部分的颜色绘制。
RPP.png

观察到两种现象。首先,同一水平条带中的大多数列向量都聚集在一起(尽管没有明确的约束来描述此效果)。其次,存在许多在训练期间指定到某水平条带的异常值,与另一部分水平条带更接近。这些异常值的存在表明它们本质上与另一部分中的列向量更加一致。

4.2 重新定位异常值

我们提出RPP以纠正局部内部不一致现象。我们的目标是根据它们与每个部分的相似性来分配所有列向量,以便重新分配异常值位置。

为此,我们需要在运行中对T中的所有列向量f进行分类。基于已经学习的T,我们使用线性层+Softmax激活器作为局部分类器,如下所示:
RPP-rule.png

通过这样做,RPP实现了soft和自适应分区以细化原始的hard和均匀分区,并且将源自固定分区的异常值重新分配。结合RPP后,PCB进一步变形如图4。RPP+采样操作取代了原始的平均池化。所有其他层的结构与图2中的结构完全相同。
PCB+RPP.png

4.3 局部分类器的Induced training(诱导训练?)

在Eq.1中,局部分类器的可学习 W 缺乏明确的监督信息。我们设计了一个诱导训练程序,如Alg.1所示。

Algorithm 1: Induced training for part classifier
Step 1. 对标准PCB模型进行训练得到T,以便在均匀分割的情况下进行收敛。
Step 2. 在T之后删除原始的平均池化层,并在T上附加 p 类别的局部分类器。
Step 3. 固定所有PCB层,仅训练局部分类器是直到再次收敛。在这种情况下,模型仍然期望张量T被均匀分区,否则它对训练图像的识别产生错误。因此Step 3惩罚局部分类器,直到它接近原始均匀分区的分区,同时倾向于将相似的列向量分到相同的区域。
Step 4. 允许更新所有图层。整个网络,即PCB以及局部分类器都经过微调,以进行整体优化。

在上述训练过程中,在Step 1中训练的PCB模型诱导了局部分类器的训练。Step 3和4的收敛速度非常快,总共只需要10多轮。

4.4 论RRP

跳过Alg.1的Step 1,训练也可以收敛。在这种情况下,训练将类似于PAR [37],其采用注意机制来对齐局部,如第2节中所介绍的。我们在实验中比较这两种方法,即在有或没有步骤1的情况下训练局部分类器,并证明诱导训练很重要。没有诱导训练,性能显着降低。例如,在Market-1501上,当诱导训练时,PCB与RRP相结合,达到80.9%mAP。 当除去诱导训练时,mAP降低至74.6%。这意味着所提出的诱导训练优于PCB上的注意机制。有关详细信息,请参见第5.5节。

五、实验

5.1 数据集和设置

[略]

5.2 实现细节

用于比较的IDE的实现

对原始版本进行了多次优化[40]的ResNet50:

  1. 在ResNet50中的“pool5”层之后,我们追加一个输出尺寸为256-dim的全连接层,再接Batch Normalization和ReLU;
  2. 虽然“pool5”层中没有可训练的参数,但有证据表明在其上应用dropout=0.5,输出2048d的高维特征向量,有效避免了过拟合并获得了相当大的改进;

在Market-1501上,我们实现的IDE达到85.3% rank-1 accuracy and 68.5% mAP,这比[45]中的实现略高。

训练

[略]

5.3 效果评估

  1. PCB is a strong baseline.
  2. Refined part pooling (RPP) improves PCB especially in mAP.
  3. The benefit of NOT sharing parameters among identity classifiers. 局部分类器使用独立参数的好处
  4. 达到最佳:we report mAP = 81.6%, 69.2%, 57.5% and Rank-1 = 93.8%, 83.3% and 63.7% for Market1501, Duke and CUHK03

5.4 参数分析

  1. 图片尺寸:更大的图像尺寸有益于学习到局部特征, mAP和rank-1准确度都随着图像尺寸的增加而增加,直到达到稳定。
  2. tensor T 尺寸:较小的下采样率增强了网络能力,尤其是在使用相对小的图像作为输入时。建议在考虑计算效率的情况下将下采样率减半。
  3. 局部 p 的数量:随着p的增加,检索精度首先会提高之后下降,过度增加p使得有些局部可能会坍塌到空白,损害了局部特征的辨别能力。

5.4 诱导训练和注意力机制

[略]

六、结论

[略]

摘要

迄今为止最高精度的物体检测器是由两级组成的检测器,典型代表是R-CNN,其中R-CNN的分类器被应用于有很少元素的预选框集。相反,一级检测器被更加广泛地使用,密集的区域预选使网络有可能变得更快更简单,但到目前为止,其检测的准确性仍落后于两级检测器。在本文中,我们讨论了为什么会出现这样的情况。我们发现在训练密集检测器的过程中遇到的极端的前景 - 背景类不平衡是造成一级检测器准确性较差的主要原因。我们提出解决这一类不平衡问题的方法:通过重塑标准交叉熵损失,以降低分配给分类良好的样本的损失。在训练阶段,我们新颖的Focal Loss专注于那些很少但很难被分类的样本上,以防止大量的容易被分类的负样本在训练期间主导检测器的训练。为了评估我们损失函数的有效性,我们设计并训练了一个简单的密集检测器,我们称之为RetinaNet。我们的结果表明,在用焦点损失训练时,RetinaNet能够匹配以前的一级检测器的速度,同时精度超过所有现有的最先进的两级检测器。

一、介绍

当前最优秀的目标检测器使用的都是一种由 proposal 驱动的 two-stage 机制。和在 R-CNN 框架中一样,第一个阶段生成一个候选目标位置组成的稀疏样本集,第二个阶段使用一个卷积神经网络将各候选位置归至 foreground 类别或 background 类别。随着这些文字的改进[10,28,20,14],two-stage 框架可以在难度极高的 COCO benchmark 上一直保持很高的准确度。

既然 two-stage 检测器的结果这么好,那么一个很自然的问题是:简单的 one-stage 检测器是否也能实现类似的准确度? one-stage 检测器主要应用在由目标位置(object locations)、尺度(scales)和长宽比(aspect ration)组成的规则密集样本集上。最近对 one-stage 检测器(如 YOLO 和 SSD)进行的试验都得出了优秀的结果,相比最优秀的 two-stage 方法,one-stage 检测器速度更快,而且能实现 10%- 40% 的准确度。

本文进一步提高了 one-stage 检测器的性能:我们设计出了一个 one-stage 目标检测器,并首次达到了更复杂的 two-stage 检测器所能实现的最高 COCO 平均精度,例如FPN(特征金字塔网络,Feature Pyramid Network) 或 Mask R-CNN(Faster R-CNN的变体)。我们发现训练过程中的类别失衡是阻碍单阶段检测器实现这个结果的主要障碍,并提出了一种新的损失函数来消除这个障碍。

R-CNN 检测器通过两阶段的级联(cascade)和启发式采样(sampling heuristics)解决类别失衡问题。Proposal 阶段(如Selective Search、EdgeBoxes 、DeepMask 和 RPN)可以快速地将候选目标位置的数目缩至更小(例如 1000-2000),过滤掉大多数背景样本。在接下来的分类阶段中,应用启发式抽样法(sampling heuristics),例如一个固定的前景样本背景样本比(1:3),或者在线困难样本挖掘法(online hard example mining),在 foreground 样本和 background 样本之间维持可控的平衡。

相反,one-stage 检测器则必须处理一个由图像中规则分布的候选目标位置组成的大样本集。在实践中,目标位置的总数目通常可达 10 万左右,并且密集覆盖空间位置、尺度和长宽比。虽然还可以应用类似的抽样启发法,但是这些方法在易分类的背景样本支配训练过程的情况下依然会失效。这种失效是目标识别中的一个典型问题,通常使用 bootstrapping 或困难样本挖掘来解决。

在本文中,我们提出了一个新的损失函数,它可以替代以往用于解决类别失衡问题的方法。这个损失函数是一个动态缩放的交叉熵损失函数,随着正确分类的置信度增加,函数中的比例因子缩减至零,见图1。在训练过程中,这个比例因子可以自动地减小简单样本的影响,并快速地将模型集中在困难样本上。试验证明,Focal Loss 函数可以使我们训练出准确度很高的 one-stage 检测器,并且在性能上超越使用抽样启发法或困难样本挖掘法等以往优秀方法训练出的 one-stage 检测器。最后,我们发现 Focal Loss 函数的确切形式并不重要,并且证明了其他实例(instantiations)也可以实现类似的结果。
RetinaNet-1.jpg
图1:我们提出了一种新的损失函数 Focal Loss(焦点损失),这个损失函数在标准的交叉熵标准上添加了一个因子 (1- pt) γ 。设定 γ > 0 可以减小分类清晰的样本的相对损失(pt > .5),使模型更加集中于困难的错误分类的样本。试验证明,在存在大量简单背景样本(background example)的情况下,我们提出的 Focal Loss 函数可以训练出准确度很高的密集对象检测器。

为了证明这个 Focal Loss 函数的有效性,我们设计了一个简单的 one-stage 目标检测器—RetinaNet,它会对输入图像中目标位置进行密集抽样。这个检测器有一个高效的 in-network 特征金字塔(feature pyramid),并使用了锚点盒(anchor box)。我们在设计它时借鉴了很多种想法[22,6,28,20]。RetinaNet 的检测既高效又准确。我们最好的模型基于 ResNet-101- FPN 骨干网,在 5fps 的运行速度下,我们在 COCO test-dev 上取得了 39.1 AP 的成绩,如图2 所示,超过目前公开的单一模型在 one-stage 和 two-stage 检测器上取得的最好成绩。
RetinaNet-2.jpg
图2:横坐标是检测器在COCO test-dev 上的检测速度(ms),纵坐标是准确度(AP: average precision)的比值。在 Focal Loss 的作用下,我们简单的 one-stage RetinaNet 检测器打败了先前所有的 one-stage 检测器和 two-stage 检测器,包括目前成绩最好的 Faster R-CNN系统。我们在图 2 中按 5 scales(400-800 像素)分别用蓝色圆圈和橙色菱形表示了 ResNet-50-FPN 和 ResNet-101-FPN 的 RetinaNet 变体。忽略准确度较低的情况(AP < 25),RetinaNet 的表现优于当前所有的检测器,训练时间更长时的检测器达到了 39.1 AP 的成绩。

二、相关工作

2.1 目标分类器(略)

2.2 两阶段检测器(略)

2.3 一阶段检测器(略)

2.4 类不平衡

像 boosted detectors、DPMs 这样的经典一阶段检测器以及SSD在训练中都面临类极不平衡问题。这些检测器对每张候选图产生10e4-10e5个候选框,但只有极少数内存在物体。这种类不平衡导致两个问题:

  1. 由于绝大多数候选框定位是简单负样本贡献了无用的学习信号,对它们的训练是无效的
  2. 同时简单负样本主导训练使得模型degenerate
    主流解决思路是做一些困难样本挖掘的工作[33,37,8,31,22],例如训练时在困难样本中抽样或更复杂的抽样、重设权重策略[2]。相反,我们...

2.5 稳健估计

人们对设计鲁棒损失函数(如Huber损失[13])非常感兴趣,这些函数通过降低outliers(难样本)的loss来降低离散值的对网络的贡献。相反,我们设计的焦点损失不是解决异常值,而是通过降低inliers(简单样本)的权重来解决类不平衡问题,使得即使它们的数量很大,它们对总损失的贡献也很小。换句话说,focal损失与稳健损失起着相反的作用:它将训练集中在一组稀疏的难样本上。

三、Focal loss

3.1 Balanced Cross Entropy

Focal loss旨在解决在训练期间前景和背景类别之间存在极端不平衡(例如,1:1000)的单阶段对象检测场景。我们从二元分类的交叉熵(CE, cross entropy for binary classification)损失开始介绍:
RetinaNet-CE.jpg

3.2 Focal Loss 定义

CE损失可以看作是图1中的蓝色(顶部)曲线。这种损失的一个值得注意的特性,是很容易分类的样本也会带来非平凡的损失。当大量简单的样本求和时, 这些小的损失值的和可以压倒那些很少出现的困难样本的损失值。
为了解决类不平衡问题,就意味着要抑制与真实值差别较小的样本,常见方法是引入加权因子 α∈[0; 1],为每个类加入超参数α,为了符号方便将平衡CE损失写为,即 &- CE = - \alpha_t log(p_t) -&

正如我们的实验所表明的那样,在密集型探测器训练期间遇到的大类失衡压倒了交叉熵损失。容易分类的负面因素包括大部分的损失,并且主宰着梯度。 虽然 α 平衡正/负样本的重要性,但它并没有区分简单/困难的样本。我们建议重塑损失函数来减轻简单的例子比重从而将训练集中在难以消除的问题上。

更正式的,我们建议给交叉熵损失增加一个调节因子&- (1 - p_t)_\gamma -&
其中γ具有可调焦距参数,γ≥0,我们定义Focal Loss 为
&=- FL(p_t) = -(1-p_t)\gamma log(p_t) -=&
在图1中,焦点损失可视化出几个值: γ∈[1,5] 。我们注意到焦点损失的两个性质。当一个例子被错误分类并且 &- p_t -&很小时,调制因子接近1,损失不受影响。当&- p_t\rightarrow1 -& ,该因子变为0,良好分类的例子的损失权重被降低。聚焦参数γ可以平滑调整简单样本下降的速率。
当 γ = 0时,FL等同于CE,并且随着 γ 增加,调节因子的作用也增加(我们发现 γ = 2在我们的实验中最佳)。
RetinaNet-1.jpg

最终在实验中使用的Focal Loss 如下公式,同时发现若计算p的loss层结合sigmoid操作会使得结果更加稳定。
&=- FL(p_t) = -\alpha_t (1-p_t)\gamma log(p_t) -=&

虽然在我们的主要实验结果中我们使用上面的焦点损失定义,但其确切形式并不重要。在附录中,我们考虑焦点损失的其他实例并证明这些可以同样有效。

3.3 类不平衡和模型初始化

二元分类模型默认初始化为具有输出 y = -1 or 1 的相等概率。在这种初始化下,如果存在类别失衡,频繁类造成的损失可能会主宰总损失,并导致早期训练不稳定。 为了对抗这一点,对最后一级用于分类的卷积的bias作了下小修改,把它初始化成一个特殊的值b=-log((1-π)/π),π在论文中取0.01。这样做能在训练初始阶段提高positive的分类概率。我们注意到这是模型初始化的改变(见4.1)而不是损失函数。 我们发现这可以提高交叉熵和重度失衡情况下焦点损失的训练稳定性。

3.4 类不平衡和 two stage 探测器

两阶段探测器的训练经常使用交叉熵损失,而不使用“平衡交叉熵损失”或我们建议的损失。相反,他们通过两种机制解决阶级失衡问题:(1)两阶段级联和(2)偏置小批量采样。第一个级联阶段是一个对象建议机制,它将几乎无限的可能对象位置集合减少到一两千个。重要的是,选定的提案并非随机的,但很可能对应于真实的物体位置,这消除了绝大多数简单的否定。 在训练第二阶段时,偏置采样通常用于构造包含,例如,1:3的正反比例。这个比例就像一个隐含的“平衡因素”,通过抽样来实现。我们提出的焦点损失旨在直接通过损失函数在一个阶段的检测系统中解决这些机制。

四、RetinaNet Detector

RetinaNet是由骨干网和两个特定任务子网组成的一阶段联合网络。主干负责计算整个输入图像上的卷积特征映射,并且是一种通用(off-the-shelf)的卷积网络。第一个子网在骨干的输出上执行卷积对象分类;第二个子网执行卷积BBox回归。这两个子网具有一个简单的设计,我们专门为一阶段密集检测而提出,参见图3。虽然这些组件的细节有很多可能的选择,如实验所示,大多数设计参数对精确值不是特别敏感。我们接下来描述RetinaNet的每个组件。
RetinaNet-Model.jpg

特征金字塔网络主干

我们采用[20]中的特征金字塔网络(FPN)作为RetinaNet的主干网。简而言之,FPN通过自上而下的路径和横向连接增强了标准卷积网络,因此网络可以从一个单一的分辨率输入图像有效地构建一个丰富,多尺度特征金字塔,见图3(a)-(b)。金字塔的每个级别都可以用于检测不同比例的对象。FPN是改进了完全卷积网络(FCN)的多尺度预测[23],在RPN [28]和DeepMask-style proposals[24],以及two stage 检测器如 Fast R-CNN [10]或Mask R-CNN [14]都有体现。

在[20]之后,我们在ResNet架构之上构建FPN[16]。我们构建了一个P3到P7的金字塔, 其中 l 表示金字塔等级(P1的分辨率是输入分辨率的2^l分之一)。正如[20]中一样,所有金字塔层都有C = 256个通道。金字塔的细节通常遵循[20],并有一些适度的差异。虽然许多设计选择并不重要,但我们强调使用FPN主干网;仅使用最终ResNet层的特征的初步实验AP低。

Anchors

我们使用类似于[20]中RPN变体的有平移不变性的锚点框。在金字塔等级P3到P7上,锚点的面积分别为3232到512512。如[20]中所述,在每个金字塔等级,我们使用三个长宽比{1:2,1:1,2:1},为了比[20]更密集的比例覆盖,我们在每个级别添加六个长宽比 &- \{2^0,2^{1/3},2^{2/3}\} -&。这在我们的设置中提高了AP。总共有在每个层级有A = 9个锚点,综合所有层级它们覆盖输入图像 32-813 的像素范围。

每个锚点分配一个长度为K的 one-hot 的分类对象,其中K是对象类的数量,以及4个回归框的回归目标。我们使用RPN [28]中设定的规则,但修改成了多类别检测和并调整阈值。特别是,使用 IoU=0.5 的阈值将 Anchor 分配给ground truth 对象框;如果他们的IoU位于[0,0.4),则为背景。由于每个锚点至多分配一个对象框,因此我们将其长度K标签矢量中的对应条目设置为1,所有其他条目设置为0。如果锚点未分配,可能会在[0.4,0.5]中发生重叠,则在训练期间将忽略它。BBox的回归目标被计算为每个锚点之间的偏移量及其分配的对象框,如果没有分配则省略。

分类子网

分类子网预测 A个Anchor 所在位置存在物体的可能性和K个分类概率。 该子网是接在每个FPN层后的小型FCN;该子网的参数在所有金字塔级别共享。它的设计很简单。从给定的金字塔层的输入有C个通道的特征,子网实现了4个3x3个conv层(每个conv层带有C滤波器接ReLU激活),接着是带有KA通道的3*3 conv层。最后用sigmoid激活来输出每个空间位置的KA二进制预测,参见图3(c)。在大多数实验中我们使用C = 256和A = 9。与RPN [28]相比,我们的对象分类子网更深入,仅使用3x3卷积层,并且不与bbox regression子网共享参数。我们发现这些更高层次的设计决策比超参数的特定值更重要。

bbox regression 子网

与对象分类子网并行,我们为每个金字塔层附加另一个小FCN,以便从每个锚箱到附近的真实物体(如果存在)进行回归。框回归子网的设计与分类子网相同,只是它在每个空间位置以4A线性输出终止,见图3(d)。对于每个空间位置的每个A锚点,这4个输出预测锚点和实体之间的相对偏移量框(我们使用RCNN [11]中的标准框参数化)。我们注意到,与最近的工作不同,我们使用类别不可知的框回归器,它使用较少的参数,我们发现它们同样有效。对象分类子网和bbox regression 子网,尽管共享一个共同的结构,但使用独立的参数。

五、结论和训练

Inference

RetinaNet是由ResNet-FPN主网络,一个分类子网络和一个边框回归子网络所组成的,如图2。预测是简单地通过网络将一张图片进行前向传播。为了提高速度,设置检测器置信度为0.05后,我们仅仅从每一个FPN级的最多1k top-scoring预测中进行边框预测解码。将所有级的top预测合并起来,然后应用0.5阈值的NMS来生成最终检测结果。

Focal Loss

我们使用本文引入的focal loss作为分类子网络的输出的loss。我们发现γ=2在实验中效果最好,而且RetinaNet在γ∈[0.5,5]的范围内相对鲁棒。我们强调在训练RetinaNet时,focal loss是应用于一张采用图片的所有的 ~100k个anchors的。这就与使用了启发式采样(RPN)或者难例挖掘(OHEM,SSD)来选择小部分anchors(如256)来构成minibatch相反。一张图像的总共的focal loss是所有~100k个anchors的focal loss的和,然后再使用被赋予gt框的anchors的数量来进行标准化。我们使用被赋予gt框的anchors的数量来进行归一化,而非所有的anchors的原因是大量的anchors是easy negatives,它们的loss在focal loss下是可以忽略不计的。最后我们注意到α,赋予少类的权重,同样具有相对稳定的范围,但是它与γ相互影响所以有必要同时对它们两个进行选择。普遍来看,α增加一点γ就增加一点(实验中γ=2和α=0.25效果最好)。

Initialization

我们使用ResNet-50-FPN和ResNet-101-FPN进行了实验。基础的ResNet-50和ResNet-101模型是在ImageNet1k上进行了预训练。新增的FPN层由FPN论文中的方式进行初始化。除了RetinaNet子网络的最后一层,其他所有新增的层都采用σ=0.01的高斯分布和b=0进行初始化。对于分类子网络的最后一层卷积层,我们设置初始偏置项为b=−log((1−π)/π),这里π被指定在训练开始时,所有的anchor都需要被标注为带有~π置信率的前景。在所有的实验中,我们使用π=.01,尽管结果对于这个值相对鲁棒。就像3.4节中介绍的一样,这个初始化是为了防止在训练的第一个周期大量的背景anchors生成一个巨大的不稳定的loss值。

Optimization

RetinaNet通过SGD进行训练。我们同时使用8个GPU对一个minibatch16张图片(1个GPU两张图)进行同步SGD。除非有特别指定,所有的模型都使用初始学习率0.01进行90k周期的训练,然后在60k和80k周期时进行10倍的学习率衰减。我们使用图像水平翻转作为唯一数据增广手段。0.0001的权值衰减和0.9的momentum。训练loss是focal loss和边框回归的标准smooth L1 loss的和。训练时间在10-35个小时之间。

六、经验

我们给出了在COCO的边框检测任务的实验结果。对于训练,我们使用了FPN中的一些实际操作,然后使用了COCO trainval35k 的划分。对于我们主要的结果,我们报告了在 test-dev 上的 COCO AP。

6.1 Training Dense Detection

我们跑了大量实验来分析对于密集检测使用各种优化策略的损失函数的行为。对于所有实验我们都使用带有FPN的ResNet50或101。对于所有的模型简化实验,我们使用尺度为600像素的图像进行训练和测试。

Network Initialization

首先尝试使用标准CE loss来训练 RetinaNet,不进行任何初始化或者学习策略的修改。这个方法失败,网络在训练时无法收敛。然而,简单地将模型的最后一层加入物体预测先验概率π=.01 就能够使网络有效的训练。使用这个初始化和ResNet-50已经能在COCO上生成30.2的AP。模型对于π的数值并不敏感。

Balanced Cross Entropy

我们接下来尝试使用α-balanced CE loss。设置α=.75,AP增加了0.9。

Focal loss

focal loss引入了一个新的超参数,聚焦参数γ,用来控制调整项的强度。如果γ=0,我们的loss和CE loss相同。当γ增加,loss在好分类例子上的变化使得好分类例子被大打折扣,如图1。γ=2的FL在AP上相对于α-balanced CE loss上升2.9。

Analysis of the Focal Loss

为了更好的理解focal loss,我们分析了收敛模型的损失函数的经验分布。我们使用默认的采用600像素作为输入,γ=2训练出的ResNet-101模型。我们对模型输入大量的随机的图像,然后采样了 107个负窗口的预测概率和 105个正窗口的预测概率。然后,分别对于这些正负样本,我们计算FL,然后对它们进行标准化,使它们和为1。有了归一化后的值,我们可以分别对正负样本从低到高的按loss进行排序,然后画出不同γ下的CDF(累积分布函数)。

正负样本的CDF(如图4)。如果我们观察正样本,会发现CDF对于不同γ值来说大致是相似的。大约20%的正样本难例占了大约一半的正损失,当γ增加,损失会越来越集中于top 20%的样本,但是这种效果是微小的。对于负样本,γ的影响就非常不同,如γ=2,FL能够非常有效的折扣负样本简单例的效果,使得模型所有注意力都在负难例上。
RetinaNet-ft.jpg

Online Hard Example Mining (OHEM) 在线难样本挖掘

OHEM中所有样本经过计算损失值,然后使用NMS过滤,最后在minibatch时选择损失值最大的那些样本。OHEM关注误分类样本,不同于FL,OHEM完全忽略的易分类样本。如Table 1d所示,最好的OHEM与FL有3.2点AP差距。

Hinge Loss

先前使用中尝试对 pt 使用Hinge Loss;对 pt 值大于某个阈值的样本,损失函数置为零。但是训练过程不稳定,并且也达不到有价值的效果。
RetinaNet-ohem.jpg

6.2 Model Architecture Design

Anchor密度

one-stage检测器的anchor密度到底多少才能覆盖任意图像边框。Two-stage检测器通过Region Pooling(ROI Pooling)可以对边框的任何位置、尺寸、长宽比归类。相比之下,one-stage 检测器使用一个固定的采样网格,一个常用的方法是在每个空间位置使用多个anchors来覆盖不同的尺寸和长宽比边框。

我们在FPN每一层的每个空间位置使用不同个数的尺寸和长宽比anchors。在ResNet-50从使用1个方形anchor到12个anchors(尺寸为&- 2^{k/4} -&, k ≤ 3,长宽比为 [0.5, 1, 2],见Table 1c)。令人惊讶的是只使用1个anchor情况下AP就有30.3;当使用3中尺寸和3中长宽比时可以到达34.0。
RetinaNet-anchor.jpg

最终,我们发现再增加6~9个anchors也没有更多的提升。虽然two-stage检测器可以识别图片中任意的边框;性能的饱和度w.r.t. 密度意味着较高潜在密度的two-stage系统的可能不具有优势。

速度VS准确率

RetinaNet-speed.jpg
a) 更大的主干网有更好的准确率,但速度更慢;输入图像的尺寸也是如此,见Table 1e。

b) 图Figure 2 展示RetinaNet和其它方法在速度/精度的比较;RetinaNet 使用FL超过所有的方法,打破低精度的限制。ResNet-101-FPN在600像素尺寸时的精确度超过ResNet101-FPN Faster R-CNN,同时检测时间为122ms,Faster R-CNN为172ms。

c) 追求速度需要特殊的网络设计如Yolo 9000。

总结

类别不均衡是导致one-stage检测器超越two-stage检测器的主要障碍。我们提出 focal loss在交叉熵损失函数中使用一个调节项来聚焦于困难负样本。方法简单有效。通过一个one-stage的FCN检测器在速度和精度同时达到stage-of-the-art。

感谢及参考

知乎深度学习论文翻译专栏
掘金AI科技大本营
CSDNmike112233
Githubyizt/cv-papers