Re-ID综述(持续)

综述:https://zhuanlan.zhihu.com/p/72501575

开源框架:Fast-REID等。FastReID是一个研究平台,可实现最新的重新识别算法。

来源:https://zhuanlan.zhihu.com/p/299323707

FastReID地址:https://github.com/JDAI-CV/fast-reid

UDAStrongBaseline:https://github.com/zkcys001/UDAStrongBaseline

知乎Re-ID专栏:https://www.zhihu.com/column/re-id

论文代码总结地址:https://github.com/bismex/Awesome-person-re-identification

综述1(罗浩.ZJU)

https://zhuanlan.zhihu.com/p/31921944

ReID有一个非常重要的特性就是跨摄像头,所以学术论文里评价性能的时候,是要检索出不同摄像头下的相同行人图片。

一个区域有多个摄像头拍摄视频序列,ReID的要求对一个摄像头下感兴趣的行人,检索到该行人在其他摄像头下出现的所有图片。

ReID广泛被认为是一个图像检索的子问题。给定一个监控行人图像,检索跨设备下的该行人图像。旨在弥补目前固定的摄像头的视觉局限,并可与行人检测/行人跟踪技术相结合,可广泛应用于智能视频监控、智能安保等领域。

在监控视频中,由于相机分辨率和拍摄角度的缘故,通常无法得到质量非常高的人脸图片。当人脸识别失效的情况下,ReID就成为了一个非常重要的替代品技术。

  1. 基于表征学习的ReID方法
  2. 基于度量学习的ReID方法
  3. 基于局部特征的ReID方法
  4. 基于视频序列的ReID方法
  5. 基于GAN造图的ReID方法
基于表征学习的ReID方法

CNN可以自动**从原始的图像数据中根据任务需求自动提取出表征特征(Representation),**所以有些研究者把行人重识别问题看做分类(Classification/Identification)问题或者验证(Verification)问题:(1)分类问题是指利用行人的ID或者属性等作为训练标签来训练模型;(2)验证问题是指输入一对(两张)行人图片,让网络来学习这两张图片是否属于同一个行人。

论文[1]利用Classification/Identification loss和verification loss来训练网络。网络输入为若干对行人图片,包括分类子网络(Classification Subnet)和验证子网络(Verification Subnet)。

img

从图中可以看出,网络输出的特征不仅用于预测行人的ID信息,还用于预测各项行人属性。通过结合ID损失和属性损失能够提高网络的泛化能力。

img

但是个人的实际经验感觉表征学习容易在数据集的domain上过拟合,并且当训练ID增加到一定程度的时候会显得比较乏力。

基于度量学习的ReID方法
对比损失(Contrastive loss)

度量学习(Metric learning)是广泛用于图像检索领域的一种方法。不同于表征学习,度量学习旨在通过网络学习出两张图片的相似度。

最后网络的损失函数使得相同行人图片(正样本对)的距离尽可能小,不同行人图片(负样本对)的距离尽可能大。

