Norm-Aware Embedding for Efficient Person Search

引言

该篇文章来自CVPR2020,需要更多的数学知识,但是代码开源。

方法

文章认为:

  • 问题:端到端的网络中,检测和重识别的目的不同。
  • 解决:将行人向量映射到极坐标中,向量范数部分区分背景和行人,向量角度部分用于重识别。
    作者通过下图展示了通常的方法与本文的方法的不同。
    Norm-Aware Embedding for Efficient Person Search
    图中黑线表示背景,彩线表示不同的行人。灰色部分表示背景与行人的决策边界。
    图a表示通常的l2 normalized 的embedding在空间的表示。图b表示在极坐标下的表示。
    从图a中可以看出,背景的空间压缩行人的空间,使得行人类间的角度距离被压缩。区分不够明显。而图b中,将向量作极坐标处理后的向量称为norm-aware embedding,可以看到该向量的行人空间的行人类间距离非常广泛。

网络结构

在学习结构前需要具备一些数学知识。
l_p范数为一种向量范数,其中:
l_0范数:向量非零元个数。minx0min||x||_0最优解为NP问题。
l_1范数:元素绝对值之和。minx1min||x||_1最优解为稀疏解,因此l_1范数也被叫做稀疏规则算子,可以滤去一些关系不大的特征。
l_2范数:元素平方和在开根号。minx2min||x||_2优化问题常用作优化目标函数的正则化项以防止过拟合。

  • l2 norm和l2 normalized
    l2 norm指的是l2范数。
    l2 normalized指的是l2归一化,逐个转换向量的元素,使得转换后的向量xx'的l2 norm为1.
    x=(x1,x2......)x=(x_1, x_2......),则l2norm(x)=1=x12+x22+...+xi2l2norm(x)l2 norm(x')=1=\frac{\sqrt{x^2_1+x^2_2+...+x^2_i}}{l2 norm(x)},则xi=xil2norm(x)x'_i=\frac{x_i}{l2norm(x)}

网络结构图如下图所示。
Norm-Aware Embedding for Efficient Person Search
图中σ()\sigma()表示sigmoidsigmoid函数,BNBN表示bn层。虚线表示只有在推理阶段才执行。
图a表示通常的端到端网络结构,图b表示norm-aware embedding。图c表示图b的像素级扩展。
图b中原始特征向量X=rθX=r \cdot \theta,经过转换,得到norm-aware embedding向量X~=r~θ\widetilde{X}=\widetilde{r}\cdot\theta.
图c的提出:

  • 问题:图b中ROI特征图直接通过GAP转为特征向量,丢失了部分空间信息。
  • 解决:使用像素级的分类。

训练和推理

训练

bs设为5,全景图片被resize到900×1500900\times1500

推理

query的检测置信度rr设置为1。那么相似度计算为:
Norm-Aware Embedding for Efficient Person Search
其中r~\widetilde{r}作为余弦相似度的权重,与Focal loss中处理正负样本加权重的作用类型,对结果十分重要,可以提升1-2个百分点,如下图。
Norm-Aware Embedding for Efficient Person Search

缺点

  1. 在像素级NAE+模型中,检测置信度处理的方法不太好,将每个位置的置信度除以整个特征图置信度的最大值,这样每个位置的置信度值都变大了且在范围[0, 1]内,但是像背景的像素也会变得不那么像了。
  2. 效果没有想象的那么好,可能是因为embedding空间中,背景范围与行人范围取决于二分类和多分类损失值相对的大小,可能并没有文章中体现的背景范围严重挤压行人范围那么夸张。