对比损失用于训练孪生网络(Siamese network),其结构图如下图所示。孪生网络的输入为一对(两张)图片 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gLXcyqEQ-1622725285491)(https://www.zhihu.com/equation?tex=I_a)] 和 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bROtJ8Bz-1622725285495)(https://www.zhihu.com/equation?tex=I_b)] ,这两张图片可以为同一行人,也可以为不同行人。每一对训练图片都有一个标签 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EzM0VZ5h-1622725285498)(https://www.zhihu.com/equation?tex=y)] ,其中 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LXzPIrun-1622725285500)(https://www.zhihu.com/equation?tex=y%3D1)] 表示两张图片属于同一个行人(正样本对),反之 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-e6nxfK2M-1622725285503)(https://www.zhihu.com/equation?tex=y%3D0)] 表示它们属于不同行人(负样本对)。之后,对比损失函数写作:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tQWuVGmO-1622725285504)(https://www.zhihu.com/equation?tex=+L_c+%3D+yd_%7BI_a%2CI_b%7D%5E2%2B%281-y%29%28%5Calpha±+d_%7BI_a%2CI_b%7D%29%5E2_%2B)]

img
三元组损失(Triplet loss)

三元组损失是一种被广泛应用的度量学习损失。

和对比损失不同,一个输入的三元组(Triplet)包括一对正样本对和一对负样本对。三张图片分别命名为固定图片(Anchor) [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KWitoogf-1622725285505)(https://www.zhihu.com/equation?tex=a)] ,正样本图片(Positive) [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mN1IWlVx-1622725285506)(https://www.zhihu.com/equation?tex=p)] 和负样本图片(Negative) [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-T27wz4fn-1622725285506)(https://www.zhihu.com/equation?tex=n)] 。图片 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ouk09Vd5-1622725285508)(https://www.zhihu.com/equation?tex=a)] 和图片 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cetRjt1e-1622725285509)(https://www.zhihu.com/equation?tex=p)] 为一对正样本对,图片 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cHQtSi2p-1622725285511)(https://www.zhihu.com/equation?tex=a)] 和图片 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-C7lKojyp-1622725285512)(https://www.zhihu.com/equation?tex=n)] 为一对负样本对。则三元组损失表示为:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rOZ75kSh-1622725285512)(https://www.zhihu.com/equation?tex=L_t+%3D+%28d_%7Ba%2Cp%7D-d_%7Ba%2Cn%7D%2B%5Calpha%29_%2B)]

img

如上图所示,最后使得相同ID的行人图片在特征空间里形成聚类,达到行人重识别的目的。

论文[8]认为原版的Triplet loss只考虑正负样本对之间的相对距离,而并没有考虑正样本对之间的绝对距离,为此提出改进三元组损失(Improved triplet loss):[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-STtOBnAU-1622725285513)(https://www.zhihu.com/equation?tex=+L_it+%3D+d_%7Ba%2Cp%7D%2B%28d_%7Ba%2Cp%7D-d_%7Ba%2Cn%7D%2B%5Calpha%29_%2B)]

公式添加 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dnTGegn1-1622725285514)(https://www.zhihu.com/equation?tex=d_%7Ba%2Cp%7D)] 项,保证网络不仅能够在特征空间把正负样本推开,也能保证正样本对之间的距离很近

四元组损失(Quadruplet loss)
img

四元组(Quadruplet)需要四张输入图片,和三元组不同的是多了一张负样本图片。即四张图片为固定图片(Anchor) [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-82sBYwFz-1622725285514)(https://www.zhihu.com/equation?tex=a)] ,正样本图片(Positive) [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IJLi3TeN-1622725285515)(https://www.zhihu.com/equation?tex=p)] ,负样本图片1(Negative1) [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-igaMw4NI-1622725285516)(https://www.zhihu.com/equation?tex=n1)] 和负样本图片2(Negative2) [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-apHPFuYB-1622725285517)(https://www.zhihu.com/equation?tex=n2)] 。其中 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-83PCzWdb-1622725285517)(https://www.zhihu.com/equation?tex=n1)] 和 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-liiAOJY2-1622725285518)(https://www.zhihu.com/equation?tex=n2)] 是两张不同行人ID的图片,其结构如上图所示。则四元组损失表示为:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nMqGiV8h-1622725285518)(https://www.zhihu.com/equation?tex=q+%3D+%28d%7Ba%2Cp%7D-d_%7Ba%2Cn1%7D%2B%5Calpha%29_%2B+%2B+%28d_%7Ba%2Cp%7D-d_%7Bn1%2Cn2%7D%2B%5Cbeta%29_%2B)]

其中 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Lc5liN1N-1622725285519)(https://www.zhihu.com/equation?tex=%5Calpha)] 和 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aq4VEmSu-1622725285520)(https://www.zhihu.com/equation?tex=%5Cbeta)] 是手动设置的正常数,通常设置 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AwXHeWiG-1622725285521)(https://www.zhihu.com/equation?tex=%5Cbeta)] 小于 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VlxN3bz9-1622725285522)(https://www.zhihu.com/equation?tex=%5Calpha)] ,前一项称为强推动,后一项称为弱推动。相比于三元组损失只考虑正负样本间的相对距离,四元组添加的第二项不共享ID,所以考虑的是正负样本间的绝对距离。因此,四元组损失通常能让模型学习到更好的表征。

难样本采样三元组损失(Triplet loss with batch hard mining, TriHard loss)

传统的三元组随机从训练数据中抽样三张图片,这样的做法虽然比较简单,但是抽样出来的大部分都是简单易区分的样本对。如果大量训练的样本对都是简单的样本对,那么这是不利于网络学习到更好的表征。大量论文发现用更难的样本去训练网络能够提高网络的泛化能力,而采样难样本对的方法很多。

论文[10]提出了一种基于训练批量(Batch)的在线难样本采样方法——TriHard Loss。

TriHard损失会计算 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wKKKA77s-1622725285523)(https://www.zhihu.com/equation?tex=a)] 和batch中的每一张图片在特征空间的欧式距离,然后选出与 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lKrFrXCf-1622725285524)(https://www.zhihu.com/equation?tex=a)] 距离最远(最不像)的正样本 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DMRnSJu0-1622725285525)(https://www.zhihu.com/equation?tex=p)] 和距离最近(最像)的负样本 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iZttmfeK-1622725285526)(https://www.zhihu.com/equation?tex=n)] 来计算三元组损失。通常TriHard损失效果比传统的三元组损失要好。

TriHard损失的核心思想是:对于每一个训练batch,随机挑选 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kgRT5j1S-1622725285527)(https://www.zhihu.com/equation?tex=P)] 个ID的行人,每个行人随机挑选 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7i6Oydei-1622725285528)(https://www.zhihu.com/equation?tex=K)] 张不同的图片,即一个batch含有 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Dx6IKbPY-1622725285529)(https://www.zhihu.com/equation?tex=P+%5Ctimes+K)] 张图片。之后对于batch中的每一张图片 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-syxBGL8J-1622725285530)(https://www.zhihu.com/equation?tex=a)] ,我们可以挑选一个最难的正样本和一个最难的负样本和 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ni1IphFv-1622725285531)(https://www.zhihu.com/equation?tex=a)] 组成一个三元组。

首先我们定义和 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yh3DKC58-1622725285532)(https://www.zhihu.com/equation?tex=a)] 为相同ID的图片集为 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uXYwMrOp-1622725285532)(https://www.zhihu.com/equation?tex=A)] ,剩下不同ID的图片图片集为 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8OIxv8tA-1622725285533)(https://www.zhihu.com/equation?tex=B)] ,则TriHard损失表示为:其中 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DOaLr6jC-1622725285534)(https://www.zhihu.com/equation?tex=%5Calpha)] 是人为设定的阈值参数。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-U7SAQiRG-1622725285535)(https://www.zhihu.com/equation?tex=+L_%7Bth%7D+%3D+%5Cfrac%7B1%7D%7BP+%5Ctimes+K%7D%5Csum_%7Ba+%5Cin+batch%7D%28%5Cmax_%7Bp+%5Cin+A%7D+d_%7Ba%2Cp%7D-%5Cmin_%7Bn+%5Cin+B%7D+d_%7Ba%2Cn%7D%2B%5Calpha%29_%2B)]

边界挖掘损失(Margin sample mining loss, MSML)

MSML是同时兼顾相对距离和绝对距离并引入了难样本采样思想的度量学习方法。

四元组损失中假如我们忽视参数 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uigMKxw4-1622725285536)(https://www.zhihu.com/equation?tex=%5Calpha)] 和 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-og5Nx9l6-1622725285536)(https://www.zhihu.com/equation?tex=%5Cbeta)] 的影响,我们可以用一种更加通用的形式表示四元组损失:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-E2J59tmU-1622725285537)(https://www.zhihu.com/equation?tex=+L_%7Bq%5E%5Cprime%7D+%3D+%28d_%7Ba%2Cp%7D-d_%7Bm%2Cn%7D%2B%5Calpha%29_%2B)]

其中 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dDqcZNTz-1622725285537)(https://www.zhihu.com/equation?tex=m)] 和 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-e9p6auk4-1622725285538)(https://www.zhihu.com/equation?tex=n)] 是一对负样本对, [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SwlGIGYR-1622725285539)(https://www.zhihu.com/equation?tex=m)] 和 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-92Jyprxa-1622725285540)(https://www.zhihu.com/equation?tex=a)] 既可以是一对正样本对也可以是一对负样本对。之后把TriHard loss的难样本挖掘思想引入进来:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2qp70Rwa-1622725285541)(https://www.zhihu.com/equation?tex=L_%7Bmsml%7D+%3D+%28%5Cmax_%7Ba%2Cp%7D+d_%7Ba%2Cp%7D-%5Cmin_%7Bm%2Cn%7D+d_%7Bm%2Cn%7D%2B%5Calpha%29_%2B)]

概括而言TriHard损失是针对batch中的每一张图片都挑选了一个三元组,而MSML损失只挑选出最难的一个正样本对和最难的一个负样本对计算损失。所以MSML是比TriHard更难的一种难样本采样,此外 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Io3rCopi-1622725285542)(https://www.zhihu.com/equation?tex=%5Cmax_%7Ba%2Cp%7D+d_%7Ba%2Cp%7D)] 可以看作是正样本对距离的上界, [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vjBqYqe8-1622725285543)(https://www.zhihu.com/equation?tex=%5Cmin_%7Bm%2Cn%7D+d_%7Bm%2Cn%7D)] 可以看作是负样本对的下界。MSML是为了把正负样本对的边界给推开,因此命名为边界样本挖掘损失。

img
五个损失的区别

在论文[11]之中,对上面提到的主要损失函数在尽可能公平的实验的条件下进行性能对比,实验结果如下表所示。

img
基于局部特征的ReID方法

全局特征遇到了瓶颈,于是开始渐渐研究起局部的local feature。常用的提取局部特征的思路主要有图像切块、利用骨架关键点定位以及姿态矫正等等。

图片切块是一种很常见的提取局部特征方式[12]。如下图所示,图片被垂直等分为若干份,因为垂直切割更符合我们对人体识别的直观感受,所以行人重识别领域很少用到水平切割。之后,被分割好的若干块图像块按照顺序送到一个长短时记忆网络(Long short term memory network, LSTM),最后的特征融合了所有图像块的局部特征

但是这种缺点在于对图像对齐的要求比较高,如果两幅图像没有上下对齐,那么很可能出现头和上身对比的现象,反而使得模型判断错误。

先验知识

为了解决图像不对齐情况下手动图像切片失效的问题,一些论文利用一些先验知识先将行人进行对齐,这些先验知识主要是预训练的人体姿态(Pose)和骨架关键点(Skeleton) 模型。

仿射变换使得相同的关键点对齐

论文[13]先用姿态估计的模型估计出行人的关键点,然后用仿射变换使得相同的关键点对齐。

img

如上图所示一个行人通常被分为14个关键点,这14个关键点把人体结果分为若干个区域。为了提取不同尺度上的局部特征,作者设定了三个不同的PoseBox组合。

之后这三个PoseBox矫正后的图片和原始未矫正的图片一起送到网络里去提取特征,这个特征包含了全局信息和局部信息。

特别提出,这个仿射变换可以在进入网络之前的预处理中进行,也可以在输入到网络后进行。如果是后者的话需要需要对仿射变换做一个改进,因为传统的仿射变化是不可导的。为了使得网络可以训练,需要引入可导的近似放射变化,在本文中不赘述相关知识。

利用人体关键点抠出感兴趣区域

CVPR2017的工作Spindle Net[14]也利用了14个人体关键点来提取局部特征。和论文[12]不同的是,Spindle Net并没有用仿射变换来对齐局部图像区域,而是直接利用这些关键点来抠出感兴趣区域(Region of interest, ROI)。

preview

Spindle Net网络如上图所示,首先通过骨架关键点提取的网络提取14个人体关键点,之后利用这些关键点提取7个人体结构ROI

网络中所有提取特征的CNN(橙色表示)参数都是共享的,这个CNN分成了线性的三个子网络FEN-C1、FEN-C2、FEN-C3。

对于输入的一张行人图片,有一个预训练好的骨架关键点提取CNN(蓝色表示)来获得14个人体关键点,从而得到7个ROI区域,其中包括三个大区域(头、上身、下身)和四个四肢小区域。这7个ROI区域和原始图片进入同一个CNN网络提取特征

原始图片经过完整的CNN得到一个全局特征。三个大区域经过FEN-C2和FEN-C3子网络得到三个局部特征。四个四肢区域经过FEN-C3子网络得到四个局部特征。之后这8个特征按照图示的方式在不同的尺度进行联结,最终得到一个融合全局特征和多个尺度局部特征的行人重识别特征。

全局-局部对齐特征描述子
img

论文[15]提出了一种全局-局部对齐特征描述子(Global-Local-Alignment Descriptor, GLAD),来解决行人姿态变化的问题。

与Spindle Net类似,GLAD利用提取的人体关键点把图片分为头部、上身和下身三个部分。之后将整图和三个局部图片一起输入到一个参数共享CNN网络中,最后提取的特征融合了全局和局部的特征。

为了适应不同分辨率大小的图片输入,网络利用全局平均池化(Global average pooling, GAP)来提取各自的特征。

和Spindle Net略微不同的是四个输入图片各自计算对应的损失,而不是融合为一个特征计算一个总的损失。

不需要额外信息(先验知识)的情况下来自动对齐局部特征

以上所有的局部特征对齐方法都需要一个额外的骨架关键点或者姿态估计的模型。而训练一个可以达到实用程度的模型需要收集足够多的训练数据,这个代价是非常大的。

为了解决以上问题,AlignedReID[16]提出基于SP距离的自动对齐模型,在不需要额外信息的情况下来自动对齐局部特征

而采用的方法就是动态对齐算法,或者也叫最短路径距离。这个最短距离就是自动计算出的local distance。

img

这个local distance可以和任何global distance的方法结合起来,论文[15]选择以TriHard loss作为baseline实验,最后整个网络的结构如下图所示,具体细节可以去看原论文。

img
基于视频序列的ReID方法

基于视频序列的方法最主要的不同点就是这类方法不仅考虑了图像的内容信息,还考虑了帧与帧之间的运动信息等。

但是通常单帧图像的信息是有限的,因此有很多工作集中在利用视频序列来进行行人重识别方法的研究[17-24]。

img

基于单帧图像的方法主要思想是利用CNN来提取图像的空间特征,而基于视频序列的方法主要思想是利用CNN 来提取空间特征的同时利用递归循环网络(Recurrent neural networks, RNN)来提取时序特征。

上图是非常典型的思路,网络输入为图像序列。每张图像都经过一个共享的CNN提取出图像空间内容特征,之后这些特征向量被输入到一个RNN网络去提取最终的特征。

最终的特征融合了单帧图像的内容特征和帧与帧之间的运动特征。而这个特征用于代替前面单帧方法的图像特征来训练网络。

代表方法

视频序列类的代表方法之一是累计运动背景网络(Accumulative motion context network, AMOC)[23]。

AMOC输入的包括原始的图像序列和提取的光流序列。通常提取光流信息需要用到传统的光流提取算法,但是这些算法计算耗时,并且无法与深度学习网络兼容。**为了能够得到一个自动提取光流的网络,作者首先训练了一个运动信息网络(Motion network, Moti Nets)。**这个运动网络输入为原始的图像序列,标签为传统方法提取的光流序列。

如下图所示,原始的图像序列显示在第一排,提取的光流序列显示在第二排。网络有三个光流预测的输出,分别为Pred1,Pred2,Pred3,这三个输出能够预测三个不同尺度的光流图

最后网络融合了三个尺度上的光流预测输出来得到最终光流图,预测的光流序列在第三排显示。通过最小化预测光流图和提取光流图的误差,网络能够提取出较准确的运动特征。

img

AMOC的核心思想:

网络除了要提取序列图像的特征,还要提取运动光流的运动特征,其网络结构图如下图所示。

AMOC拥有空间信息网络(Spatial network, Spat Nets)运动信息网络两个子网络。、

图像序列的每一帧图像都被输入到Spat Nets来提取图像的全局内容特征。而相邻的两帧将会送到Moti Nets来提取光流图特征

之后空间特征和光流特征融合后输入到一个RNN来提取时序特征。通过AMOC网络,每个图像序列都能被提取出一个融合了内容信息、运动信息的特征。

网络采用了分类损失和对比损失来训练模型。融合了运动信息的序列图像特征能够提高行人重识别的准确度。

img

论文[24]从另外一个角度展示了多帧序列弥补单帧信息不足的作用,目前大部分video based ReID方法还是不管三七二十一的把序列信息输给网络,让网络去自己学有用的信息,并没有直观的去解释为什么多帧信息有用。

而论文[24]则很明确地指出当单帧图像遇到遮挡等情况的时候,可以用多帧的其他信息来弥补,直接诱导网络去对图片进行一个质量判断,降低质量差的帧的重要度。

如下图,文章认为在遮挡较严重的情况下,如果用一般的pooling会造成attention map变差,遮挡区域的特征会丢失很多。

而利用论文的方法每帧进行一个质量判断,就可以着重考虑那些比较完整的几帧,使得attention map比较完整。

而关键的实现就是利用一个pose estimation的网络,论文叫做landmark detector。当landmark不完整的时候就证明存在遮挡,则图片质量就会变差。

之后pose feature map和global feature map都同时输入到网络,**让网络对每帧进行一个权重判断,**给高质量帧打上高权重,然后对feature map进行一个线性叠加。思路比较简单但是还是比较让人信服的。

img img
基于GAN造图的ReID方法

ReID有一个非常大的问题就是数据获取困难。

论文[25]是第一篇用GAN做ReID的文章,发表在ICCV17会议,虽然论文比较简单,但是作为挖坑鼻祖引出一系列很好的工作。

如下图,这篇论文生成的图像质量还不是很高,甚至可以用很惨来形容。

另外一个问题就是由于图像是随机生成的,也就是说是没有可以标注label可以用。为了解决这个问题,论文提出一个标签平滑的方法。实际操作也很简单,就是把label vector每一个元素的值都取一样,满足加起来为1。反正也看不出属于哪个人,那就一碗水端平。生成的图像作为训练数据加入到训练之中,由于当时的baseline还不像现在这么高,所以效果还挺明显的,至少数据量多了过拟合能避免很多。

img

论文[26]是上一篇论文的加强版,来自同一个课题组。前一篇的GAN造图还是随机的,在这一篇中变成了可以控制的生成图。

ReID有个问题就是不同的摄像头存在着bias,这个bias可能来自光线、角度等各个因素。为了克服这个问题,论文使用GAN将一个摄像头的图片transfer到另外一个摄像头。

在GAN方面依然还是比较正常的应用,和前作不同的是这篇论文生成的图是可以控制,也就是说ID是明确的。于是标签平滑也做了改进,公式如下:[公式]

其中 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bPMoBTOA-1622725285544)(https://www.zhihu.com/equation?tex=C)] 是ID的数量。 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sIM7vbMk-1622725285544)(https://www.zhihu.com/equation?tex=%5Cepsilon)] 是手动设置的平滑参数,当 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Jk9eEVbe-1622725285545)(https://www.zhihu.com/equation?tex=%5Cepsilon+%3D+0)] 时就是正常的one-hot向量,不过由于是造的图,所以希望label不要这么hard,因此加入了一个平滑参数,实验表明这样做效果不错。最终整体的网络框架如下图:

img

除了摄像头的bias,ReID还有个问题就是数据集存在bias,这个bias很大一部分原因就是环境造成的。为了克服这个bias,论文[27]使用GAN把一个数据集的行人迁移到另外一个数据集。

为了实现这个迁移,GAN的loss稍微设计了一下,一个是前景的绝对误差loss,一个是正常的判别器loss。判别器loss是用来判断生成的图属于哪个域,前景的loss是为了保证行人前景尽可能逼真不变。

**这个前景mask使用PSPnet来得到的,效果如下图。**论文的另外一个贡献就是提出了一个MSMT17数据集,是个挺大的数据集,希望能够早日public出来。

img

ReID的其中一个难点就是姿态的不同,为了克服这个问题论文[28]使用GAN造出了一系列标准的姿态图片。

论文总共提取了8个pose,这个8个pose基本涵盖了各个角度。每一张图片都生成这样标准的8个pose,那么pose不同的问题就解决。

最终用这些图片的feature进行一个average pooling得到最终的feature,这个feature融合了各个pose的信息,很好地解决的pose bias问题。

无论从生成图还是从实验的结果来看,这个工作都是很不错的。**这个工作把single query做成了multi query,**但是你没法反驳,因为所有的图都是GAN生成的。

除了生成这些图需要额外的时间开销以外,并没有利用额外的数据信息。当然这个工作也需要一个预训练的pose estimation网络来进行pose提取。

img
GAN

GAN造图都是为了从某个角度上解决ReID的困难,缺啥就让GAN来补啥,不得不说GAN还真是一个强大的东西。

参考文献

[1] Mengyue Geng, Yaowei Wang, Tao Xiang, Yonghong Tian. Deep transfer learning for person reidentification[J]. arXiv preprint arXiv:1611.05244, 2016.

[2] Yutian Lin, Liang Zheng, Zhedong Zheng, YuWu, Yi Yang. Improving person re-identification by attribute and identity learning[J]. arXiv preprint arXiv:1703.07220, 2017.

[3] Liang Zheng, Yi Yang, Alexander G Hauptmann. Person re-identification: Past, present and future[J]. arXiv preprint arXiv:1610.02984, 2016.

[4] Tetsu Matsukawa, Einoshin Suzuki. Person re-identification using cnn features learned from combination of attributes[C]//Pattern Recognition (ICPR), 2016 23rd International Conference on. IEEE, 2016:2428–2433.

[5] Rahul Rama Varior, Mrinal Haloi, Gang Wang. Gated siamese convolutional neural network architecture for human re-identification[C]//European Conference on Computer Vision. Springer, 2016:791-808.

[6] Florian Schroff, Dmitry Kalenichenko, James Philbin. Facenet: A unified embedding for face recognition and clustering[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition.2015:815-823.

[7] Hao Liu, Jiashi Feng, Meibin Qi, Jianguo Jiang, Shuicheng Yan. End-to-end comparative attention networks for person re-identification[J]. IEEE Transactions on Image Processing, 2017.

[8] De Cheng, Yihong Gong, Sanping Zhou, Jinjun Wang, Nanning Zheng. Person re-identification by multichannel parts-based cnn with improved triplet loss function[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2016:1335-1344.

[9] Weihua Chen, Xiaotang Chen, Jianguo Zhang, Kaiqi Huang. Beyond triplet loss: a deep quadruplet network for person re-identification[J]. arXiv preprint arXiv:1704.01719, 2017.

[10] Alexander Hermans, Lucas Beyer, Bastian Leibe. In defense of the triplet loss for person reidentification[J]. arXiv preprint arXiv:1703.07737, 2017

[11] Xiao Q, Luo H, Zhang C. Margin Sample Mining Loss: A Deep Learning Based Method for Person Re-identification[J]. 2017.

[12] Rahul Rama Varior, Bing Shuai, Jiwen Lu, Dong Xu, Gang Wang. A siamese long short-term memory architecture for human re-identification[C]//European Conference on Computer Vision. Springer, 2016:135–153.

[13] Liang Zheng, Yujia Huang, Huchuan Lu, Yi Yang. Pose invariant embedding for deep person reidentification[J]. arXiv preprint arXiv:1701.07732, 2017.

[14] Haiyu Zhao, Maoqing Tian, Shuyang Sun, Jing Shao, Junjie Yan, Shuai Yi, Xiaogang Wang, Xiaoou Tang. Spindle net: Person re-identification with human body region guided feature decomposition and fusion[C]. CVPR, 2017.

[15] Longhui Wei, Shiliang Zhang, Hantao Yao, Wen Gao, Qi Tian. Glad: Global-local-alignment descriptor for pedestrian retrieval[J]. arXiv preprint arXiv:1709.04329, 2017.

[16] Zhang, X., Luo, H., Fan, X., Xiang, W., Sun, Y., Xiao, Q., … & Sun, J. (2017). AlignedReID: Surpassing Human-Level Performance in Person Re-Identification. arXiv preprint arXiv:1711.08184.

[17] Taiqing Wang, Shaogang Gong, Xiatian Zhu, Shengjin Wang. Person re-identification by discriminative selection in video ranking[J]. IEEE transactions on pattern analysis and machine intelligence, 2016.38(12):2501–2514.

[18] Dongyu Zhang, Wenxi Wu, Hui Cheng, Ruimao Zhang, Zhenjiang Dong, Zhaoquan Cai. Image-to-video person re-identification with temporally memorized similarity learning[J]. IEEE Transactions on Circuits and Systems for Video Technology, 2017.

[19] Jinjie You, Ancong Wu, Xiang Li, Wei-Shi Zheng. Top-push video-based person reidentification[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition.2016:1345–1353.

[20] Xiaolong Ma, Xiatian Zhu, Shaogang Gong, Xudong Xie, Jianming Hu, Kin-Man Lam, Yisheng Zhong. Person re-identification by unsupervised video matching[J]. Pattern Recognition, 2017. 65:197–210.

[21] Niall McLaughlin, Jesus Martinez del Rincon, Paul Miller. Recurrent convolutional network for videobased person re-identification[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2016:1325–1334.

[22] Rui Zhao, Wanli Oyang, Xiaogang Wang. Person re-identification by saliency learning[J]. IEEE transactions on pattern analysis and machine intelligence, 2017. 39(2):356–370.

[23] Hao Liu, Zequn Jie, Karlekar Jayashree, Meibin Qi, Jianguo Jiang, Shuicheng Yan, Jiashi Feng. Video based person re-identification with accumulative motion context[J]. arXiv preprint arXiv:1701.00193,2017.

[24] Song G, Leng B, Liu Y, et al. Region-based Quality Estimation Network for Large-scale Person Re-identification[J]. arXiv preprint arXiv:1711.08766, 2017.

[25] Zheng Z, Zheng L, Yang Y. Unlabeled samples generated by gan improve the person re-identification baseline in vitro[J]. arXiv preprint arXiv:1701.07717, 2017.

[26] Zhong Z, Zheng L, Zheng Z, et al. Camera Style Adaptation for Person Re-identification[J]. arXiv preprint arXiv:1711.10295, 2017.

[27] Wei L, Zhang S, Gao W, et al. Person Transfer GAN to Bridge Domain Gap for Person Re-Identification[J]. arXiv preprint arXiv:1711.08565, 2017.

[28] Qian X, Fu Y, Wang W, et al. Pose-Normalized Image Generation for Person Re-identification[J]. arXiv preprint arXiv:1712.02225, 2017.

综述二

Deep Learning for Person Re-identification: A Survey and Outlook

https://www.52cv.net/?p=2537

作者将ReID技术分为Closed-world 和Open-world 两大子集:

在这里插入图片描述

在是否是异质数据、标注是否完备、是否含有噪声等方面,开放世界ReID更接近实际应用。

Closed-world ReID技术
评价指标

https://www.pianshen.com/article/2333757913/

cmc

CMC是Cumulative Matching Characteristics的缩写,我个人把它翻译为累计匹配特性。ReID模型的好坏可以通过CMC曲线来评价。 为了计算CMC曲线,首先要把每次查询的结果按相似程度排序。接着,引入一个概念: topK准确度: AccK,其计算公式如下:
A c c K = { 1 前K个结果中有同ID的结果 0 前K个结果中没有同ID的结果 AccK= \begin{cases} 1& \text{前K个结果中有同ID的结果}\\ 0& \text{前K个结果中没有同ID的结果} \end{cases} AccK={10K个结果中有同ID的结果K个结果中没有同ID的结果
这里的K是一个从1开始增加的变量。显然,AccK形同单位阶跃函数。假设在查询得到的结果中,与query同ID的结果第一次出现时的排名为F,那么显然,AccK在K=F时,值由0变为1。 CMC曲线的计算方法就是,把每个query的AccK曲线相加,再除以query的总数,即平均AccK曲线。

rank

实际论文中,常取CMC曲线上的某几个点之间对比,比如常出现的Rank1,Rank5,就分别是CMC曲线上,K=1,5时的值。

mAP

P-R图直观地显示出了ReID模型的查全率和查准率
p r e c i s i o n = ∣ { 同 I D 图 片 } ∩ { 查 询 结 果 } ∣ ∣ { 查 询 结 果 } ∣ precision = \frac{\mid\{同ID图片\}\cap\{查询结果\}\mid}{\mid\{查询结果\}\mid} precision={}{ID}{}

r e c a l l = ∣ { 同 I D 图 片 } ∩ { 查 询 结 果 } ∣ ∣ { 同 I D 图 片 } ∣ recall = \frac{\mid\{同ID图片\}\cap\{查询结果\}\mid}{\mid\{同ID图片\}\mid} recall={ID}{ID}{}

显然,PR曲线与坐标轴围起来图形的面积一定程度上反应了ReID模型的性能,我们把这个面积叫做Average Precision。这个面积怎么求?[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-s7UHuPgH-1622725285546)(https://www.pianshen.com/images/108/8818ad77a7d771da3171a2a41d906cf4.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GWf58O90-1622725285546)(https://www.pianshen.com/images/53/d8b8d5c271ed0351961c89d00116878d.png)]

为了使计算的AP更精确,我们可以用梯形面积公式替换矩形面积:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xh1K0kzq-1622725285547)(https://www.pianshen.com/images/339/06ce325934a717234d98c2b8cdf4e14b.png)]

这里的P(0)=P(1)是什么意思呢?P(1)指的是第1个结果的查准率,P(0)即第0个结果的查准率本来是无意义的,但是,为了预防RESULT1与查询同ID时,公式中出现无意义的P(0),我们补一个P(0)=P(1)的定义。(注意:p(i)的意思为查到第i个同ID的时候其查准率)

最后,平均一下每个query的AP值就得到了mAP:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VXA8pSBk-1622725285547)(https://www.pianshen.com/images/375/df5c977f3ee8cb84fa0ce953762056c7.png)]

常用数据集
在这里插入图片描述
四大数据集
图像

Market-1501,DuckMTMC,CUHK03,MSMT17

视频

PRID-2011,iLIDS-VID,MARS,Duck-Video

SOTA
基于图像的ReID方法在四大数据集上的SOTA方法精度可视化:

img

img

基于视频的ReID方法在四大数据集上的SOTA方法精度可视化:

img

img

Open world ReID方法

1)异质数据ReID

基于深度ReID;

文本到图像ReID;

可见光到红外ReID;

跨分辨率ReID;

2)端到端ReID

纯图像/视频的ReID;

多摄像头跟踪的ReID;

3)半监督和无监督的ReID

其中无监督ReID SOTA方法统计:

img

4)噪声鲁棒ReID

5)开放集合ReID

展望

新的衡量ReID算法好坏新的评价标准mINP

img

img
AWG方法

在SOTA算法BagTricks基础上提出了AWG方法:

img

AGW方法在几大数据集上均取得了大幅的精度提升:

img img
论文地址

https://arxiv.org/abs/2001.04193v1

论文代码

https://github.com/mangye16/ReID-Survey

综述三

研究形式
  • 数据集通常是通过人工标注或者检测算法得到的行人图片,目前与检测独立,注重识别
  • 数据集分为训练集、验证集、Query、Gallery
  • 在训练集上进行模型的训练,得到模型后对Query与Gallery中的图片提取特征计算相似度,对于每个Query在Gallery中找出前N个与其相似的图片
  • 训练、测试中人物身份不重复
在这里插入图片描述

比赛

全国人工智能大赛

行人重识别(Person ReID)赛项 季军团队方案分享

https://zhuanlan.zhihu.com/p/109920765

要求:

给定一张含有某个行人的查询图片,行人重识别算法需要在行人图像库中查找并返回特定数量的含有该行人的图片。

初赛

Luo Hao et al. A Strong Baseline and Batch Normalization Neck for Deep Person Re-identification. TMM, 2019.作为baseline(已开源),针对初赛数据集进行了适应和改进。

img

这篇ReID strong baseline主要在之前的baseline上,创新地提出了BNNeck的结构,解决了ID loss和triplet loss不会同步收敛的问题,并配合一些常见的训练技巧,使得模型的分数在Market1501可以达到94.5%的Rank1和85.9%的mAP

一个更加强力的ReID Baseline

https://zhuanlan.zhihu.com/p/61831669

试验了使用三种 loss 进行训练最后的 rank1 能到多少,同时也验证一下到底哪种 loss 组合的效果最好(18年):

一个baseline:

https://zhuanlan.zhihu.com/p/40514536

train:

对于训练而言,目前 ReID basemodel(18年) 主要是使用一个 backbone network,比如 ResNet 或者 InceptionNet,然后使用 ImageNet pretrained 的权重去初始化 model, loss 的选择一般有两种,一种是分类的 cross entropy,一种是度量学习里面的 triplet loss。

分类很简单,就是把不同的人分成不同的类,一共有多少个人,就在最后接一个全连接层,分多少类,这和人脸中的做法是相似的。

而**度量学习(metric learning)**是更广泛应用于图像检索任务的方法,我们可以使用 backbone net 提取出网络的 feature,然后通过 feature 之间的距离去衡量他们的相似度,然后优化这些距离,比如在 triplet loss 中,我们选择一对三元组,也就是三张输入的图片,然后三元组中包含一对正样本和一对负样本,我们可以拉近正样本之间的距离,推远负样本之间的距离,这样就是的最后的类内距离更近,类间距离更大,提高 ReID 的效果。目前更加广泛使用的是难样本的三元组采样,也就是在每个 batch 里面选择同人的距离最远的正样本对,和不同的人之间距离最近的负样本。

test:

用 ReID model 做预测就非常简单,就去掉最后的全连接层,然后用网络提取 feature。

最后算 query 和 gallery 所有图片 feature 之间的距离,根据距离去算 rank1 和 mAP 就可以得到最后的效果。

在测试时需要去掉query在gallery中同一camera下图片,标准的测试协议是需要去掉同一个 camera 下的图片。

baseline model:

前面介绍完了 ReID 的基础知识,下面我们讲一讲我们用的 basemodel,同时也验证三种 loss(softmax, triplet, softmax+triplet) 的性能表现。我们的 backbone network 是 ResNet50,这也是很多论文中使用的 model,但是我们会稍稍做一点修改,将最后一个 conv block 的 stride 从 2 改成 1,这样网络的参数并不会变化,但是可以得到比原来大一倍的 feature map,这个想法来自于 huanghoujing的triplet baseline

bottleneck:

第二个增加的部分叫 bottleneck,也就是在全连接分类层的前面加上一个 BatchNorm,这个结构来自于 Towards Good Practices on Building Effective CNN Baseline Model for Person Re-identification 这篇论文。

加上的 BatchNorm layer 中 gamma 进行学习,而 beta 初始化为0之后不进行更新,同时分类的全连接层也去掉bias。

这样做是因为softmax是一个angular loss,所以我们通过去掉 beta 的 BN 对 feature normalize 到原点周围,同时因为单位球面上进行softmax效果并不好,所以我们对 BN 的 scale 参数 gamma 进行学习,希望实现一个 adaptive scale 而不是单位球。

最后由于 feature 在原点周围,所以我们使用去掉 bias 的全连接层进行分类。

Warmup strategy:

最后一个就是我们训练模型使用的学习率策略,这个策略叫做 warmup,也就是开始让学习率特别小,然后慢慢增大,接着训练一段时间又慢慢减小,这个策略来自于 fair 的论文 Accurate, Large Minibatch SGD: Training ImageNet in 1 Hour,同时这篇论文提供了一个多卡和学习率之间线性关系的简单证明,有兴趣的同学可以看看,里面有很多训练的 trick。

loss:

我们试验了三种 loss,分别是 softmax,triplet hard 以及 softmax + triplet hard。在训练分类的时候直接按照最简单的图像分类训练去取样本,在训练 triplet hard 以及 softmax + triplet hard 的时候,我们使用三元组采样,具体来讲在每个 batch 中我们采样 32 个人,每个人采样 4 张图片,这样每个 batch 有 128 张图片,实现上可以使用 pytorch 里 DataLoader 中的 sampler 这个函数,同时我们训练的时候使用 Adam 去优化所有的参数。

Input Size and Batch Size

除了上面的网络部分,我们也对 input size 和 batch size 进行了实验,我们尝试了 PCB 中的 (384 x 128) 的 input size,也尝试了标准的 (256 x 128)。同时对于 batch size,我们尝试了 64 和 128 进行实验。

实验结果:

img

通过上面的结果可以发现 softmax 联合 triplet hard 训练,输入是 (256 x 128),batch size 是 64 的效果是最好的,同时我们也做了多次试验,最后结果浮动在 1% 以内,最好的结果在 market1501 上是能跑到 93.8%。

基于以上的baseline,提出了一个更强的baseline

通过引入一些低消耗的训练Tricks,使用ResNet50的Backbone,这个Baseline**在Market1501可以达到94.5%的Rank1和85.9%的mAP。**当然使用更深的Backbone还可以继续提高性能。

值得一提的是,和大量拼接多个local feature的方法取得高准确度的方法不同,我们只使用了一个global feature

https://github.com/michuanhaohao/reid-strong-baseline

+Warmup +Random erasing augmentation +Label smoothing +Last stride=1 +BNNeck +Center loss 可以达到rank1-94.5 (mAP85.9)

+Reranking 可以达到rank1-95.4 (mAP94.2)

img

另外我们发现在一些文章之后,会使用一些trick来提升模型的性能,但是在论文撰写过程中只是简单的轻描淡写一句甚至完全不写,最后阅读代码的时候才发现这些trick。然而对于一些资深的审稿人而言,通常都没有亲自运行过实验代码,因此这些trick容易“骗过”审稿人,让审稿人产生这个方法涨点很明显的错觉,然而可能大部分性能的提升是来源于trick而不是算法本身

此外,最近出现了一些融合多个local feature达到很高性能的工作。我们不可否认,多尺度、多特征的融合本来也是CV领域很重要的一种思路。但是有了类似的工作之后,无意义地、暴力地融合大量的local feature的工作不应该再被会议期刊作为创新研究过度认可。这种工作一来无法给学界提供很有意义的insight,另一方面也并不是业界产品研发过程中喜欢的模型。融合大量的local feature,最后哪怕取得了很高的性能,也不过是“忽悠”外行人罢了。

该baseline目的

  • 我们希望学术界的研究能够在这个Baseline进行扩展,这样能够早日把Market1501、DukeMTMC-reID数据集给刷爆。只有这些数据集刷爆了,学界才能意识到ReID应该进入下一阶段。
  • 我们希望给社区的审稿人一些参考,哪些trick对模型的性能会产生重大的影响,审稿时应该考虑这些trick。
  • 我们希望给业界提供一些训练trick,在很低的代价下提高模型的性能,加快产品研发的过程。

过去几年我们在ReID研究过程中,收集了一些训练的trick。

通过把这些trick引入到现有的Baseline上面,我们得到了一个强力的Baseline,以ResNet50位Backbone,最终在Market1501取得了94.5%的Rank1。

当然,为了判断这些trick是在训练域上疯狂overfit,还是增加了模型的泛化能力,我们同时做了cross-domain实验。

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值